Crontab定时备份Docker的MySQL容器

1
2
docker exec -it $(docker ps -aqf "name=mysql:5.7") \
mysqldump -u name -p pw databasename > backup_dir/backup_filename

看上去是没问题的
在终端运行也是ok的
但是crontab定时执行的时候 dump出来的文件大小始终是0

docker exec 附带参数解析

  • -i :即使没有附加也保持STDIN 打开
  • -t :分配一个伪终端

题外话
docker ps 参数解析
-f 根据条件过滤显示的内容

-q 静默模式 只显示容器编号

-a显示所有的容器 包括未运行的

-i -t 参数都是有输出的
但是crontab执行的时候实际是不需要的
去掉即可生效

1
2
3
4
5
6
7
8
9
10
11
# 修改后的命令
docker exec $(docker ps -aqf "name=mysql:5.7") \
mysqldump -u name -p pw databasename > backup_dir/backup_filename

# 添加进crontab
crontab -e

# 在里面添加规则 每天1点执行一次
# 建议新建一个shell文件 定时任务执行该文件
0 1 * * * docker exec $(docker ps -aqf "name=mysql:5.7") \
mysqldump -u name -p pw databasename > backup_dir/backup_filename

小技巧
crontab服务管理
service crond start|restart|stop

crontab调试方法
查看crontab日志文件 可查看/var/log/cron 或 /var/log/cron.log
运行 tail -f /var/log/cron 命令查看

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×