mysqlbinlog制定区间恢复数据

一个有意思的场景:

mysql>显示数据库;

+ - - - - - - - - - - - - - - - - - - - - - - +

|数据库,,,,,|

+ - - - - - - - - - - - - - - - - - - - - - - +

| information_schema |

| ZLECUBE,,,,,,|

|日志,,,,,,,,|

| mysql,,,,,,,|

| performance_schema |

+ - - - - - - - - - - - - - - - - - - - - - - +

5行组(0.00秒)


mysql>,

mysql>,

mysql>创建数据库测试;

查询好了,1行影响(0.00秒)


mysql>,

mysql>使用测试;

数据库改变mysql>,

mysql>,

mysql>创建表aa (int id);

查询好,0行影响(0.03秒)


mysql>,

mysql>刷新日志;

查询好,0行影响(0.00秒)


mysql>\ q

root@debian再见:/var/lib/mysql/日志/binlog # ls - l

总56

-rw-rw mysql mysql——150 2月,3 mysql-bin世界时间。000017

-rw-rw mysql mysql——150, 2月4日19:25 mysql-bin。000018

-rw-rw mysql mysql——150, 2月5日19:25 mysql-bin。000019

-rw-rw mysql mysql——150, 2月6日19:25 mysql-bin。000020年

-rw-rw mysql mysql——150, 2月7日15:04 mysql-bin。000021年

-rw-rw mysql mysql——314, 2月7日19:25 mysql-bin。000022年

-rw-rw mysql mysql——150, 2月8日19:25 mysql-bin。000023年

-rw-rw mysql mysql——150, 2月9日19:25 mysql-bin。000024年

-rw-rw mysql mysql——150 2月10 mysql-bin世界时间。000025

-rw-rw mysql mysql——150 2月11日19:25 mysql-bin。000026年

-rw-rw mysql mysql——150 2月12日19:25 mysql-bin。000027

-rw-rw mysql mysql——319 2月13日15:08 mysql-bin。000028

-rw-rw mysql mysql——107 2月13日15:08 mysql-bin。000029

-rw-rw mysql mysql——559 2月13日15:08 mysql-bin。指数



root@debian:/var/lib/mysql/日志/binlog # mysqlbinlog mysql-bin。000028年

找到如下的信息:


107

# # 170213 15:08:21服务器id 1, end_log_pos 190 Querythread_id=1435 exec_time=0 error_code=0

设置时间戳=1486969701/* ! */;

设置@@session.pseudo_thread_id=1435/* ! */;

@@session设置。@@session foreign_key_checks=1。@@session sql_auto_is_null=0。unique_checks=1, @@session.autocommit=1/* ! */;

设置@@session.sql_mode=0/* ! */;

@@session设置。auto_increment_increment=1, @@session.auto_increment_offset=1/* ! */;

/* !\ C utf8 *//* ! */;

设置@@session.character_set_client=33, @@session.collation_connection=33, @@session.collation_server=8/* ! */;

设置@@session.lc_time_names=0/* ! */;

设置@@session.collation_database=默认/* ! */;

创建数据库测试

/* ! */;

190

# # 170213 15:08:39服务器id 1, end_log_pos 276 Querythread_id=1435 exec_time=1 error_code=0

使用“测试”/* ! */;

设置时间戳=1486969719/* ! */;

create table aa (id int)

/* ! */;

276

# # 170213 15:08:56服务器id 1, end_log_pos mysql-bin 319旋转。000029年,pos: 4

分隔符;

#结束日志文件




删除刚刚的测试库


mysql>减少数据库测试;

查询好了,1行受影响(0.01秒)


mysql>\ q

再见



现在进行恢复:


root@debian:/var/lib/mysql/日志/binlog # mysqlbinlog——起始位置=190停止位置=319,mysql-bin。000028 | mysql -uroot -pxxx

root@debian:/var/lib/mysql/日志/binlog #,


mysql>显示表;

+ - - - - - - - - - - - - - - - - - +

| Tables_in_test |

+ - - - - - - - - - - - - - - - - - +

| aa,,,,,,|

+ - - - - - - - - - - - - - - - - - +

1行组(0.00秒)


mysql>,


已恢复。





可以重复恢复。


mysql>从aa select count (*),

+ - - - - - - - - - - - +

| count (*) |

+ - - - - - - - - - - - +

|,,,,4 |

+ - - - - - - - - - - - +



root@debian:/var/lib/mysql/日志/binlog # mysqlbinlog——起始位置=793,,停止位置=1093,mysql-bin。000029 | mysql -uroot -pxxx

root@debian:/var/lib/mysql/日志/binlog #,

只恢复从日志位置793到1093的信息,这里面有有两个插入记录。


mysql>从aa select count (*),

+ - - - - - - - - - - - +

| count (*) |

+ - - - - - - - - - - - +

|,,,,6 |

+ - - - - - - - - - - - +

1行组(0.00秒)



mysqlbinlog制定区间恢复数据