曾经有个朋友怯怯问我:“是不是Mysql不稳定,有的时候提交的数据库会丢失?”说实话,复杂的场景Mysql有bug很正常,回滚提交这种场景还有bug,鬼相信吗?但朋友的确是办事靠谱的人,他不可能胡说。出于好奇,和他讨论并且实验了好久,终于解密问题,今天分享给大家。先说结论,朋友的这个问题不是Mysql的bug,而是他用的Navicat工具把他给欺骗了。
说起来,朋友的场景非常典型,主要是分为如下四个步骤:

整个运行步骤,没有任何错误,但的确有一定概率,数据就是没有提交成功。看到这里大家可能会问:“你是在变魔术吗?怎么可能没有任何错误的情况下,数据没有提交成功?”其实这个魔术的关键就发生在第四步。为了清晰的解密,我们在做完第三步的时候,执行一下咱们的步骤3.5。如下图:

我们可以看出刚刚运行完3.5步骤的时候,交易ID为24。这是时候如果网络断掉,或者各种未知原因造成你在提交之前,窗口连接的Mysql数据库断联了,问题就来了。我们可以用DBCS的工具进行模拟,点击“监控管理”菜单,然后定位到id=24的连接,然后“结束进程”,如下图:

结束进程后,执行步骤4,清晰的提示交易成功,整个没有任何错误。如下图:

看看你的数据吧,根本没有插入成功,再看看交易ID已经变成27了。

对于朋友来说,由于数据库断联其实数据并没有提交成功,但整个过程出现的问题Navicat就不告诉你,就不告诉你,就不告诉你!!!!相同的步骤,如果你使用DBCS,他会清晰的提示你网络已经断开,是否需求重连,这样你就明白数据为啥会丢失了。如下图:

说实话每次写和国外友商对比,我压力都比较大。因为很多国内用户看这些国外软件如初恋,其实人家看你如韭菜。从你电脑上弄点证据,然后发律师函的操作极为常见。贱不贱啊?还不如和我们这些国内土人,一起学习,一起交流,一起进步来得痛快,哈哈。最后,祝大家使用顺利
DESK倚天剑
DBCS屠龙刀
XGuard玄武之域
全名:全资源管控平台
继承DBCS和DESK运维功能于一体的Web平台版本,实现多人运维协作,并增加了管控和审计功能。平台不但能够补充替代传统堡垒机功能,而且克服了堡垒机“依赖客户端”、“审计粒度不够”、“不支持事中拦截”的三个安全性弊端。能够满足支持国内外20多种主流数据库、文件上传下载、操作系统远程接入等数据运维、开发需求的安全管控,并且可部署于信创环境,为政企单位提供一站式高安全数据管控解决方案。