前要:根据mysql的binlog日志恢复数据,前提条件是必须开启binlog
开始数据恢复步骤:
1、查看binlog日志文件,使用命令 show VARIABLES like '%log_bin%',获取binlog日志文件保存位置
2、查看最新文件名称,通常文件以*.00000X的形式命名,注意提取时间最新的那个或者是目标时间段的那个文件
3、根据条件筛查日志文件
注意:如果不需要筛查数据表,命令语句中bu不需要增加表名条件,如: mysqlbinlog --no-defaults --database=数据库名 --start-datetime="2022-11-22 00:00:00" --stop-datetime="2022-11-22 23:59:59" 日志文件全路径 > 导出文件(可自定义路径)
mysqlbinlog --no-defaults --database=数据库名 --start-datetime="2022-11-22 00:00:00" --stop-datetime="2022-11-22 23:59:59" 日志文件全路径 | grep 待恢复的数据表名 > 导出文件(可自定义路径)
例如: mysqlbinlog --no-defaults --database=zswodexs --start-datetime="2022-11-22 00:00:00" --stop-datetime="2022-11-22 23:59:59" /mysql5/data/master-bin.000003 > log_out.txt
4、查找导出的文件,获取日志标志点(通常找到最小和最大的即可)
5、导出日志的sql文件,执行命令: mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v --start-position=1020251928 --stop-position=1021060739 --database=zswodexs /mysql5/data/master-bin.000003 > sql_info.sql
6、导出文件后打开
实例如图:
具体的恢复数据根据具体的数据值、表名或者其他关键字查找,数据不多时手动组建sql 恢复数据量大的话,可采用工具 binlog2sql可以将binlog进行反向解析