首页 > 代码库 > 通过二进制日志恢复数据
通过二进制日志恢复数据
二进制日志会记录所有更改数据库状态的sql操作,比如create drop update......
二进制日志文件存放在我们的数据目录里,格式如mysql-bin.000001
准备:
进入mysql命令行做如下操作:
create database a1;
#创建一个a1库
create database a2;
#创建一个a2库
drop database a1;
#删掉a1库
use a2;
create table aaa (name char(40));
#在a2库里创建一个叫aaa的数据表
接下来我们就恢复a1库
一、通过时间指定还原范围
cd /data/mysql ls mysqlbinlog mysql-bin.000009 查看创建a1库的开始时间和创建完成后的时间 /*!*/; # at 1047 #170217 23:37:12 server id 1 end_log_pos 1126 Query thread_id=10 exec_time=0 error_code=0 SET TIMESTAMP=1487345832/*!*/; create database a1 /*!*/; # at 1126 #170217 23:37:18 server id 1 end_log_pos 1205 Query thread_id=10 exec_time=0 error_code=0 SET TIMESTAMP=1487345838/*!*/; create database a2 /*!*/; # at 1205 #170217 23:37:26 server id 1 end_log_pos 1282 Query thread_id=10 exec_time=0 error_code=0 SET TIMESTAMP=1487345846/*!*/; drop database a1 /*!*/; # at 1282 #170217 23:37:53 server id 1 end_log_pos 1375 Query thread_id=10 exec_time=0 error_code=0 use `a2`/*!*/; SET TIMESTAMP=1487345873/*!*/; create table aaa (name char(40)) /*!*/; DELIMITER ; # End of log file ROLLBACK /* added by mysqlbinlog */; /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; #说明一下:每一个sql语句都以# at 开头,下面一行的#170217 23:37:12就是操作时的时间 找到之后记录好,开始恢复 mysqlbinlog --start-datetime ‘2017-02-17 23:37:12‘ --stop-datetime ‘2017-02-17 23:37:18‘ mysql-bin.000009 |mysql #这里说明一下|mysql因为我的没有设密码所以直接用的,如果你的有密码mysql -u -p 这样用 我们在进入mysql命令行,show databases 可以看到a1库恢复回来了
二、通过大小指定还原范围
我们这次通过恢复的方法把a1库删掉
还是查看二进制日志文件
通过大小就是所说的# at 后面的数字
mysqlbinlog --start-position 1205 --stop-position 1282 mysql-bin.000009 |mysql
在进入sql命令行show databases;查看一下是不是还有a1库
通过二进制日志恢复数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。