如何使用 mysqldump 从 docker-compose MariaDB 容器备份数据
对于在 .env 中存储 MYSQL_ROOT_PASSWORD 的容器
这是推荐的最佳实践。对于此示例,我们假设 .env 看起来像这样:
.env
MARIADB_ROOT_PASSWORD=mophur3roh6eegiL8Eeto7goneeFei要创建转储:
create_dump.sh
source .env && docker-compose exec mariadb mysqldump -uroot -p${MARIADB_ROOT_PASSWORD} --all-databases > mariadb-dump-$(date +%F_%H-%M-%S).sql要从 mariadb-dump.sql 恢复转储,确保在此命令之前容器未运行:
restore_dump.sh
source .env && docker-compose run -T mariadb mariadb -uroot -p${MARIADB_ROOT_PASSWORD} < mariadb-dump.sql注意你必须将 mariadb 替换为 docker-compose.yml 中容器的名称。
对于 MYSQL_ROOT_PASSWORD 设置为未存储在 .env 中的某个值的容器
这是安全的,但你通常需要多次复制密码:一次用于 mariadb 容器,一次用于使用数据库的任何容器或应用程序,一次用于导出整个数据库 SQL 转储的任何备份脚本
要创建转储:
create_dump_manual.sh
docker-compose exec mariadb mysqldump -uroot -pYOUR_MARIADB_ROOT_PASSWORD --all-databases > dump-$(date +%F_%H-%M-%S).sql要从 mariadb-dump.sql 恢复转储:
restore_dump_manual.sh
docker-compose exec -T mariadb mysql -uroot -pYOUR_MARIADB_ROOT_PASSWORD < mariadb-dump.sql将 YOUR_MARIADB_ROOT_PASSWORD 替换为你安装的密码。
此外,你必须将 mariadb 替换为 docker-compose.yml 中容器的名称
对于 MYSQL_ALLOW_EMPTY_PASSWORD=yes 的容器
此配置是安全风险 - 参见使用 MYSQL_ALLOW_EMPTY_PASSWORD=yes 运行 docker mariadb/mysql 的安全风险。
要创建转储:
create_dump_empty_pw.sh
docker-compose exec mariadb mysqldump -uroot --all-databases > mariadb-dump-$(date +%F_%H-%M-%S).sql要从 mariadb-dump.sql 恢复转储:
restore_dump_empty_pw.sh
docker-compose exec -T mariadb mysql -uroot < mariadb-dump.sql关于此主题的更多文章
TechOverflow 目前正在计划一篇关于如何使用 bup 提供基于 docker 的 MariaDB/MySQL 安装的快速高效备份的文章。
Check out similar posts by category:
Docker
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow