innochecksum打印的校验和InnoDB
文件。这个工具读了一个InnoDB
表空间文件,计算每个页面的校验和,比较计算的校验和和存储的校验和,并报告不匹配,这表明损坏的页面。最初开发它是为了在断电后加速验证表空间文件的完整性,但也可以在文件复制后使用。因为校验和不匹配InnoDB
要有意关闭正在运行的服务器,最好使用这个工具,而不是等待生产中的服务器遇到损坏的页面。
innochecksum不能用于服务器已经打开的表空间文件。对于这样的文件,您应该使用检查表
检查表空间内的表。试图运行innochecksum在服务器已经拥有的表空间上,结果是无法锁定文件错误。
如果发现校验和不匹配,从备份中恢复表空间或启动服务器并尝试使用, mysqldump在表空间中备份表中的备份。
调用innochecksum是这样的:
innochecksum [选项]file_name
innochecksum选项
innochecksum支持以下选项。有关引用页码的选项,则该数字基于零。
- 帮助
,-?
显示命令行帮助。使用示例:
innochecksum——帮助
——信息
,-我
同义词
- 帮助
.显示命令行帮助。使用示例:innochecksum --info.
——版本
,- v
显示版本信息。使用示例:
innochecksum——版本
——详细
,- v
冗长模式;每隔五秒将进度指示器打印到日志文件中。为了打印进度指示,必须使用日志文件使用
——日志选项
.打开详细的
运行模式:innochecksum——详细
关闭verbose模式,执行命令:
innochecksum - verbose = false
的
——详细
选项,- 日志
选项可以同时指定。例如:innochecksum——详细日志= / var / lib / mysql /测试/ logtest.txt
您可以通过以下方式查找日志文件中的进度指标信息。
Cat ./logtest.txt | grep -i "ok "
日志文件中的进度指示信息如下所示:
OKE:14.537%DOPLE:23.568%DOPLE:32.379%DOPLE:39.648%DOPE:48.789%完成Page 33023好的:56.828%完成页面37951好的:65.308%完成:75.881%完成:85.022%完成:93.722%完成......
——数
,- c
打印文件中页数的计数并退出。使用示例:
innochecksum . . /数据/测试/ tab1.ibd——计数
——开始页面=
,数字
- s
数字
从这个页码开始。使用示例:
innochecksum——开始页面= 600 . . /数据/测试/ tab1.ibd
或者:
Innochecksum -s 600 ../data/test/tab1.ibd
——结束页=
,数字
- 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
校验和算法:innochecksum -C crc32 ../data/test/tab1.ibd
以下条件适用:
如果不指定
- 检查
选项,innochecksum验证对innodb
,crc32
和没有任何
.如果您指定
没有任何
选项,仅由生成的校验和没有任何
是允许的。如果您指定
innodb
选项,仅由生成的校验和innodb
是允许的。如果您指定
crc32
选项,仅由生成的校验和crc32
是允许的。
——没有检查
,- n
重写校验和时忽略校验和验证。此选项只能与innochecksum
——写
选择。如果是——写
选项未指定,innochecksum终止。在这个例子中,一个
innodb
校验和被重写以替换无效的校验和:Innochecksum——no-check——写innodb ../data/test/tab1.ibd
——allow-mismatches
,——一个
之前允许的校验和不匹配的最大数目innochecksum终止。默认设置为0。如果
——allow-mismatches =
N
, 在哪里
,N
> = 0N
不匹配是允许的innochecksum终止
.当N
+1——allow-mismatches
设置为0,innochecksum终止第一个校验和不匹配。在这个例子中,现有的
innodb
校验和被重写为设置——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.
:Innochecksum -w crc32 ../data/test/tab1.ibd
在本例中,a
crc32
将重写校验和以替换无效的校验和crc32
校验和:Innochecksum——no-check——写入crc32 ../data/test/tab1.ibd
- - 页 - 类型摘要
,- s
在表空间中显示每个页面类型的计数。使用示例:
innochecksum——page-type-summary . . /数据/测试/ tab1.ibd
样本输出
- - 页 - 类型摘要
:文件:: ../ data / test / tab1.ibd ================ page类型摘要============== #page_count page_type =============================================== 2索引页0undo log page 1 inode page 0插入缓冲区免费列表Page 2新分配的Page 1插入缓冲区位图0系统Page 0事务系统Page 1文件空间标题0范围描述符Page 0 Blob Page 0压缩Blob Page 0其他类型的页面===============================================其他信息:撤消页面类型:0 insert, 0 update, 0 other Undo page state: 0 active, 0 cached, 0 to_free, 0 to_purge, 0 prepared, 0 other
——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
指定
-
从标准输入读取的选项。如果是-
当”读取标准”是期待,innochecksum印刷innochecksum使用信息表明”-”选择是省略。示例用法:猫t1。Ibd | innochecksum -
在这个例子中,innochecksum写
crc32
校验和算法a.ibd
不改变原稿t1.ibd.
文件。猫t1。——write=crc32 - > a.ibd
在多个用户定义的表空间文件上运行Innochecksum
下面的例子演示了如何运行innochecksum在多个用户定义的表空间文件(的.ibd
文件)。
运行innochecksum所有表空间(的.ibd
)的档案。”测试”数据库:
/ * .ibd innochecksum。/数据/测试
运行innochecksum对于所有表空间文件(的.ibd
文件),文件名以”t”:
innochecksum。/数据/测试/ t * .ibd
运行innochecksum对于所有表空间文件(的.ibd
文件)在数据
目录:
/ * / * .ibd innochecksum。/数据
运行innochecksum在多个用户定义的表空间文件上不支持在Windows操作系统上,如Windows shell,例如cmd.exe.不支持全局模式扩展。在Windows系统上,innochecksum必须为每个用户定义的表空间文件单独运行。例如:
innochecksum.exe t1.ibd innochecksum.exe t2.ibd innochecksum.exe t3.ibd
在多个系统表空间文件上运行innochecksum
缺省情况下,只有一个InnoDB
系统表空间文件(IBData1.
),但是可以使用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需要这一点-
选项可从标准输入中读取表空间文件,这相当于连接多个文件以创建一个文件。对于上面提供的示例,以下innochecksumCommand将被使用:
Cat ibdata* | innochecksum
指的是innochecksum有关更多信息的选项信息”-”选择。
运行innochecksum在Windows操作系统上不支持同一表格中的多个文件,作为Windows Shell,如cmd.exe.不支持全局模式扩展。在Windows系统上,innochecksum必须为每个系统表空间文件单独运行。例如:
Innochecksum.exe ibdata1 Innochecksum.exe ibdata2 Innochecksum.exe