innochecksum打印的校验和InnoDB
文件。此工具读取InnoDB
表空间文件,计算每个页的校验和,将计算的校验和与存储的校验和进行比较,并报告不匹配,这表明页已损坏。最初开发它是为了在断电后加速验证表空间文件的完整性,但也可以在文件复制后使用。因为校验和不匹配导致InnoDB
要有意关闭正在运行的服务器,最好使用此工具,而不是等待生产服务器遇到损坏的页面。
innochecksum不能在服务器已打开的表空间文件上使用。对于这样的文件,您应该使用检查表
检查表空间中的表。试图运行innochecksum在服务器已经打开的表空间上”无法锁定文件”错误。
如果发现校验和不匹配,通常会从备份中恢复表空间,或者启动服务器并尝试使用, mysqldump对表空间中的表进行备份。
调用innochecksum是这样的:
innochecksum [选项]file_name
innochecksum选项
innochecksum支持以下选项。对于引用页码的选项,编号是从零开始的。
——帮助
,-?
显示命令行帮助。使用示例:
innochecksum——帮助
——信息
,-我
的同义词
——帮助
.显示命令行帮助。使用示例:innochecksum——信息
——版本
,- v
显示版本信息。使用示例:
innochecksum——版本
——详细
,- v
详细模式;每5秒向日志文件打印一个进度指示器。方法指定日志文件,以便打印进度指示器
——日志选项
.打开详细的
运行模式:innochecksum——详细
要关闭verbose模式,运行命令:
innochecksum——verbose = FALSE
的
——详细
选项,——日志
选项可以同时指定。例如:innochecksum——详细日志= / var / lib / mysql /测试/ logtest.txt
您可以通过以下方法查找日志文件中的进度指标信息。
Cat ./logtest.txt | grep -i "ok "
日志文件中的进度指标信息如下所示:
页1663好:2.863%已完成页8447好:14.537%已完成页13695好:23.568%已完成页18815好:32.379%已完成页23039好:39.648%已完成页28351好:48.789%已完成页33023好:56.828%已完成页37951好:65.308%已完成页44095好:75.881%已完成页49407好:85.022%已完成页54463好:93.722%已完成…
——数
,- c
打印文件中页数的计数并退出。使用示例:
innochecksum . . /数据/测试/ tab1.ibd——计数
——开始页面=
,全国矿工工会
- s
全国矿工工会
从这个页码开始。使用示例:
innochecksum——开始页面= 600 . . /数据/测试/ tab1.ibd
或者:
/data/test/tab1.ibd . Innochecksum -s 600 .
——结束页=
,全国矿工工会
- e
全国矿工工会
到此页码结束。使用示例:
innochecksum——结束页= 700 . . /数据/测试/ tab1.ibd
或者:
Innochecksum——p 700 ../data/test/tab1.ibd
——页面=
,全国矿工工会
- p
全国矿工工会
只检查这个页码。使用示例:
innochecksum——页面= 701 . . /数据/测试/ tab1.ibd
——严格检测
,- c
指定严格的校验和算法。选项包括
innodb
,crc32
,没有一个
.在本例中,
innodb
指定校验和算法:innochecksum——严格检测= innodb . . /数据/测试/ tab1.ibd
在本例中,
crc32
指定校验和算法:/data/test/tab1.ibd . innochecksum -C crc32 .
适用于以下条件:
如果不指定
——严格检测
选项,innochecksum验证对innodb
,crc32
而且没有一个
.如果指定
没有一个
选项生成的校验和没有一个
是允许的。如果指定
innodb
选项生成的校验和innodb
是允许的。如果指定
crc32
选项生成的校验和crc32
是允许的。
——没有检查
,- n
重写校验和时忽略校验和验证。此选项只能与innochecksum
——写
选择。如果——写
选项未指定,innochecksum终止。在这个例子中,an
innodb
校验和被重写以替换无效的校验和:Innochecksum——no-check——write innodb ./data/test/tab1.ibd
——allow-mismatches
,——一个
以前允许的校验和不匹配的最大数目innochecksum终止。默认设置为0。如果
——allow-mismatches =
N
,在那里
,N
> = 0N
不匹配是允许的innochecksum终止在
.当N
+1——allow-mismatches
设为0,innochecksum在第一次校验和不匹配时终止。在本例中,现有的
innodb
校验和被重写为set——allow-mismatches
为1。Innochecksum——allow-mismatches=1——write innodb ../data/test/tab1.ibd
与
——allow-mismatches
如果设置为1,则在具有1000页的文件的第600页和第700页出现不匹配,则更新第0-599页和第601-699页的校验和。因为——allow-mismatches
设置为1时,校验和容忍第一次不匹配,并在第二次不匹配时终止,保持第600页和第700-999页不变。——写=
,的名字
- w
全国矿工工会
重写一个校验和。重写无效校验和时,
——没有检查
选项必须与——写
选择。的——没有检查
选项告诉innochecksum忽略对无效校验和的验证。您不必指定——没有检查
选项,如果当前校验和有效。类时必须指定算法
——写
选择。的可能值——写
选项有:innodb
:在软件中计算的校验和,使用原始算法InnoDB
.crc32
方法计算的校验和crc32
算法,可能需要硬件辅助。没有一个
:常数。
的
——写
选项将整个页面重写到磁盘。如果新的校验和与现有的校验和相同,则不将新的校验和写入磁盘,以最小化I/O。innochecksum时获取排他锁
——写
选择使用。在这个例子中,a
crc32
的校验和tab1.ibd
:/data/test/tab1.ibd . Innochecksum -w crc32 .
在这个例子中,a
crc32
重写校验和以替换无效校验和crc32
校验和:Innochecksum——no-check——write crc32 ./data/test/tab1.ibd
显示表空间中每种页面类型的计数。使用示例:
innochecksum——page-type-summary . . /数据/测试/ tab1.ibd
样例输出
——page-type-summary
:文件::. . /数据/测试/ tab1。炎症性肠病 ================ 页面类型总结 ============== # PAGE_COUNT PAGE_TYPE =============================================== 2索引页0 Undo日志页面1 Inode 0插入缓冲空闲列表页面2刚分配页面1插入缓冲图0系统事务系统第1页文件空间头0程度描述符页0 BLOB页面压缩BLOB 0 0其他类型的页面 =============================================== 附加信息:撤销页面类型:撤销页面状态:0活动,0缓存,0释放,0清除,0准备,0其他
——page-type-dump
,- d
将表空间中每个页的页类型信息转储到
stderr
或stdout
.使用示例:innochecksum——page-type-dump = / tmp / a.txt . . /数据/测试/ tab1.ibd
——日志
,- l
的日志输出innochecksum工具。必须提供日志文件名。日志输出包含每个表空间页的校验和值。对于未压缩的表,还提供了LSN值。的
——日志
取代了——调试
选项,该选项在早期版本中可用。使用示例:innochecksum——日志= / tmp / log.txt . . /数据/测试/ tab1.ibd
或者:
Innochecksum -l /tmp/log.txt ../data/test/tab1.ibd .txt . Innochecksum -l /tmp/log.txt
指定
-
选项从标准输入读取。如果-
选项在以下情况下丢失”从标准中读取”预计,innochecksum打印innochecksum的使用信息表明”-”选择是省略。示例用法:猫t1。Ibd | innochecksum -
在这个例子中,innochecksum写
crc32
校验和算法a.ibd
不改变原来的t1.ibd
文件。猫t1。Ibd | innochecksum——write=crc32 - > a.b Ibd
在多个自定义表空间文件上运行innochecksum
下面的示例演示如何运行innochecksum在多个用户定义的表空间文件(.ibd
文件)。
运行innochecksum对于所有表空间(.ibd
)的文件”测验”数据库:
/ * .ibd innochecksum。/数据/测试
运行innochecksum对于所有表空间文件(.ibd
文件),其文件名以”t”:
innochecksum。/数据/测试/ t * .ibd
运行innochecksum对于所有表空间文件(.ibd
文件)数据
目录:
/ * / * .ibd innochecksum。/数据
运行innochecksum在Windows操作系统上不支持on多个用户定义的表空间文件,例如Windows shell用于cmd . exe不支持glob模式展开。在Windows系统上,innochecksum必须为每个用户定义的表空间文件单独运行。例如:
innochecksum.exe t1。ibd innochecksum.exe t2。ibd innochecksum.exe t3.ibd
在多个系统表空间文件上运行innochecksum
缺省情况下,只有一个InnoDB
系统表空间文件(ibdata1
方法为system表空间定义多个文件innodb_data_file_path
选择。在下面的示例中,系统表空间的三个文件使用innodb_data_file_path
选择:ibdata1
,ibdata2
,ibdata3
.
. / bin / mysqld——已innodb-data-file-path =“ibdata1:10M; ibdata2:10M ibdata3:10M: autoextend”
这三个文件(ibdata1
,ibdata2
,ibdata3
)形成一个逻辑系统表空间。运行innochecksum在构成一个逻辑系统表空间的多个文件上,innochecksum要求-
选项从标准输入读入表空间文件,这相当于连接多个文件以创建单个文件。对于上面提供的示例,请执行以下操作innochecksum命令将被使用:
Cat ibdata* | innochecksum -
指的是innochecksum选项的详细信息”-”选择。
运行innochecksum在Windows操作系统上不支持对同一个表空间中的多个文件执行用于cmd . exe不支持glob模式展开。在Windows系统上,innochecksum必须为每个系统表空间文件单独运行。例如:
Innochecksum.exe ibdata1 Innochecksum.exe ibdata2