暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

实战-MySQL定时全量备份

原创 yuki 2021-06-29
343

概要
• 引言
• 全量备份
• 恢复全量备份
• 定时备份

引言
在产品上线之后,我们的数据是相当重要的,容不得半点闪失,应该做好万全的准备,搞不好哪一天被黑客入侵或者恶意删除,那就 gg 了。所以要对我们的线上数据库定时做全量备份与增量备份。例如:每天做一次增量备份,每周做一次全量备份。以下所涉及的操作系统为 centos7 。
GitHub 地址:
https://github.com/zonezoen/MySQL_backup
全量备份
/usr/bin/mysqldump -uroot -p123456  --lock-all-tables --flush-logs test > /home/backup.sql
如上一段代码所示,其功能是将 test 数据库全量备份。其中 MySQL 用户名为:root 密码为:123456备份的文件路径为:/home (当然这个路径也是可以按照个人意愿修改的。)备份的文件名为:backup.sql
参数 —flush-logs:使用一个新的日志文件来记录接下来的日志参数 —lock-all-tables:锁定所有数据库
以下为我使用的数据库备份脚本文件:
脚本文件功能不是很复杂,首先是各种变量赋值。然后备份数据库,接着是进入到备份文件所在的目录,再将备份文件压缩。其中倒数第三行是使用 nodejs 将备份的数据库文件上传到七牛云中,这里就不在过多的阐述了,与本文主题不符,想看具体实现可以查看 GitHub 源码。其中相应的变量改成自己的值即可拿过来使用。
#!/bin/bash
#在使用之前,请提前创建以下各个目录
#获取当前时间
date_now=(date "+%Y%m%d-%H%M%S") backUpFolder=/home/db/backup/mysql username="root" password="123456" db_name="zone" #定义备份文件名 fileName="{db_name}_{date_now}.sql" #定义备份文件目录 backUpFileName="{backUpFolder}/{fileName}" echo "starting backup mysql {db_name} at datenow."/usr/bin/mysqldumpu{date_now}." /usr/bin/mysqldump -u{username} -p{password}  --lock-all-tables --flush-logs {db_name} > {backUpFileName} #进入到备份文件目录 cd {backUpFolder}
#压缩备份文件
tar zcvf {fileName}.tar.gz {fileName}

use nodejs to upload backup file other place

#NODE_ENV=backUpFolder@backUpFolder@backUpFileName node /home/tasks/upload.js
date_end=(date "+%Y%m%d-%H%M%S") echo "finish backup mysql database {db_name} at ${date_end}."
恢复全量备份
mysql -h localhost -uroot -p123456 < bakdup.sql
或者
mysql> source /path/backup/bakdup.sql
嗯,回复全量备份也就这样两句,似乎不用多说什么了。对了,在恢复全量备份之后,要将全量备份之后的增量备份也恢复回数据库中。
定时备份
输入如下命令,进入 crontab 定时任务编辑界面:
crontab -e
添加如下命令,其意思为:每分钟执行一次备份脚本:
* * * * * sh /usr/your/path/mysqlBackup.sh
每五分钟执行 :
*/5 * * * * sh /usr/your/path/mysqlBackup.sh
每小时执行:
0 * * * * sh /usr/your/path/mysqlBackup.sh
每天执行:
0 0 * * * sh /usr/your/path/mysqlBackup.sh
每周执行:
0 0 * * 0 sh /usr/your/path/mysqlBackup.sh
每月执行:
0 0 1 * * sh /usr/your/path/mysqlBackup.sh
每年执行:
0 0 1 1 * sh /usr/your/path/mysqlBackup.sh
关于 crontab 命令的格式说明如下:

后面会有专门的一篇文章来写写 Linux 的定时任务 crontab。
ok,今天就分享这些知识,下一篇分享 MySQL 增量更新的知识,敬请期待!

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论