简单粗暴通过 Binlog 日志来恢复 MySQL 数据

引言#

Binlog 日志的主要作用:
1、增量备份。
2、主从复制。

操作步骤#

1、登录 MySQL -> 执行 show variables like '%log_bin%'; 查询 binlog 状态。
提示: log_bin => on 说明已经开始 binlog。

2、准备测试数据

Copy
// 创建 `test` 数据库 CREATE DATABASE `test`; // 创建 `user` 数据表 CREATE TABLE `user` ( `id` int(11) NOT NULL, `name` varchar(25) DEFAULT NULL, `age` int(4) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; // 插入测试数据 BEGIN; INSERT INTO `user` VALUES (1, 'liuyi', 20); INSERT INTO `user` VALUES (2, 'chener', 21); INSERT INTO `user` VALUES (3, 'zhangsan', 22); INSERT INTO `user` VALUES (4, 'lisi', 23); INSERT INTO `user` VALUES (5, 'wangwu', 24); COMMIT;

3、备份数据

4、备份数据之后,执行 flush logs 重新生成一个 binlog 日志,用来记录被备份之后的操作。

5、执行更新操作,将 ID 为 5 的记录 age 修改成 30。

6、由于误删除,将数据表 user 删除掉了。

7、开始将之前的备份数据恢复到数据库。

8、但是,我们发现之前的更新的数据已经丢失了。

9、查询出 binlog 日志 binllog.000002。

10、找到更新操作的 position (位置点)。

11、使用 binlog 进行数据恢复。

12、再次查看数据,已经将数据恢复了。

posted @   Yxh_blogs  阅读(447)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
历史上的今天:
2018-04-06 Go中函数作为值、类型传递。
2015-04-06 有两种分别用<bgsound>和<embed></embed>标签,当用<embed>插入背景音乐时可以设置宽度和高度为0,隐藏播放器。
点击右上角即可分享
微信分享提示
CONTENTS