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——verbose——log=/var/lib/mysql/test/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——count ../data/test/tab1.ibd
——开始页面=
,全国矿工工会
- s
全国矿工工会
从这一页开始。使用示例:
/data/test/tab1.ibd . Innochecksum——start-page=600 .
或者:
/data/test/tab1.ibd . Innochecksum -s 600 .
——结束页=
,全国矿工工会
- e
全国矿工工会
到此页码结束。使用示例:
Innochecksum——end-page=700 ../data/test/tab1.ibd
或者:
Innochecksum——p 700 ../data/test/tab1.ibd
——页面=
,全国矿工工会
- p
全国矿工工会
只检查这个页码。使用示例:
Innochecksum——page=701 ../data/test/tab1.ibd
——严格检测
,- c
指定严格的校验和算法。选项包括
innodb
,crc32
,没有一个
.在本例中,
innodb
校验和算法:Innochecksum——strict-check=innodb ../data/test/tab1.ibd
在本例中,
crc32
校验和算法:/data/test/tab1.ibd . innochecksum -C crc32 .
以下条件适用:
如果没有指定
——严格检测
选项,innochecksum验证对innodb
,crc32
而且没有一个
.如果您指定
没有一个
选项生成的校验和没有一个
是允许的。如果您指定
innodb
选项生成的校验和innodb
是允许的。如果您指定
crc32
选项生成的校验和crc32
是允许的。
——没有检查
,- n
重写校验和时忽略校验和验证。选项只能与innochecksum
——写
选择。如果——写
选项未指定,innochecksum终止。在本例中,an
innodb
校验和被重写以替换无效的校验和:innodb ../data/test/tab1.ibd ./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 ../data/test/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 to_free, 0 to_purge, 0准备,0其他
——page-type-dump
,- d
将表空间中每个页的页类型信息转储为
stderr
或stdout
.使用示例:Innochecksum——page-type-dump=/tmp/a.txt ../data/test/tab1.ibd .txt ./data/test/tab1.ibd .txt
——日志
,- l
的日志输出innochecksum工具。必须提供日志文件名。日志输出包含每个表空间页的校验和值。对于未压缩的表,还提供了LSN值。的
——日志
取代了——调试
选项,在早期版本中可用。使用示例:Innochecksum——log=/tmp/log.txt ../data/test/tab1.ibd . log=/tmp/log.txt .
或者:
Innochecksum -l /tmp/log.txt ../data/test/tab1.ibd .txt
指定
-
选项从标准输入读取。如果-
选项在以下情况下缺失”从标准中读取”预计,innochecksum打印innochecksum的使用信息”-”选项被省略。示例用法:猫t1。Ibd | innochecksum -
在这个例子中,innochecksum写
crc32
校验和算法a.ibd
不变原t1.ibd
文件。猫t1。Ibd | innochecksum——write=crc32 - > a.b d . Ibd
对多个自定义表空间文件运行innochecksum
下面的示例演示如何运行innochecksum在多个用户定义的表空间文件(.ibd
文件)。
运行innochecksum对于所有表空间(.ibd
)的文件”测验”数据库:
/ * .ibd innochecksum。/数据/测试
运行innochecksum对于所有表空间文件(.ibd
文件),其文件名以”t”:
innochecksum。/数据/测试/ t * .ibd
运行innochecksum对于所有表空间文件(.ibd
文件)数据
目录:
/ * / * .ibd innochecksum。/数据
运行innochecksum在Windows操作系统上不支持在多个用户定义的表空间文件上使用用于cmd . exe不支持glob模式展开。在Windows系统上,innochecksum必须为每个用户定义的表空间文件单独运行。例如:
innochecksum.exe t1。Ibd innochecksum.exe t2。innochecksum.exe t3.ibd
在多个系统表空间文件上运行innochecksum
缺省情况下,只有一个InnoDB
系统表空间文件(ibdata1
),但是可以为system表空间定义多个文件innodb_data_file_path
选择。属性定义了system表空间的三个文件innodb_data_file_path
选择:ibdata1
,ibdata2
,ibdata3
.
./bin/mysqld——no-defaults——innodb-data-file-path="ibdata: 10m;ibdata: 10m;ibdata: 10m:autoextend"
这三个档案(ibdata1
,ibdata2
,ibdata3
)形成一个逻辑系统表空间。运行innochecksum在构成一个逻辑系统表空间的多个文件上,innochecksum要求-
选项从标准输入读取表空间文件,这相当于将多个文件连接起来创建一个文件。对于上面提供的示例,如下所示innochecksum命令将被使用:
Cat ibdata* | innochecksum -
请参阅innochecksum属性的详细信息”-”选择。
运行innochecksum在Windows操作系统上不支持在同一个表空间中的多个文件上,例如Windows shell用于cmd . exe不支持glob模式展开。在Windows系统上,innochecksum必须为每个系统表空间文件单独运行。例如:
Innochecksum.exe ibdata1 Innochecksum.exe ibdata2 Innochecksum.exe ibdata3