最近正準備寫個工具來分析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檔案一樣解析