最近正准备写个工具来分析ibd文件中的数据分布,刚扫了下mysql5.7的代码,发现这个功能已经在5.7.2版本中完成了;在新版本中增强了innochecksum的一些分析功能,完全可以满足我的需求
相关代码见:
<a href="http://bazaar.launchpad.net/~mysql/mysql-server/5.7/revision/6065">http://bazaar.launchpad.net/~mysql/mysql-server/5.7/revision/6065</a>
http://bazaar.launchpad.net/~mysql/mysql-server/5.7/revision/5912
http://bazaar.launchpad.net/~mysql/mysql-server/5.7/revision/5841
http://bazaar.launchpad.net/~mysql/mysql-server/5.7/revision/5684
唯一的缺点就是:文件不可以打开!换句话说,可能需要关闭实例才能使用如下功能!!!
以下列出了几个感兴趣的命令,具体的可以参考文档!
.
输出ibd中总的page数:
可以指定checksum的算法(crc32/innodb/none):
指定–no-check –write 重写无效的page checksum值 ,也可以为–write指定值innodb/crc32/none 来写入page中指定的值 (这应该属于危险操作)
.
使用–page-type-summary输出各种page类型的个数:
指定 –page-type-dump则将每个page的detail都输出到指定文件中
指定–log输出每个page的checksum值
另外之前一直无法支持的压缩表checksum的问题也得到了解决,和正常的ibd文件一样解析