今天又遇到了一个问题!!!
一个小姐姐跑来对我说:
用户的一行记录没有了!!!
要不重启下试试~~
显然小姐姐并不买账。。
登录数据库,喵了一下
还真少了一行!!!
看了下业务逻辑,也没问题
那数据怎么就无缘无故的消失了呢
小姐姐还在一旁瞪着大眼睛看着呢!!!
只有祭出我的大招了
看 binlog
既然数据删除了,肯定记录了删除相关的sql
mysqlbinlog -vv --base64-output=decode-rows mysql-bin.000906 | grep '`DELETE FROM `database`.`table`' -C10
查看 与之相关的上下10行
发现了
### DELETE FROM `database`.`table`
### WHERE
### @1=432 /* INT meta=0 nullable=0 is_null=0 */
### @2=31231 /* INT meta=0 nullable=0 is_null=0 */
### @3=0 /* TINYINT meta=0 nullable=0 is_null=0 */
### @4=1 /* INT meta=0 nullable=0 is_null=0 */
### @5=NULL /* INT meta=0 nullable=1 is_null=1 */
### @6='xxx' /* VARSTRING(90) meta=90 nullable=0 is_null=0 */
### @7='xxx' /* VARSTRING(36) meta=36 nullable=1 is_null=0 */
### @8=2 /* INT meta=0 nullable=0 is_null=0 */
### @9='xxx' /* DATETIME(0) meta=0 nullable=0 is_null=0 */
### @10='xxx' /* VARSTRING(180) meta=180 nullable=0 is_null=0 */
### @11='xxx' /* VARSTRING(765) meta=765 nullable=1 is_null=0 */
### @12=123 /* INT meta=0 nullable=0 is_null=0 */
### @13=111 /* INT meta=0 nullable=0 is_null=0 */
### @14=1574672884 /* TIMESTAMP(0) meta=0 nullable=0 is_null=0 */
### @15=271 /* INT meta=0 nullable=0 is_null=0 */
### @16=''
还真删除了
心里暗语,不知,哪个鳖孙干的好事!!
既然删除了
肯定业务逻辑有问题
在祭出神器PhpStorm
哇,好厉害
还有更厉害的呢~
少说话,快排查!!
排查发现
是一个时间差和硬删除的问题
用户支付完成后,还没有回调完成,此时用户又点击了取消按钮,就把数据给硬删除了
前人挖坑,后人填坑啊
解决方案
小姐姐,你重启好了没
业务没问题
可能跟你的电脑有关系
要升级了
才不是
你看我刷新下就好了
你又想诳我
哼
此时此刻,明白了
重启
刷新
是唯一的解决方案
嗯,对
ps: 没有小姐姐,只有bug