阅读本文大约须要 5 分钟node
实战-MySQL定时全量备份(1)mysql
实战-将MySQL备份上传到私有云(3)github
引言sql
全量备份数据库
恢复全量备份centos
定时备份性能优化
在产品上线以后,咱们的数据是至关重要的,容不得半点闪失,应该作好万全的准备,搞很差哪一天被黑客入侵或者恶意删除,那就 gg 了。因此要对咱们的线上数据库定时作全量备份与增量备份。例如:天天作一次增量备份,每周作一次全量备份。如下所涉及的操做系统为 centos7 。bash
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 ${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@$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 增量更新的知识,敬请期待!