一文手把手教你用binlog恢复mysql误删数据
1.确认binlog打开了
2.查看binlog模式
3.查看最新的日志文件
或 编号最新的就是最近的
-
cmd打开mysqlbinlog ,查看指定时间段日志
mysqlbinlog --database=test --start-datetime="2022-03-23 10:00:00" --stop-datetime="2022-03-22 11:00:00" "/****/MySQL/MySQL Server 8.0/Data/DESKTOP-7E5MTNB-bin.000100"
-
导出指定位置的sql
mysqlbinlog --no-defaults -v --database=test --start-position="123456" --end-position="7891011" "/****/MySQL/MySQL Server 8.0/Data/DESKTOP-7E5MTNB-bin.000100">/tmp/test.sql
-v 代表显示sql语句,-vv 显示sql语句加字段类型, --no-defaults 忽略除了登录文件的选项文件,一般加这个是为了避免字符集的问题。
如果备份文件有多个,例如还有一个
mysql-bin.000021
,SQL 生成命令不用带位置编号:
mysqlbinlog /Users/****/Downloads/bin/mysql-bin.000021> binlog_name000021.sql
-
反义sql语句
-
执行反义后的sql
-
如果不需要反义
通过mysqlbinlog 回滚
mysqlbinlog --no-defaults --database=test --start-position="123456" --end-position="7891011" "/ProgramData/MySQL/MySQL Server 8.0/Data/DESKTOP-7E5MTNB-bin.000100" | mysql -u xxxx -p
或者5->通过mysql回滚
source /tmp/test.sql
other:此处source可能会遇到个问题,https://zhuanlan.zhihu.com/p/24689474 ,binlog版本信息在4的时候可以看到
还有个可能问题 sql文件太大了,设置一下max_allowed_pocket。