使用MySQL的binlog日志恢复误删数据
使用binlog日志恢复误删数据
1、查看binlog是否开启并锁表
# 进入mysql
mysql -uroot -proot#查看binlog是否开启
show variables like '%log_bin%';
#如果log_bin显示为ON则开启成功#锁表,防止数据被污染
lock tables 表名 read;
2、查询最新的binlog 获取binlog日志名称 下一步需要用到
show master status;
3、使用mysqlbinlog 工具导出格式化后的日志
mysqlbinlog -uroot -proot --base64-output=decode-rows mysql-bin.000001 > /var/lib/mysql/backup.sql;#--base64-output=decode-rows 表示导出格式为row
#--start-datetime="2022-01-13 08:00:00" 表示查询的开始时间
#--stop-datetime="2022-01-14 10:00:00" 查询的结束时间
# > /var/lib/mysql/backup.sql 表示输出路径# 如提示 mysqlbinlog 命令不存在则使用find命令寻找具体位置在进入目录后再执行
find / -name 'mysqlbinlog'
/usr/bin/mysqlbinlog
cd /usr/bin/mysqlbinlog
4、使用vim查看刚刚导出的backup.sql文件,绿色箭头指的是我添加的数据,红色箭头是我执行的删除命令,如果我们要恢复删除前的数据,就找到删除命令的前一条命令执行后commit的提交点,也就是图中粉色箭头指向的位置,最后一个提交点的数字等会就是我们的回滚点。
5、确定好回滚点位置,再次导出binlog,这次不要加 –base64-output=decode-rows 参数,否则mysql无法识别这种格式导致无法恢复数据,此参数只是为了更方便的可视化mysqlbinlog的导出文件来寻找回滚点位置。
mysqlbinlog -uroot -proot --start-position="回滚点数字" mysql-bin.000001 > /var/lib/mysql/backup.sql;
6、准备恢复数据,开始恢复前,如果你的的恢复文件中有创建数据库的操作,请先将原有的数据库先删除,否则会报database exist;
# 解锁之前锁住要恢复的表
mysql > unlock tables;
# 执行命令恢复数据
mysql -uroot -proot 数据库名称 < /var/lib/mysql/backup.sql # 指定上一步导出的sql文件位置
7、执行后数据就完成恢复了,这只是最初级的恢复方式,因为binlog日志只有一个文件(关于binlog文件的生成:每重启一次,便会重新生成一个binlog文件;还有一种情况就是运行了FLUSH LOGS命令也会重建一个;还有一种情况就是当这个binlog文件的大小到了设定的值后,就会重新生成一个新的),如果删除的数据涉及到以往的binlog文件,还需要去定位误删记录插入的位置,并合并这些binlog数据才能完整恢复,并且此次的binlog中只有单张表的操作,实际项目中会有多张表各种不同的操作,如果只需要单独恢复某张表的话,需要使用过滤命令(#sed -n ‘/### DELETE FROM test
.test
/, /COMMIT/p’ 表示过滤规则),先过滤,再导入到文件中来得到想要的数据。
使用MySQL的binlog日志恢复误删数据相关推荐
- binlog日志_【删库跑路】使用Binlog日志恢复误删的MySQL数据
前言 "删库跑路"是程序员经常谈起的话题,今天,我就要教大家如何删!库!跑!路! 开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文, ...
- 【删库跑路】使用Binlog日志恢复误删的MySQL数据
前言 "删库跑路"是程序员经常谈起的话题,今天,我就要教大家如何删!库!跑!路! 开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文, ...
- Mysql基于binlog日志恢复数据
Mysql基于binlog日志恢复数据 1.Linux安装mysql https://blog.csdn.net/qq_44981526/article/details/126717005 可能遇到的 ...
- Mysql 通过 binlog日志 恢复数据(数据搞丢看过来)
1.查看binlog是否开启 #查看binlog是否开启 show variables like '%log_bin%'; 2.锁表,防止数据被污染(可根据需求,不阻塞业务的情况) #锁表,防止数据被 ...
- mysql 二进制日志在哪_如何通过Mysql的二进制日志恢复数据库数据
经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响.所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlo ...
- MYSQL使用binlog日志恢复数据
本教程目的在于,你的MYSQL采用了binlog日志,且产生了binlog日志文件,使用日志文件恢复数据. 步骤一.找到要恢复数据的binlog文件 怎么找?使用命令:show variables l ...
- MySQL 之binlog日志说明及利用binlog日志恢复数据操作记录
众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 一 ...
- MySQL二进制binlog日志说明以及利用binlog日志恢复数据
MySQL的binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全量备份+binlog日志恢复增量数据部分). 一.关于 ...
- MYSQL专题-使用Binlog日志恢复MySQL数据
大家有没有碰到过由于误操作把测试数据库的一张表给删除了,导致测试的数据都被删除了,然后手足无措,测试把你一定数落,顿时感觉自己要死了?今天就教你即使误删了也可以将删除的数据恢复,以后误删再也不用惊吓了 ...
最新文章
- Android开发之自定义Toast(带详细注释)
- python读取文件名-Python获取指定文件夹下的文件名的方法
- 一次利用位图索引进行SQL优化的案例
- LeetCode 371 两个整数之和
- 数据的增删改_准备数据
- 多线程实战(一) : 交通灯管理系统
- sourcemointor评价代码
- [Luogu 1197] JSOI2008 星球大战
- 合肥科学岛安光所计算机应用,国家大气污染防治攻关联合中心成立 合肥科学岛安光所承担重任...
- 中国大学生计算机设计大赛 历史作品博物馆
- Garbled Circuits介绍 - 56 Yao协议的实现 总结
- 影响网站跳出率的因素
- Dapr专题之06Actors
- 3dmax渲染软件有哪些?哪个好用
- linux gpio口测试程序,gpio接口测试
- 如何解决移动端300ms延迟
- 产品公司解决方案、解决方案公司解决方案,可能你做了一辈子IT你也不知道...
- 计算机系统用户登录密码错误,电脑开机密码正确却进不去,老提示密码错误
- Spring Boot 启动 出现异常The bean xxx could not be injected as a xx.xxxx because it is a JDK dynami
- 微信小程序开发 - 视图与逻辑