Point-in-Time (Incremental) Recovery Using the Binary Log 基于时间点使用Binary log的增量恢复
7.5.1 Point-in-Time Recovery Using Event Times 使用Event Times 基于时间点恢复
7.5.2 Point-in-Time Recovery Using Event Positions 使用Event Positions 基于时间点恢复
基于时间点的恢复把服务器带到全备份后最近的时间:
根据这些原则的时间恢复点:
1.时间点恢复的数据源是通过binary log 文件产生的增量数据,因此 server必须带–log-bin选项来启用binlog.
从binary log 恢复数据,你必须知道当前binlog 文件的名字和位置。默认, server 创建binary log 在data目录,
路径名字可以通过–log-bin选项制定,把文件放在不同的位置。
列出所有的binary log 文件,使用语句:
mysql> SHOW BINARY LOGS;
+——————+———–+
| Log_name | File_size |
+——————+———–+
| mysql-bin.000001 | 260861478 |
| mysql-bin.000002 | 143 |
| mysql-bin.000003 | 1717 |
| mysql-bin.000004 | 430 |
| mysql-bin.000005 | 120 |
+——————+———–+
5 rows in set (0.18 sec)
查看当前的binary log文件,执行下面的语句:
mysql> SHOW MASTER STATUS;
+——————+———-+————–+——————+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+——————+———-+————–+——————+——————-+
| mysql-bin.000005 | 120 | | | |
+——————+———-+————–+——————+——————-+
1 row in set (0.02 sec)
1.mysqlbinlog 功能 转换binary log 文件里的events 从2进制的格式转为text,可以查询和被执行。
mysqlbinlog 有选项用于选择binary log 的章节基于evnet times 或者evnets posistion
2.执行binary log 的events 的数据修改 表示 要重做,这个可以在给定的时间范围内的数据变化的恢复,
从二进制日志执行事件,使用MySQL客户端程序mysqlbinlog输出,从binary log 执行events 使用:
shell> mysqlbinlog binlog_files | mysql -u root -p
3.查看日志内容可以使有用的,当你需要确定event times 或者位置来选择部分的log 内容,查看log的events,
发送mysqlbinlog的输出到一个分页程序
shell> mysqlbinlog binlog_files | more
另外,将输出保存在文件中,并在文本编辑器中查看该文件
shell> mysqlbinlog binlog_files > tmpfile
shell> … edit tmpfile …
4.保存在文件中的输出是有用的, 作为一个初步的执行日志内容,比如意外的DROP DATABASE.你可以删除文件中的任何语句
不被执行, 编辑文件后,执行如下内容:
shell> mysql -u root -p < tmpfile
如果你有多个binary log 要执行,最安全的方式是使用一个单独的连接,下面是一个例子,演示了什么可能是不安全的
shell> mysqlbinlog binlog.000001 | mysql -u root -p # DANGER!!
shell> mysqlbinlog binlog.000002 | mysql -u root -p # DANGER!!
使用不同的连接处理2进制文件会导致文件 ,如果第一个log 文件包含一个CREATE TEMPORARY TABLE 语句,
第2个日志包含到了一个使用临时表的语句,会导致问题。当第一个mysql 进程终止, server 删除临时表,
第2个mysql进程尝试使用表,server 报告”unkown table”
为了避免类似的问题,使用一个连接来执行你想处理的所有二进制日志的内容。这是一个这样做的方法: