问题背景: 我家运营哥哥向我反映了一个看起来很反常的数据显示问题。简单来说就是,用户因捣乱被封号(几个小时后会自动解封)。奇怪的是,用户方已经自动解封,但是管理平台仍然显示 封号 状态。
怀疑1: 解封sql 执行失败, 经过日志比对,解封sql 成功执行。
怀疑2: 被后执行的 sql 覆盖了数据, 查代码……,好多,还是算了,去查binlog 吧。
找到binlog 的位置
vi /etc/my.cnf
去到log-bin位置,找到今天所在的binlog 日志文件。然后
vi 日志文件
然后轻轻地敲下回车键。
哇~,我错了,我再也不敢了
还是找更加专业的工具吧, 有个工具叫 mysqlbinlog
whereis mysqlbinlog
那直接用就行了
mysqlbinlog 日志文件 > temp.log
vi temp.log
查看一番之后,问题实锤,确实是新数据被就数据覆盖了。
问题原因:
主流程:数据第一次加载的到对象A.
进入分支进行判断,问题在这里,数据第二次加载得到对象B,数据更新(这里更新的B 和 A 不是同一个对象,数据异常了),分支结束。
主流程各种操作之后,进行数据更新(成功把对象B更新的数据盖掉)。