MySQL 5.7 增强的离线分析工具innochecksum

最近正准备写个工具来分析ibd文件中的数据分布,刚扫了下MySQL5.7的代码,发现这个功能已经在5.7.2版本中完成了;在新版本中增强了innochecksum的一些分析功能,完全可以满足我的需求

文档见:http://dev.mysql.com/doc/refman/5.7/en/innochecksum.html

相关代码见:

http://bazaar.launchpad.net/~mysql/mysql-server/5.7/revision/6065

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数:

$sudo ./innochecksum --count ../data/sbtest/sbtest1.ibd
Number of pages:8192

可以指定checksum的算法(crc32/innodb/none):

$sudo ./innochecksum  --page=20 --strict-check=crc32  ../data/sbtest/sbtest1.ibd
Fail: page 20 invalid
Exceeded the maximum allowed checksum mismatch count::0

 

指定–no-check –write 重写无效的page checksum值 ,也可以为–write指定值innodb/crc32/none 来写入page中指定的值   (这应该属于危险操作)

                                                                           .

使用–page-type-summary输出各种page类型的个数:

$sudo ./innochecksum  --page-type-summary  ../data/sbtest/sbtest1.ibd 

File::../data/sbtest/sbtest1.ibd
================PAGE TYPE SUMMARY==============
#PAGE_COUNT     PAGE_TYPE
===============================================
    7383        Index page
       0        Undo log page
       1        Inode page
       0        Insert buffer free list page
     806        Freshly allocated page
       1        Insert buffer bitmap
       0        System page
       0        Transaction system page
       1        File Space Header
       0        Extent descriptor page
       0        BLOB page
       0        Compressed BLOB page
       0        Other type of page
===============================================
Additional information:
Undo page type: 0 insert, 0 update, 0 other
Undo page state: 0 active, 0 cached, 0 to_free, 0 to_purge, 0 prepared, 0 other

$sudo ./innochecksum  --page-type-summary  ../data/ibdata1           

File::../data/ibdata1
================PAGE TYPE SUMMARY==============
#PAGE_COUNT     PAGE_TYPE
===============================================
    1028        Index page
     408        Undo log page
       5        Inode page
     468        Insert buffer free list page
  325655        Freshly allocated page
       1        Insert buffer bitmap
     112        System page
       2        Transaction system page
       1        File Space Header
       0        Extent descriptor page
       0        BLOB page
       0        Compressed BLOB page
       0        Other type of page
===============================================
Additional information:
Undo page type: 102 insert, 306 update, 0 other
Undo page state: 0 active, 150 cached, 0 to_free, 199 to_purge, 0 prepared, 59 other

指定 –page-type-dump则将每个page的detail都输出到指定文件中

$sudo ./innochecksum --page-type-dump=a.log  ../data/sbtest/sbtest1.ibd

$head -n 20 a.log 

Filename::../data/sbtest/sbtest1.ibd
==============================================================================
        PAGE_NO         |               PAGE_TYPE                       |       EXTRA INFO
==============================================================================
#::       0             |               File Space Header               |       -
#::       1             |               Insert Buffer Bitmap            |       -
#::       2             |               Inode page                      |       -
#::       3             |               Index page                      |       index id=65, page level=2, No. of records=7, garbage=0, -
#::       4             |               Index page                      |       index id=66, page level=1, No. of records=518, garbage=102, -
#::       5             |               Index page                      |       index id=65, page level=0, No. of records=36, garbage=7696, -
#::       6             |               Index page                      |       index id=65, page level=0, No. of records=73, garbage=0, -
#::       7             |               Index page                      |       index id=65, page level=0, No. of records=73, garbage=0, -
#::       8             |               Index page                      |       index id=65, page level=0, No. of records=73, garbage=0, -
#::       9             |               Index page                      |       index id=65, page level=0, No. of records=73, garbage=0, -
#::      10             |               Index page                      |       index id=65, page level=0, No. of records=73, garbage=0, -
#::      11             |               Index page                      |       index id=65, page level=0, No. of records=73, garbage=0, -
#::      12             |               Index page                      |       index id=65, page level=0, No. of records=73, garbage=0, -
#::      13             |               Index page                      |       index id=65, page level=0, No. of records=73, garbage=0, -

指定–log输出每个page的checksum值

$sudo ./innochecksum --log=b.log  ../data/sbtest/sbtest1.ibd
$head -n 10 b.log
InnoDB File Checksum Utility.
Filename = ../data/sbtest/sbtest1.ibd
Innochecksum: checking pages in range 0 to 8191
page::0; log sequence number:first = 260537423; second = 260537423
page::0; old style : calculated = 3962072366; recorded = 3962072366
page::0; new style: calculated = 1038926020; crc32 = 1327342271; recorded = 1038926020
page::1; log sequence number:first = 261782093; second = 261782093
page::1; old style : calculated = 3860212858; recorded = 3860212858
page::1; new style: calculated = 1118813775; crc32 = 142105317; recorded = 1118813775
page::2; log sequence number:first = 92384856; second = 92384856

另外之前一直无法支持的压缩表checksum的问题也得到了解决,和正常的ibd文件一样解析

 

时间: 2024-12-02 16:34:14

MySQL 5.7 增强的离线分析工具innochecksum的相关文章

MySQL的日志分析工具

MySQL的性能从查看日志开始.硬件配置低常常导致这样的问题,但事实上大多数情况并不在这里.某些"慢"SQL阻塞了其他语句的执行,优化查询是第一步需要做的. "工欲善其事必先利其器",MySQL自身的一款mysqldumpslow 查询日志分析器,该工具不但陈旧,验证规范不准确.今天要说的是Percona 的工具pt-query-digest,它能够分析慢查询日志内容,生成查询报告,过滤,重放或传送一些查询语句至MySQL,PostgreSQL,memcached或

MySQL慢日志查询全解析:从参数、配置到分析工具

MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中.long_query_time的默认值为10,意思是运行10S以上的语句.   默认情况下,MySQL数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响.慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据

五款常用mysql slow log分析工具的比较分析_php技巧

启用 slow log 有两种启用方式:1, 在my.cnf 里 通过 log-slow-queries[=file_name] 2, 在mysqld进程启动时,指定--log-slow-queries[=file_name]选项 比较的五款常用工具 mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-log, mysqllogfilter mysqldumpslow, mysql官方提供的慢查询日志分析工具. 输出图表如下: 主要功能是, 

mysql slow log分析工具的比较

原文地址: http://developer.51cto.com/art/201309/410323_all.htm mysql 中的 slow log 是用来记录执行时间较长(超过 long_query_time 秒)的 sql 的一种日志工具.       启用 slow log       在 my.cnf 中设置 [mysqld]  slow_query_log=on  slow_query_log_file=mysql-slow  重启 MySQL 服务. 五款常用工具       m

MySQL数据库慢日志分析工具mysqlsla使用教程

mysqlsla是hackmysql.com推出的一款mysql的日志分析工具,功能非常强大. 数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等. 一.使用 mysqlsla -lt slow mysql-slow.log 或者 mysqlsla -lt slow mysql-slow.log -sf "+SELECT" -db dbName -top 10 -sort t_sum 参数意义 lt:表示日志类型,有slow, general, binary,

五款常用mysql slow log分析工具的比较

mysql管理工具 mysql slow log 是用来记录执行时间较长(超过long_query_time秒)的sql的一种日志工具. 启用 slow log 有两种启用方式: 1, 在my.cnf 里 通过 log-slow-queries[=file_name] 2, 在mysqld进程启动时,指定–log-slow-queries[=file_name]选项 比较的五款常用工具 mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-lo

.NET Visual Studio 代码性能分析工具_实用技巧

下面通过图文并茂的方式给大家介绍下,具体内容如下: 软件开发中的性能优化对程序员来说是一个非常重要的问题.一个小问题可能成为一个大的系统的瓶颈.但是对于程序员来说,通过自身去优化代码是十分困难的.幸运的是,有一些非常棒的工具可以帮助程序员进行代码分析和性能测试,从而大大简化程序员进行代码性能优化的过程.MSDN杂志2011年7月份曾发布主题为".NET代码分析工具和技术"的那一期,让广大程序员收获颇丰.四年过去之后,这些工具又进一步做出了很多改进,同时也出现了更多的选择.本文对当前主流

Cacti 0.8.7h发布 网络流量监测分析工具

Cacti是一款基于完整前端的RRDTool的http://www.aliyun.com/zixun/aggregation/10374.html">网络流量监测图形分析工具.它能够存储所有必要的信息来创建图表,并用MySQL数据库中的数据填充它们.前端是完整的PHP驱动,能够用于维护图表,数据源和数据库循环档案,Cacti也能处理数据收集.它还能够通过SNMP服务来创建MRTG网络流量图形表. RRDtool定义 RRDtool是指Round Robin Database 工具(环状数据

可视化数据包分析工具-CapAnalysis

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://chenguang.blog.51cto.com/350944/1325742 可视化数据包分析工具-CapAnalysis 我们知道,Xplico是一个从pcap文件中解析出IP流量数据的工具,本文介绍又一款实用工具-CapAnalysis(可视化数据包分析工具),将比Xplico更加细致的分析功能,先别着急安装,下面我们首先了解Pcap包的基本结构,然后告诉你如何使用,最后是