在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
最近项目需要对数据库数据进行备份,通过查阅各种资料,设计了一套数据库备份策略,通过调试运行一周后,目前已经处于平稳运行状态。现在将思路分享出来,同时感谢gredn大佬。 设计场景1)增量备份在周一到周六凌晨3点,复制mysql-bin.00000*到指定目录; 技术点Mysqldump、mysqlbinlog、crontab 服务器信息主机:centos7;数据库:mysql5.7 准备工作开启binlog日志功能 #mkdir /home/mysql #cd /home/mysql #mkdir mysql-bin. #增量日志文件目录 (2)修改所属的用户/组:(不修改,mysql无法重启) #chown -R mysql.mysql mysql-bin (3)修改mysql配置文件,执行: #vim /etc/my.cnf 其中,server-id表示单个结点的id,这里由于只有一个结点,所以可以把id随机指定为一个数,这里将id设置成1。若集群中有多个结点,则id不能相同(对于5.7以下版本不需要指定server-id); (4)重启mysql,执行: #systemctl restart mysqld.service (5)查看日志文件: #cd /home/mysql/mysql-bin (6)进入数据库,查看启动效果: #show variables like '%log_bin%'; 编写全量备份脚本(Mysql-FullyBak.sh)进入/home/mysql目录 #vim Mysql-FullyBak.sh 参数说明: 编写增量备份脚本切换到/home/mysql目录,执行: #vim Mysql-DailyBak.sh 设置定时任务crontab(1)安装crontab(centos7默认已经安装): #yum install crontabs 服务操作说明: #/bin/systemctl start crond.service //启动服务 #/bin/systemctl stop crond.service //关闭服务 #/bin/systemctl restart crond.service //重启服务 #/bin/systemctl reload crond.service //重新载入 配置: #/bin/systemctl status crond.service //服务状态 加入开机自动启动: #chkconfig –level 35 crond on (2)在命令行输入: #crontab -e 添加相应的任务,wq存盘退出 #每个星期日凌晨3:00执行完全备份脚本 0 3 * * 0 /bin/bash -x /home/mysql/Mysql-FullyBak.sh >/dev/null 2>&1 #周一到周六凌晨3:00做增量备份 0 3 * * 1-6 /bin/bash -x /home/mysql/Mysql-DailyBak.sh >/dev/null 2>&1 说明:默认情况下,crontab执行一次任务后,会通过email通知用户,为避免每次发信息,加入/dev/null 2>&1 (3)查看定时任务:#crontab -l 参数与说明: 恢复操作恢复过程亦会写入日志文件,如果数据量很大,建议先关闭binlog日志功能 (1)首先,解压最新的全量备份文件,进入备份文件目录,执行: #tar -zxvf XXX.sql.tgz (2)查看全备之后新增的binlog文件,执行: #grep CHANGE XXX.sql 由图可知,这是全备时刻的binlog文件位置,即mysql-bin.000003的154行,因此在该文件之前的binlog文件中的数据都已经包含在这个全备的sql文件中。 (3)恢复mysql-bin.000003文件的154行之后的信息 进入到mysql-bin.000003目录,执行(sysecokit为数据库名); #mysqlbinlog --start-position=154 --database=sysecokit mysql-bin.000003 | mysql -uroot -p -v sysecokit (4)将其他binlog文件(除去mysql-bin.000003)导出sql文件,执行(-d指定数据库): #mysqlbinlog -d sysecokit mysql-bin.00000X >00Xbin.sql (5) vim编辑最新的00Xbin.sql删除其中的drop语句 #mysql -uroot -p < XXX.sql 如:#mysql -uroot -p < 20180716.sql #mysql -uroot -p syseco<00Xbin.sql 如:#mysql -uroot -p syseco<004bin.sql 到此这篇关于mysql备份策略的实现(全量备份+增量备份)的文章就介绍到这了,更多相关mysql备份策略内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论