mysql误删数据快速恢复
2023-09-14 08:56:56 时间
相信后端研发的同学在开发过程经常会遇到产品临时修改线上数据的需求,如果手法很稳那么很庆幸可以很快完成任务,很不幸某一天突然手一抖把表里的数据修改错误或者误删了,这个时候你会发现各种问题反馈接踵而来。如果身边有BDA或者有这方面经验的同事那么可以很快解决这个问题,如果没有那么希望这篇文章可以帮到你。
第一步:保证mysql已经开启binlog,查看命令:
查看binklog是否开启
show variables like '%log_bin%';
查看binlog存放日志文件目录(如下图,博主binlog目录为/data/mysql):
show variables like '%datadir%';
值为OFF,需开启,值为ON,已开启。
如果没有开启binlog,也没有预先生成回滚SQL,那可能真的无法快速回滚了。对存放重要业务数据的MySQL,强烈建议开启binlog。
第二步:进入binlog文件目录,找出日志文件
第三步:切换到mysqlbinlog目录(当线上数据出现错误的时候首先可以询问具体操作人记录时间点,这个时候可以借助mysql自带的binlog解析工具mysqlbinlog,具体位置在mysql安装目录**/mysql/bin/下)
第四步:通过mysqlbinlog工具命令查看数据库增删改查记录(必须切换到mysqlbinlog目录才有效)
例子1:查询2018-11-12 09:00:00到2018-11-13 20:00:00 数据库为 youxi 的操作日志,输入如下命令将数据写入到一个备用的txt文件中
mysqlbinlog --no-defaults --database=youxi --start-datetime="2018-11-12 09:00:00" --stop-datetime="2018-11-13 20:00:00" /data/mysql/mysql-bin.000015 > template_coupon_tb_product_category.txt
例子2:查询2018-11-12 09:00:00到2018-11-13 20:00:00 数据库为 youxi 的操作日志,并输出到屏幕上
mysqlbinlog --no-defaults --database=youxi --start-datetime="2018-11-12 09:00:00" --stop-datetime="2018-11-13 20:00:00" /data/mysql/mysql-bin.000015 |more
例子3:查询2018-11-12 09:00:00到2018-11-13 20:00:00 数据库为 youxi 的操作日志,并且过滤出 只包括 template_coupon_tb_product_category 表数据的操作记录 ,输入如下命令将数据写入到一个备用的txt文件中
mysqlbinlog --no-defaults --database=youxi --start-datetime="2018-11-12 09:00:00" --stop-datetime="2018-11-13 20:00:00" /data/mysql/mysql-bin.000015 | grep template_coupon_tb_product_category > template_coupon_tb_product_category.txt
mysqlbinlog 命令的语法格式:
mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名
--------------------------------------------------------
常用参数选项解释:
--start-position=875 起始pos点
--stop-position=954 结束pos点
--start-datetime="2016-9-25 22:01:08" 起始时间点
--stop-datetime="2019-9-25 22:09:46" 结束时间点
--database=zyyshop 指定只恢复zyyshop数据库(一台主机上往往有多个数据库,只限本地log日志)
--------------------------------------------------------
不常用选项:
-u --user=name 连接到远程主机的用户名
-p --password[=name] 连接到远程主机的密码
-h --host=name 从远程主机上获取binlog日志
--read-from-remote-server 从某个MySQL服务器上读取binlog日志
第五步:利用第四步输出的sql语句或者txt文本进行语句过滤,重新插入数据或更新数据
相关文章
- MySQL数据库备份:在Linux中快速实现(linux备份mysql数据库)
- MySQL数据比较:简化数据比对任务(mysql数据比对工具)
- 解密MySQL 13位时间戳(mysql时间戳13位)
- MySQL:使用序列生成器轻松实现自增ID(mysql序列生成器)
- 使用JSP与MySQL实现数据库连接(jsp和mysql连接)
- 长MySQL外键自增长:解决数据一致性问题(mysql外键自增)
- 快速安装MySQL: 从tar包快速搞定(tar包安装mysql)
- MySQL查看数据库结构:深入结构掌握(mysql查看数据库结构)
- 解读MySQL中的二进制数据(mysql二进制数据)
- MySQL存储和处理二进制数据(mysql二进制数据)
- MySQL如何处理二进制数据(mysql二进制数据)
- 数据MySQL中操作:添加或更新数据(mysql添加或更新)
- 快速导入MySQL数据库文件的方法(mysql导入数据库文件)
- MySQL中利用行函数实现数据快速计算(mysql行函数)
- MySQL快捷清理:批量删除数据法(mysql批量删除数据)
- MySQL数据库受到攻击,数据不再安全!(mysql数据库攻击)
- 轻松搬家:使用MySQL迁移工具快速迁移数据(mysql迁移工具)
- MySQL查询:获取最前面的100条记录(mysql查询前100条数据)
- 深入探讨MySQL中null与1的关系(mysql中null与1)
- MySQL中的Alias如何为列或表取别名(mysql 中alias)
- 深度解析如何进行 MySQL 两表数据对比(mysql两表数据对比)
- addl快速连接MySQL即学即用(addl连接mysql)
- 用CMD连接MySQL数据库的快速指南(cmd上链接mysql)
- 适配器2019年MySQL 版本下载和适配解决方案(2019版mysql下载)
- MySQL插入数据始终不成功,该如何处理(mysql一直插入数据)
- MySQL同步异常,疑似数据不一致,及时报警(mysql不同步了 报警)
- 简单易懂的MySQL Yum源安装教程(mysql yum源安装)