docker容器mysql定时备份

定时计划执行脚本:mysqlbat.sh

docker exec -i `docker ps|grep mysql| awk '{print $1}'` /mysql/mysqlbackup.sh(挂载到容器内后的路径)

#docker exec不能跟-it后台运行,只能跟-i进入容器执行后面的脚本

挂载脚本mysqlbackup.sh到容器/mysql/下

mysqlbackup.sh

#!bin/bash

dt_now=`date +%Y%m%d%H`

cd /mysql/bak

mkdir $dt_now

find /mysql/bak/ -mtime +21 -exec rm -rf {} \;(删除超过21天的备份)

echo "start backup mysql" #(备份四个数据库)

mysqldump -uroot -pjetsen123 zhyf_jeesite > /mysql/bak/$dt_now/zhyf_jeesite.sql

mysqldump -uroot -pjetsen123 zhyf_course > /mysql/bak/$dt_now/zhyf_course.sql

mysqldump -uroot -pjetsen123 zhyf_jeuc > /mysql/bak/$dt_now/zhyf_jeuc.sql

mysqldump -uroot -pjetsen123 zhyf_resource > /mysql/bak/$dt_now/zhyf_resource.sql

 

mysqlbackup.sh(后期优化自动识别备份后期增加的数据库)

#!bin/bash

dt_now=`date +%Y%m%d%H`

PASSWD="jetsen123"

cd /mysql/bak

mkdir $dt_now

find /mysql/bak/ -mtime +21 -exec rm -rf {} \;

echo "start backup mysql"

for i in `mysql -uroot -p$PASSWD -e "show databases"|grep -E "information_schema|mysql|performance_schema|sys|Data" -v `;do mysqldump -uroot -p$PASSWD $i > /mysql/bak/$dt_now/$i.sql;done

 

定时计划:两种方法二选一

1、crontab -e进入编辑添加

0 1 * * * root /srv/jetsen/mysql/mysqlbat.sh (每天凌晨一点执行)

2、编辑vim /etc/crontab文件最后添加

0 1 * * * root /srv/jetsen/mysql/mysqlbat.sh

你可能感兴趣的:(linux,运维)