crontab 定时备份docker容器中的mysql

思路:将这个目标分为两步执行 Step1.编写一个shell脚本让它在docker 里面执行数据库备份操作 mysqldump Step2.写一个定时任务的脚本定时执行这个shell脚本

Step1:

1.在宿主机编写好shell脚本  注:注意密码中若有符号 是否需要带上转义符

dockersqlbak.sh

#!/bin/bash
#mysql用户名
db_user=root

#mysql密码
db_passwd=Password123@mysql

/usr/bin/mysqldump -u${db_user} -p${db_passwd}  --all-databases > /root/metersphere.sql

 2.将宿主机上的shell 脚本 使用docker cp 命令拷贝到docker 容器内部

docker cp /home/mysql_data/dockersqlbak.sh 440e1fc891ee:/root  #将宿主机上的/home/mysql_data路径下的sh文件 cp到容器的/root 目录下 9bf13f44af62为容器ID

3.进入容器内部 并给脚本授权

docker exec -it 440e1fc891ee /bin/bash #进入容器中 440e1fc891ee为容器id 可以用docker ps 查看对应的ID
cd /root #进入sh文件所在的目录
chmod +x dockersqlbak.sh #给sh文件添加执行权限

4.测试这个脚本是否能成功执行可以看到生成了这个metershpere sql文件 脚本执行成功

Step2.

1.写一个shell 脚本用于定时任务定时启动这个容器内的脚本  (docker exec -d 后台启动, -c 是执行shell 命令)

dockercron.sh

#!/bin/bash

docker exec -d 440e1fc891ee  /bin/bash -c 'find /root/ -type f -name "*.sql" -mtime +5 |xargs rm -f && /root/dockersqlbak.sh'

2.验证脚本:成功

3.编写crontab 定时任务

crontab -e #进入编辑定时任务
#execute  mysqldump in docker container  once a week
00 00 07 * * /home/mysql_data/dockercron.sh  #这里是每7天执行一次定时任务

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值