MySQL必备工具第五位: mk-table-checksum
“数据偏差”是广泛存在于动态MySQL环境之中的一项重大问题。其实际含义为:从属数据未能与主体数据正确同步,发生的原因主要是从属数据端出现写入操作或者主体数据端执行了具备不确定性的查询指令。更糟糕的是,数据偏差情况很可能会被管理人员所忽视,直到爆发严重后果。Mk-table-checksum该登场了,这款工具的作用是在执行复杂、敏感的计算时,并行验证两个或多个列表中相关数据内容的一致性。
mk-table-checksum 能够分别为独立服务器及同步架构中的服务器提供帮助,这也是该工具最大的亮点所在。主体服务器与从属服务器之间的数据一致性在同步时必须得到充分的重视。由于主体数据变更在向从属数据同步的过程中存在一定程度的滞后(即延迟),因此直接读取服务器数据的方式无法严格保证信息的一致性,因为数据在同步完全结束之前,一直处于不断变化且并不完整的状态下。锁定列表、等等所有数据同步结束之后再进行验证当然行之有效,但这种方案意味着我们不得不同时中止服务器服务的正常响应。mk-table-checksum允许大家在不锁定列表的前提下,对主体及从属数据间的差异性进行验证(至于该技术的具体实现方法,请单击此处参阅工具文档)。http://www.maatkit.org/doc/mk-table-checksum.html
除了同步过程中的一致性,数据验证在其它一些方面也颇具意义,例如列表尺寸问题。MySQL的CHECKSUM TABLE指令对于小型列表来说完全够用,但规模庞大的列表往往需要“分块”处理,以避免在校验及计算的过程中CPU或内存发生长期锁死或超载的状况。
分块处理能够应付的第二个大问题是对数据一致性定期检查的要求。虽然数据偏差可能只是一次偶然的意外,但事实上遇到脸丑手黑的管理员,这类问题也许会反复发作。mk-table-checksum的设计初衷正是对列表进行定期检查,且整个验证过程分步分块、循序渐进,直到整套大规模列表处理完毕。这种持续性处理方式有助于管理员对数据偏差进行经常性校对。
下载地址: http://maatkit.org/get/mk-table-checksum
维护负责人: Daniel Nichter & Baron Schwartz
更多信息: http://maatkit.org/ | http://code.google.com/p/maatkit/