7.5 Point-in-Time (Incremental) Recovery Using the Binary Log 使用binay log 基于时间点恢复

7.5 Point-in-Time (Incremental) Recovery Using the Binary Log  使用binay log 基于时间点恢复

7.5.1 Point-in-Time Recovery Using Event Times
7.5.2 Point-in-Time Recovery Using Event Positions

基于时间点恢复指从一个数据改变恢复从一个给定的时间点。

通常情况下, 这个恢复的类型是在恢复一个全备份后执行的,把服务器带到备份时候的状态。

(全备份可以有几种方式) 按时间点恢复让数据库到从全备份的时间点到最近的时间点


时间点恢复是基于这些原则:

1.用于基于时间恢复大师增量备份通过binary log 文件产生随后到全备份操作。

因此, server 必须启用--log-bin选项来启动binary log


要查看所有的binary log 文件的列表,使用这个语句:

 SHOW BINARY LOGS;


要确定当前binary log 文件的名字,执行下面的语句:

mysql> SHOW MASTER STATUS;


mysqlbinlog 功能转换binary log 文件里的evnets 从binary 格式到文本格式

这样它们可以被执行或者查看。


Mysqlbinlog 有选项用于查询binary log的部分基于evnet times或者 event position 


从binary log 执行事件 可以让数据修改被重做。

这个可以让数据改变恢复用于给定的时间范围。

从binary log 执行events,处理mysqlbinlog输出适用mysql client

shell> mysqlbinlog binlog_files | mysql -u root -p


查看log 内存可以是有用的 当你需要知道event times或者positions 来选择特定的日志内容

shell> mysqlbinlog binlog_files | more


如果你有多个binary log 需要执行,安全的方式是使用一个连接来处理它们,下面是一个例子,演示了可能是不安全的

shell> mysqlbinlog binlog.000001 | mysql -u root -p # DANGER!!
shell> mysqlbinlog binlog.000002 | mysql -u root -p # DANGER!!


处理binary logs 用这种方式使用不同的连接到server 会导致问题如果第一个log file 包含一个CREATE TEMPORARY TABLE 

statement 


第2个 log 包含一个语句 使用这个临时表。


当第一个mysql process 中断,server drop 这个临时表 当第2个mysql 处理尝试使用这个表,server 报告  “unknown table.”


为了避免这个问题, 使用一个单独的连接来执行所有的binary logs里的内从

shell> mysqlbinlog binlog.000001 binlog.000002 | mysql -u root -p



另外一种方法是将所有的日志写入到一个单独的文件,然后处理这个文件:

shell> mysqlbinlog binlog.000001 >  /tmp/statements.sql
shell> mysqlbinlog binlog.000002 >> /tmp/statements.sql
shell> mysql -u root -p -e "source /tmp/statements.sql"

posted @ 2016-10-17 13:37  czcb  阅读(99)  评论(0编辑  收藏  举报