之前写过一篇备份备份数据库到github 的博客。不过那个时候数据库是直接安装在服务器上的,这次使用了docker中的mysql,原来的备份方式就需要修改一下。
特此记录一下踩到的坑。
想到解决办法是把备份数据到本地这一步的脚本文件拆出来放在docker容器里执行。这一步考虑到同步数据到git时需要数据在本机上,所以又重新部署了mysql容器,专门挂载了文件夹用来存放备份的数据和备份脚本,避免再重新部署mysql容器后数据丢失。备份脚本可以看之前的博客。
#!/bin/bash
echo `date`
echo "run docker_mysql_backup.sh"
# docker exec -it mysql8 bash /var/backups/docker_mysql_backup.sh
docker exec mysql8 bash /var/backups/docker_mysql_backup.sh
# wait 10s
ti1=`date +%s`
ti2=`date +%s`
i=$(( $ti2 - $ti1 ))
while [[ "$i" -lt "5" ]]
do
ti2=`date +%s`
i=$(($ti2 - $ti1))
done
echo 5 second later
#脚本文件追加git操作
echo "start publish..."
#切换文件夹
cd /usr/local/mysql8/mysqlBackup/
git status
git add -A
git commit -m "push backup data"
git pull
git push
$ vim /etc/crontab
0 12,23 * * * root /usr/local/timingTasks/backup_mysql.sh >>/usr/local/timingTasks/logs/log_$(date +\%Y-\%m-\%d).log
# 直接编辑crontab文件添加定时任务
定时任务设置了小时后,如果vps时区与本地时区不同,为了看着方便,我修改了vps时区。然后还需要重启一下cron,否则定时任务还是会按照原来的时区运行
$ rm -f /etc/localtime
$ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime