故障分析 | MySQL 数据”丢失”事件之 binlog 解析应用一则

故障分析 | MySQL 数据”丢失”事件之 binlog 解析应用一则,第1张

备注:考虑信息敏感性,以下分析场景测试环境模拟,相关数据做以下说明

发现了一些端倪,在mysql-bin.000004中有对该表的2次truncate *** 作,等等,好像发现了什么,那条丢失的数据也是在这个mysql-bin.000004文件中,梳理下逻辑,难道那条记录在2次truncate之间,于是单独对这个binlog做详细解析,得到以下信息

到此基本了解了这条记录为何会诡异丢失了 ,与客户确认跑批灌数据的逻辑,了解到会对该表做truncate,但由于 误 *** 作 ,在跑批开始后,又触发了一轮truncate行为,导致已经插入到该表的部分数据再次被清理了,也就导致了在解析binlog时部分记录丢失了,但并未观测到有删除的行为,而是被truncate方式清理.

备注 :虽然binlog记录的信息足够多,但当故障原因定位后,由于其并未记录 对该 *** 作的IP及用户 信息,如果不开审计,也只能知道发生了该行为,但无法具体定位触发该行为的"人".

$conn

=

@mysql_connect

("localhost","admin","aaaa")

or

die

("连接主机失败")

$db

=

mysql_select_db("user",$conn)

$sql

=

"select

*

from

表名

where

user='admin'

"

mysql_query

("set

names

gbk")

$result

=

mysql_query($sql,$db)

$result

即为你要的结果数据。

你测试看对不对吧。

sql文件如果是完整的话, 去MYSQL命令行 use 库名source sql文件绝对路径,这样试试. 注意,这样是执行整个SQL文件的,如果你只是要恢复某一部分的话,估计你要打开SQL文件,把那部分复制出来重新存放一个文件


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6172455.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存