如何创建一个每晚都会备份mysql数据库的docker容器?

时间:2019-03-30 14:41:57

标签: mysql docker dockerfile

您好,我已经使用此命令创建了mysql映像

docker run --name db_mysql-e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_DATABASE=mami -p 3306:3306 -d mysql

docker pull mysql->使用mysql创建映像

{{1}}

我执行它,但是之后我不知道该怎么做以及如何在此容器中创建数据库以及备份工作

如果有人可以帮助我逐步进行操作

1 个答案:

答案 0 :(得分:0)

您可以使用主机系统中的cron服务,按照documentation for the mysql docker image中的说明运行以下命令:

每天晚上2:00运行命令的crontab示例:

00 02 * * * /usr/bin/docker exec db-mysql sh -c 'exec mysqldump --all-databases -uroot -p"my-secret-pw"' > /some/path/on/your/host/all-databases.sql

或者,您可以运行另一个专门为此任务设计的容器,例如deitch/mysql-backup

docker run --name db-mysql -d \
    -e MYSQL_ROOT_PASSWORD=my-secret-pw \
    -e MYSQL_USER=my-user \
    -e MYSQL_PASSWORD=my-user-password \
    -e MYSQL_DATABASE=my-db \
    mysql:latest

docker run -d --restart=always \
    --name=db-backup \
    -e DB_DUMP_BEGIN=0200 \
    -e DB_SERVER=db-mysql \
    -e DB_USER=my-user \
    -e DB_PASS=my-user-password \
    -e DB_NAMES=my-db \
    -e DB_DUMP_TARGET=/db \
    -v /somewhere/on/your/host/:/db \
    databack/mysql-backup

您还需要确保/somewhere/on/your/host/组的用户可以写入1005文件夹:

sudo chgrp 1005 /somewhere/on/your/host/
sudo chmod g+rwX /somewhere/on/your/host/

但是此容器必须具有连接到您的db-mysql容器的手段。为此,您创建一个泊坞窗网络并将两个容器都连接到它:

docker network create mysql-backup-net
docker network connect mysql-backup-net db-backup
docker network connect mysql-backup-net db-mysql