gpt4 book ai didi

mysql - 从单独的 Docker 容器运行 mysqldump 进行日常备份

转载 作者:行者123 更新时间:2023-11-29 15:40:24 28 4
gpt4 key购买 nike

创建一个单独的 docker 容器来使用 cron 作业运行 mysqldump 进行日常备份是一个坏主意吗?

大多数人使用主机的 cron 作业或单独的 cron 容器从正在备份的容器内运行 mysqldump

我发现在专用于备份的容器中安装mysql并执行mysqldump会更好。这将使整个设置更加隔离。

这种方法有什么缺点吗?

此类 docker-compose-yml 的示例:

  mysql:
image: mysql:latest
environment:
MYSQL_DATABASE: mydb
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- ./mysql/mysql-data:/var/lib/mysql

mysql-cron:
image: mysql:latest
build: .
environment:
MYSQL_HOST: mysql
MYSQL_DATABASE: mydb
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- ./backup:/var/backup

mysql-cron 的 Dockerfile 将安装“cron”并设置 crontab(尚未准备好)。

最佳答案

引用official mysql您可以查看图像的文档 docker exec到正在运行的容器中,将数据库转储到主机上的路径:docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql

假设您正在使用docker在 Linux 上,您很可能已经拥有 cron已安装(您不需要使用 cron 构建和维护自己的镜像)。

您可以添加cron主机上的作业 docker正在运行至exec定期放入容器中并转储数据库 ( crontab -e ),即每天凌晨 01:00: 0 1 * * * docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql

注意:cron在特定环境下运行(例如,确保 docker 位于 $PATH 可用于 cron 等)。

关于mysql - 从单独的 Docker 容器运行 mysqldump 进行日常备份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57738914/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com