你好,游客 登录 注册 搜索
背景:
阅读新闻

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

[日期:2017-09-24] 来源:Linux社区  作者:forall [字体: ]

随着业务量的增长,数据库也是成倍增长,原来一直使用的全库备份不再适合现在的数据库了,动辄就备份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日志是否开启

 

二.创建实验数据

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

#创建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日志文件,里面误操作的时间的起始位置和终止位置,只要跳过这一段时间即可

  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;    #此时表中有三条数数据为恢复成功

手动备份恢复过程已经全部完成,下次说一说如何脚本化这个流程 http://www.linuxidc.com/Linux/2017-09/147037.htm

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-09/147036.htm

linux
相关资讯       mysqldump全库备份  binlog数据还原 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款