使用 mysqldump 导出Docker镜像中的MySQL数据库
问题
我的 MySQL 使用的是 docker 来部署的,希望通过 crontab 定时任务来定时自动导出指定的数据库,然而出现了脚本写好以后,前台测试一切正常,但是通过定时任务自动执行备份出来的 sql 文件大小全部为 0
解决方案
去掉 -it
命令即可(mysql 是我的容器名)
1 | docker exec mysql mysqldump -uroot -p123456 --databases test >/data/backup/test.sql |
如果还有问题的,试试使用绝对路径,即
1 | /usr/bin/docker exec mysql /usr/bin/mysqldump -uroot -p123456 --databases test >/data/backup/test.sql |
原因
我们习惯是 docker exec -it
,通过查看说明
-i
- –interactive Keep STDIN open even if not attached
- –privileged Give extended privileges to the command
-t
- –tty Allocate a pseudo-TTY
-it
参数实际上是开启了一个新的终端,而计划任务是无法进入终端的,后面的导出命令没有执行,就出现了导出的 sql 文件大小为 0 的情况
本文采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ShiGuang
评论