简介
有时候我们会误删mysql中的数据,如果有开启binlog日志,那么我们可以通过mysql提供的mysqlbinlog工具来读取出操作日志,并且重新执行操作日志达到恢复数据的效果
备份
我们通常会在数据达到一个节点去备份一次数据库使用mysqldump工具可以完成备份,以下输出的备份中会包含当前备份所指向的日志文件和日志position,这个是我们恢复日志的关键
1 | /usr/bin/mysqldump --single-transaction --master-data=2 -u root -p -A>/mysql/qwe.sql |
查看日志事件
执行以下语句,把对应的日志换成自己mysql的日志文件的名字,可以查看到该文件的日志详情,其中Pos字段表示执行语句的开始positon,end_log_position表示改语句执行结束时的position,如果是从备份中恢复数据,那么这里要对应上备份sql文件中的position,找到需要恢复数据的日志positon
1 | show BINLOG EVENTS in 'mysql-bin.000004' |
回放日志内容
以下语句将需要回放日志的开始position和结束position输入,并且传入对应的日志文件,并将结果输出到一个文件中
1 | mysqlbinlog --start-position 1487 --stop-position 2207 /var/lib/mysql/mysql-bin.000004> /liu/mysql/ppp.sql |
重新执行语句恢复数据
将上一步导出的日志操作步骤导入mysql中重新执行,即可完成数据恢复
1 | mysql -u root -p</liu/mysql/ppp.sql |