专栏名称: Java大后端
专注分享Java后端技术,包括Spring Boot、Spring Cloud、MyBatis、MySQL、Dubbo、Zookeeper、ES、K8S、Docker、Redis、MQ、分布式、微服务等主流后端技术。
目录
相关文章推荐
上海本地宝  ·  外地户口也能申请!上海公租房房源上新! ·  3 天前  
春城晚报  ·  凌晨通报:29人失联!原因公布 ·  2 天前  
云南气象  ·  2月10-11日云南西北部有雨雪天气 ... ·  3 天前  
云南新闻网  ·  【行摄云南】“郁”见春城浪漫 ·  4 天前  
51好读  ›  专栏  ›  Java大后端

MySQL 误删数据?快速恢复指南来了!

Java大后端  · 公众号  ·  · 2021-03-24 13:30

正文

来源:cnblogs.com/-mrl/p/9959365.html

相信后端研发的同学在开发过程经常会遇到产品临时修改线上数据的需求,如果手法很稳那么很庆幸可以很快完成任务,很不幸某一天突然手一抖把表里的数据修改错误或者误删了,这个时候你会发现各种问题反馈接踵而来。

如果身边有BDA或者有这方面经验的同事那么可以很快解决这个问题,如果没有那么希望这篇文章可以帮到你。

第一步 :保证mysql已经开启binlog,查看命令:

查看binklog是否开启

show variables like '%log_bin%';

查看binlog存放日志文件目录(如下图,博主binlog目录为/data/mysql):

show variables like '%datadir%';
img

值为OFF,需开启,值为ON,已开启。

如果没有开启binlog,也没有预先生成回滚SQL,那可能真的无法快速回滚了。对存放重要业务数据的MySQL,强烈建议开启binlog。

第二步 :进入binlog文件目录,找出日志文件

img

第三步 :切换到mysqlbinlog目录(当线上数据出现错误的时候首先可以询问具体操作人记录时间点,这个时候可以借助mysql自带的binlog解析工具mysqlbinlog,具体位置在mysql安装目录**/mysql/bin/下)

img

第四步 :通过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
img
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文本进行语句过滤,重新插入数据或更新数据。


(完)


最近热文:
Spring Boot 缓存应用实践,看这篇就够了!
如果发现谁用 kill -9 关闭程序就开除!






请到「今天看啥」查看全文