本节解释使用二进制日志执行时间点恢复的一般思想。下一部分,第7.5.2节,“使用事件位置的时间点恢复”,通过实例详细说明了操作步骤。
本节和下一节中的许多示例都使用mysql客户端处理产生的二进制日志输出mysqlbinlog.如果二进制日志包含\ 0
(null)字符,则输出不能被解析mysql方法调用它,否则——二进制模式
选择。
时间点恢复的信息源是在完全备份操作之后生成的二进制日志文件集。因此,要允许服务器恢复到某个时间点,必须在其上启用二进制日志记录(请参阅第5.4.4节“二进制日志”详情)。
要从二进制日志中恢复数据,必须知道当前二进制日志文件的名称和位置。默认情况下,服务器在数据目录中创建二进制日志文件,但是路径名可以使用——log-bin
选项,将文件放置在不同的位置。要查看所有二进制日志文件的列表,使用下面的语句:
显示二进制日志
要确定当前二进制日志文件的名称,执行以下语句:
mysql>显示MASTER状态;
的mysqlbinlog实用程序将二进制日志文件中的事件从二进制格式转换为文本,以便可以查看或应用它们。mysqlbinlog具有基于事件时间或事件在日志中的位置选择二进制日志部分的选项。看到mysqlbinlog -处理二进制日志文件的实用程序.
应用二进制日志中的事件会导致重新执行它们所表示的数据修改。这可以恢复给定时间范围内的数据更改。要应用二进制日志中的事件,请处理mysqlbinlog使用mysql客户:
$ > mysqlbinlogbinlog_files| mysql -u root -p
当您需要确定事件时间或位置以在执行事件之前选择部分日志内容时,查看日志内容非常有用。若要查看日志中的事件,请发送mysqlbinlog输出到分页程序:
$ > mysqlbinlogbinlog_files|更多
或者,将输出保存在一个文件中,并在文本编辑器中查看该文件:
$ > mysqlbinlogbinlog_files> tmpfile $>…编辑临时文件...
编辑完成后,应用如下内容:
$> mysql -u root -p < tmpfile . txt
如果要在MySQL服务器上应用多个二进制日志,请使用一个连接来应用要处理的所有二进制日志文件的内容。这里有一种方法:
$> mysqlbinlog。000001 binlog。000002 | mysql -u root -p
另一种方法是将整个日志写入一个文件,然后处理该文件:
$> mysqlbinlog。000001 > /tmp/语句。SQL $> mysqlbinlog。000002 >> /tmp/语句。SQL $> mysql -u root -p -e "source /tmp/statements.sql"