血,事件过程就不详述了。直接上操作步骤和恢复思路(友情提示:任何对数据库的操作都要提前备份好),以下是Mysql数据恢复后的流程:1、找到binlog恢复数据的前提是必须启用Mysqlbinlog日志。如果binlog日志没有开启,请忽略本文档。可以查看Mysql的配置文件,看是否开启了binlog日志。日志位置一般在/var/lib/mysql目录下或者编译安装的date目录下。也可以登录Mysql用命令查看。#cat/etc/my.cnflog_bin=mysql-bin#mysql-uroot-pEnterpassword:mysql>showvariableslike'log_bin%';+--------------------------------+-----------------------------------------------+|Variable_name|Value|+----------------------------------+------------------------------------------------+|log_bin|ON||log_bin_basename|/home/programs/mysql-5.6.26/data/mysql-bin||log_bin_index|/home/programs/mysql-5.6.26/data/mysql-bin.index||log_bin_trust_function_creators|OFF||log_bin_use_v1_row_events|OFF|+--------------------------------+---------------------------------------------------+5rowsinset(0.00秒)#ll/home/programs/mysql-5.6.26/data/mysql-bin*-rw-rw----1mysqlmysql343629748Oct1322:09/home/programs/mysql-5.6.26/data/mysql-bin.000001-rw-rw----1mysqlmysql19Sep2317:11/home/programs/mysql-5.6.26/data/mysql-bin.index如果有多个binlog日志,也可以在Mysql命令下查看当前的binlog和剪切binlog日志线。将binlog切下来后再次查看,会看到新的日志写入了新的binlog文件。mysql>showmasterstatus;+----------------+------------+------------+---------------+--------------------+|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|Executed_Gtid_Set|+-----------------+------------+------------+-----------------+--------------------+|mysql-bin.000001|343629748||||+-------------------+------------+------------+--------------------+----------------+1rowinset(0.00sec)mysql>flushlogs;QueryOK,0rowsaffected(0.01sec)2。查找binlog中的错误语句,可以在binlog日志中找到错误语句的执行时间点,将错误语句前后的binlog日志恢复到sql中。也可以跳过这一步,直接将整个binlog日志还原成sql,然后打开sql文件,删除错误语句。#sudomysqlbinlog--base64-output=DECODE-ROWS-v-didsmysql-bin.000001|grep--ignore-case-A3-B4'错误的sql语句'3.恢复binlog日志直接通过mysqlbinlog命令将binlog日志恢复成sql脚本,您可以指定开始和结束时间。如果从上次备份(建议备份的同时刷新binlog日志)到恢复时间产生了多个binlog日志,按照从小到大的顺序导出到SQL,再导入到数据库中顺序地。#sudomysqlbinlog--base64-output=DECODE-ROWS-v-dids--start-datetime'2016-10-1115:22:53'mysql-bin.000001>/home/stack/data.sql在上面的命令中使用-dids指定恢复数据库。如果要恢复表级别的数据,可以导出到sql,然后用grep过滤。#moredata.sql|grep--ignore-case-E'insert|update|delete'|greptable4。回库恢复数据时,可能会出现重复数据的错误报错,建议用-f参数忽略。#mysql-uroot-p-fids
