ZHIYA
Blog

详解使用git来进行mysql数据库定时备份的方法

mysql数据库备份的方案有很多,下面讲讲我是如何使用git来定时备份mysql数据库的。

第一步写一个dump 数据库的脚本。
mysqldump -uroot -p${pwd} --databases testdb > testdb.sql
mysqldump -uroot -p${pwd} --databases test1db > test1db.sql
....

将所有需要备份的数据库按上面的格式添加在脚本中。${pwd}中的密码就是你的数据库登录密码

第二步,执行git 提交和推送命令。
curtime=$(date "+%Y年%m月%d日%H时%M分%S秒")

git add ./
git commit -m"${curtime}的数据已备份"
git push
第三步,添加执行脚本的定时任务。

编辑crontab文件。

sudo vim /etc/crontab

在文件中添加下面内容。

0 8 * * * /home/your/script.sh

script.sh就是你的执行备份命令的脚本。

第四步,每隔一段时间删除git 日志。

当数据库数据很多的时候,每次提交的备份文件日志就会很大,随着时间的推移,git仓库中的日志文件可能有几十个G,所以这个时候就需要清理没用的git日志了

先执行下面的命令

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch ***.sql ***.sql ***.sql ***.sql" --prune-empty --tag-name-filter cat -- --all

将***.sh文件替换成你提交的文件名。

然后强制推送到远端。

git push origin --force --all

最后重置清理文件。

git reflog expire --expire=now --all
git gc --prune=now --aggressive

//上面的操作总是失败可以尝试
rm -rf .git/objects/pack/tmp_pack_*

总结来说,这个方案其实不太好,git提交大文件是真的坑,会导致日志非常大,后面尝试换一种方法。

版权声明:本文为ZHIYA网站的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:详解使用git来进行mysql数据库定时备份的方法