mysql update没有加where

sql里面没有加where 导致更新了所有数据(美团还是大众点评开源了一个binlog2sql的工具就是为了这个场景 原理还是binlog里面挖数据)  吐槽下 mysql确实没有O强大需要借助开源力量,可能这也是mysql比O强的一个方面

mysql是8.0版本  

 binlog_format                   | ROW     |

如果是statement形式的就不行了 或者你是mixed 但是事务隔离级别设置为RR也会有问题

关于binlg_format形式的问题state是记录sql 而row是记录的是哪条记录被修改


mysql> select * from aa;
+------+------+------+
| id   | name | mark |
+------+------+------+
|    1 | xixi | 50   |
|    2 | haha | 60   |
|    3 | lala | 40   |
|    4 | kaa  | 90   |
+------+------+------+

需求是<60 的更改为fail   update aa set mark='fail' where mark<60; 这个时候忘记写where 条件

mysql> select * from aa;
+------+------+------+
| id   | name | mark |
+------+------+------+
|    1 | xixi | fail |
|    2 | haha | fail |
|    3 | lala | fail |
|    4 | kaa  | fail |
+------+------+------+ 就变成这个结果

开始恢复  停掉前端所有应用 

 mysqlbinlog --no-defaults -vv --base64-output=DECODE-ROWS bin.000006 |grep -B 15 'fail' |more 

 

取出这里的信息 修改前的数据和修改后的数据都在这里 自己写脚本修改一下恢复就好了

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值