如何从二进制日志还原数据


Answers:


7

您是否知道需要从哪些Binlog文件还原以及有多少Binlog文件?

使用mysqlbinlog实用程序,我们可以查看binlog文件的内容。

如果是单个文件,则可以使用以下方法恢复:

mysqlbinlog /var/lib/mysql-bin.000016 | mysql uroot pReset123

如果是多个文件,则只需将所有内容提取到一个.sql文件中,然后直接将其还原:

mysqlbinlog /var/lib/mysql-bin.000016 > /logs/allbinlog.sql

要将第二个binlog内容附加到allbinlof.sql文件,请使用以下命令:

mysqlbinlog /var/lib/mysql-bin.000016 >> /logs/allbinlog.sql

您也可以使用mysqlbinlog选项排除某些语句。请在下面尝试以下选项:

mysqlbinlog --help

4

使用以下步骤从二进制日志还原数据,或使用此链接了解还原过程:MySQL二进制日志还原

首先,从最新备份还原数据库

mysql -u username -ppassword database_name < dump.sql

然后执行以下任一操作:

  • 从二进制日志还原其余数据。

    如果要在MySQL服务器上执行多个二进制日志,那么安全的方法是使用与服务器的单个连接来处理它们。

    mysqlbinlog mysql_bin.000001 | mysql -u root -ppassword database_name
    mysqlbinlog mysql_bin.000002 | mysql -u root -ppassword database_name
    

    要么:

    mysqlbinlog mysql_bin.000001 mysql_bin.000002 | mysql -u root -ppassword database_name
  • 根据时间恢复数据

    mysqlbinlog --start-datetime="2005-04-20 10:01:00" \
                --stop-datetime="2005-04-20 9:59:59" mysql_bin.000001 \
                | mysql -u root -ppassword database_name
    
  • 根据位置还原数据

    mysqlbinlog --start-position=368315 \
                --stop-position=368312 mysql_bin.000001 \
                | mysql -u root -ppassword database_name
    

2
如文档中所述,还原多个二进制日志的第一个示例特别不安全。
Reuben 2015年

2

您可以使用-v选项将.sql文件制成READABLE格式。

例如

mysqlbinlog -v /var/lib/mysql-bin.000016 > /logs/allbinlog.sql

mysqlbinlog -v /var/lib/mysql-bin.000016 >> /logs/allbinlog.sql
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.