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

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

环境介绍:

操作系统: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日志是否开启

d96a219acea6cad8c5006de908fb7056.png

二.创建实验数据

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

#创建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的数据还原mysql -uroot -p123456 tab1 < /opt/t1_20170626.sql  #还原删除前的全部数据,这时候应该有两条数据,zhangsan和lisi

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

038149bffef0febc98bbb9427dcf14a6.png

从binlog恢复数据

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

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

查看恢复情况

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值