前两天客户打电话跟我讲,系统中有条订单数据丢失了,这让我很诧异。好好的数据怎么说丢,就丢了。此事必有蹊跷,于是今天我要一探究竟,看看数据是否录入数据库中去了。经过之前初步的排查,发现数据应该是被人为删除了。只是没有确凿的证据,下面我们将一步一步找到证据验证结果。
1.准备工作
- 登录Linux服务器
- cd到mysql的data目录
- 转存日志文件
- 下载日志文件
- 分析日志文件
2.细嚼慢咽,品味道
省略登录服务器的指令。
ps aux |grep mysql //查看mysql的进程状态
注意红线标记的地方datadir即:Path to the database root。
cd /alidata/server/mysql/data //cd到mysql data目录
ls(ll)指令查看data目录下文件信息 //cd到data目录后执行该指令
到此为止我们已经完美的查询到了mysql-bin文件,尔后我们对所需要的文件进行转存,代码如下:
//将000017文件转存到/root目录中,且重命名为log.log
mysqlbinlog ./mysql-bin.000017 > /root/log.log
下载log.log到本地盘,这样便于分析日志信息。由于这次使用的是SecureCRT工具所以,直接使用sftp进行文件传输。
sftp> lcd e:\
sftp> get log.log
过滤日志信息,系统是win10,所以打开命令行管理工具。使用findstr来过滤信息。
findstr "20161221120336472" e:\log.log //查询20161221120336472
真是太厉害了,您已经成功的找到了丢失的数据操作信息。
PS:mysql是个好玩的东西。祝大家圣诞节快乐!