centos使用shell脚本定时备份(导出)docker中的mysql数据库

 

 

shell脚本

#!/bin/bash



#容器ID
container_id="6b1faea2b4d7"
#登录用户名
mysql_user="root"
#登录密码(注意 如果密码包含特殊符号 前面要用'\')
mysql_password="Yvi\$123"
mysql_port="3306"
#备份的数据库名
mysql_database="clne"
# 备份文件存放地址(根据实际情况填写)
backup_dir="/home/data/crontab/data"
# 是否删除过期数据
expire_backup_delete="true"
#过期天数
expire_days=3
backup_time=`date +%Y%m%d%H%M`

# 备份指定数据库中数据
docker exec  $container_id mysqldump  -P$mysql_port -u$mysql_user -p$mysql_password  $mysql_database > $backup_dir/bak-$mysql_database-$backup_time.sql
 
# 删除过期数据
if [ "$expire_backup_delete" == "true" -a "$backup_dir"!="" ];then
        `find $backup_dir/ -type f -mtime +$expire_days | xargs rm -rf`
        echo "Expired backup data delete complete!"
fi

 

赋予权限

chmod 777 脚本.sh

 

可以这里先执行下脚本看下效果

 如果shell脚本报错:.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录

参考:https://www.cnblogs.com/pxblog/p/15094666.html

 

保存后

修改  配置定时任务

vim /etc/crontab

 

添加

0    0    *    *    * root  . /etc/profile;/bin/sh  /home/脚本.sh

后面的脚本要使用绝对路径

前面那个是cron 可以根据自己的来修改(上面这个示例表示每天0点执行一次)

 

常用的

0 */2 * * *   意思是每两个小时

50 7 * * *   意思是每天7:50

50 22 * * *   意思是每天22:50

0 0 1,15 * *   每月1号和15号

1 * * * *   每小时的第一分执行 

30 6 */10 * *   意思是每月的1、11、21、31日是的6:30执行一次

*/1  *  *  *  * 每一分钟执行一次

 

 

然后重启crontab服务

service crond restart

 

 

然后就可以看是否执行

 cat /var/log/cron

 

查看日志

 

posted @ 2021-08-03 16:55  yvioo  阅读(670)  评论(0编辑  收藏  举报