用Mysqldump实现全库备份+binlog的数据还原

  随着业务量的增长,数据库也是成倍增长,原来一直使用的全库备份不再适合现在的数据库了,动辄就备份10G-20G,太占用磁盘空间,所以就考虑用更简洁更快速更节省磁盘空间的备份方法,这就想到了使用binlog日志来进行备份和恢复,下面是具体实施的方法:

10年积累的成都做网站、成都网站建设、成都外贸网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站后付款的网站建设流程,更有和静免费网站建设让你可以放心的选择与我们合作。

环境介绍:

操作系统:Centos 7.2

数据库:MySQL 5.6

一.安装Mysql和改配置文件

安装就不具体介绍了,网上教程很多,配置文件需要添加以下选项:

vim /etc/my.cnf

log_bin = mysql-binlog    #开启binlog日志功能,默认在mysql的datadir目录下面

show variables like 'log_bin';    #进入Mysql查看binlog日志是否开启

用Mysqldump实现全库备份+binlog的数据还原

二.创建实验数据

由于刚建的数据库,日志中没有数据,创建新的数据库和表格来进行实验

#创建t1库

create database t1;

#创建tab1表

create table t1.tab1(id int primary key auto_increment,name varchar(20));

#插入两条数据

insert into t1.tab1(name) values('zhangsan');

insert into t1.tab1(name) values('lisi');

三.进行全库备份和日志备份

#进行全库备份,并产生新日志

mysqldump -uroot -p123456 --flush-logs t1 > /opt/t1_`date +%Y%m%d`.sql

#备份日志文件,全库备份前有几个日志就备份几个

cp /usr/local/mysql/binlog/mysql.bin.000001 /opt/

四.模拟删除数据

delete from t1.tab1 where id=2;

#插入新数据

insert into t1.tab1(name) values('wangwu');

五.备份mysqldump之后的binlog日志文件

cp /usr/local/mysql/binlog/mysql.bin.000002 /opt/

六.用Mysqldump实现全库备份+binlog的数据还原

  1. mysql -uroot -p123456 tab1 < /opt/t1_20170626.sql  #还原删除前的全部数据,这时候应该有两条数据,zhangsan和lisi

  2. mysqlbinlog -v /usr/local/mysql/binlog/mysql.bin.000002  #分析新开启的binlog日志文件,里面误操作的时间的起始位置和终止位置,只要跳过这一段时间即可

    用Mysqldump实现全库备份+binlog的数据还原

  3. 从binlog恢复数据

    mysqlbinlog --stop-position=120 /opt/mysql.bin.000002|mysql -uroot -p123456

    mysqlbinlog --start-position=291 /opt/mysql.bin.000002|mysql -uroot -p123456

  4. 查看恢复情况

    select * from t1.tab1;    #此时表中有三条数数据为恢复成功

手动备份恢复过程已经全部完成,下次说一说如何脚本化这个流程


文章名称:用Mysqldump实现全库备份+binlog的数据还原
文章起源:http://azwzsj.com/article/gsipsj.html