mysql数据库备份的方案有很多,下面讲讲我是如何使用git来定时备份mysql数据库的。
mysqldump -uroot -p${pwd} --databases testdb > testdb.sql
mysqldump -uroot -p${pwd} --databases test1db > test1db.sql
....
将所有需要备份的数据库按上面的格式添加在脚本中。${pwd}中的密码就是你的数据库登录密码
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仓库中的日志文件可能有几十个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提交大文件是真的坑,会导致日志非常大,后面尝试换一种方法。