当前位置:Gxlcms > 数据库问题 > MySQL 数据还原

MySQL 数据还原

时间:2021-07-01 10:21:17 帮助过:9人阅读

    使用方法二如果二进制文件里包含GTID信息需要过滤掉


 
  1. [root@localhost /]# mysqlbinlog --skip-gtids binlog.000001 >  /tmp/dump.sql  
  2. [root@localhost /]# mysqlbinlog --skip-gtids binlog.000002 >> /tmp/dump.sql  
  3. [root@localhost /]# mysql -u root -p -e "source /tmp/dump.sql"  

3 通过时间点或位置点的恢复
    如果我们要跳过某个时间段或位置段,需要指定起止时间或位置信息
    3.1 通过事件的时间来恢复
    我们可以通过参数--start-datetime 和 --stop-datetime指定恢复binlog日志的起止时间点,时间使用DATETIME格式。
    比如在时间点2005-04-20 10:00:00我们删除掉一个库,我们要恢复该时间点前的所有日志


 
  1. [root@localhost /]# mysqlbinlog --stop-datetime="2005-04-20 9:59:59" /usr/local/mysql/data/binlog.123456 | mysql -u root -p  

    我们可能几个小时后才发现该错误,后面又有一系列的增删查改等操作,我们还需要恢复后续的binlog,我们可以指定起始时间

 


 
  1. [root@localhost /]# mysqlbinlog --start-datetime="2005-04-20 10:01:00" /usr/local/mysql/data/binlog.123456 | mysql -u root -p  

 

    通过该种方法恢复我们需要通过查看binlog日志知道发生误操作的确切时间点,查看日志我们可以先将日志输出到文本里


 
  1. [root@localhost /]# mysqlbinlog /usr/local/mysql/data/binlog.123456 > /tmp/mysql_restore.sql  

    3.2 通过事件的位置来恢复
    我们可以通过参数--start-position 和 --stop-position指定恢复binlog日志的起止位置点,通过位置的恢复需要我们有更加精细的操作,例如在某个时间点我们执行了错误的语句,且这个时间点前后都有大并发操作,要确定破坏性sql的时间点,我们可以先导出大致的时间段的日志到文件以缩小查找范围,再去分析和确定


 
  1. [root@localhost /]# mysqlbinlog --start-datetime="2005-04-20 9:55:00"  --stop-datetime="2005-04-20 10:05:00" /usr/local/mysql/data/binlog.123456 > /tmp/mysql_restore.sql  

    确定好需要跳过的位置之后,我们就可以进行恢复了


 
  1. [root@localhost /]# mysqlbinlog --stop-position=368312 /usr/local/mysql/data/binlog.123456 | mysql -u root -p  
  2. [root@localhost /]# mysqlbinlog --start-position=368315 /usr/local/mysql/data/binlog.123456 | mysql -u root -p  

    注:mysqlbinlog工具的输出会在每条sql语句前增加 SET TIMESTAMP语句,恢复的数据及mysql日志反映当前时间。

 

MySQL 数据还原

标签:binary   inno   blog   src   格式   mysqldump   还原   服务   mysqld   

人气教程排行