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"