一文手把手教你用binlog恢复mysql误删数据
1.确认binlog打开了
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V53YkTpk-1651734468782)(1648022284573.png)]](/https://i-blog.csdnimg.cn/blog_migrate/5733e31a6fc744844257ef30125e3ccf.png)
2.查看binlog模式
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Gn317mY-1651734468788)(1648022667483.png)]](/https://i-blog.csdnimg.cn/blog_migrate/5d67c759eff6336751a907a8162e9983.png)
3.查看最新的日志文件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UgPuePju-1651734468790)(1648023271892.png)]](/https://i-blog.csdnimg.cn/blog_migrate/decec795102c394256f976593361b7ce.png)
或 编号最新的就是最近的
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s8BxnOO0-1651734468791)(1648023211437.png)]](/https://i-blog.csdnimg.cn/blog_migrate/d2c9837a0ddf5c65965969b8adc6b8a5.png)
-
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.sqlother:此处source可能会遇到个问题,https://zhuanlan.zhihu.com/p/24689474 ,binlog版本信息在4的时候可以看到
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KiJK18cs-1651734468792)(1648026381791.png)]](/https://i-blog.csdnimg.cn/blog_migrate/1792c5e58bd4a2fd9b147bf03b9e7fd0.png)
还有个可能问题 sql文件太大了,设置一下max_allowed_pocket。
本文详细指导如何利用binlog恢复MySQL中误删除的数据,包括开启binlog、检查模式、定位日志、导出SQL、执行反向操作和回滚步骤,适合数据库管理员和开发者参考。

1万+

被折叠的 条评论
为什么被折叠?



