10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

MySQL 5.7参考手册/.../ innochecksum -离线InnoDB文件校验和实用程序

4.6.1 innochecksum -离线InnoDB文件校验和实用程序

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

    指定严格的校验和算法。选项包括innodbcrc32,没有一个

    在本例中,innodb指定校验和算法:

    innochecksum——严格检测= innodb . . /数据/测试/ tab1.ibd

    在本例中,crc32指定校验和算法:

    /data/test/tab1.ibd . innochecksum -C crc32 .

    适用于以下条件:

    • 如果不指定——严格检测选项,innochecksum验证对innodbcrc32而且没有一个

    • 如果指定没有一个选项生成的校验和没有一个是允许的。

    • 如果指定innodb选项生成的校验和innodb是允许的。

    • 如果指定crc32选项生成的校验和crc32是允许的。

  • ——没有检查- n

    重写校验和时忽略校验和验证。此选项只能与innochecksum——写选择。如果——写选项未指定,innochecksum终止。

    在这个例子中,aninnodb校验和被重写以替换无效的校验和:

    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时获取排他锁——写选择使用。

    在这个例子中,acrc32的校验和tab1.ibd

    /data/test/tab1.ibd . Innochecksum -w crc32 .

    在这个例子中,acrc32重写校验和以替换无效校验和crc32校验和:

    Innochecksum——no-check——write crc32 ./data/test/tab1.ibd
  • ——page-type-summary- s

    显示表空间中每种页面类型的计数。使用示例:

    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

    将表空间中每个页的页类型信息转储到stderrstdout.使用示例:

    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 -

    在这个例子中,innochecksumcrc32校验和算法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选择:ibdata1ibdata2,ibdata3

. / bin / mysqld——已innodb-data-file-path =“ibdata1:10M; ibdata2:10M ibdata3:10M: autoextend”

这三个文件(ibdata1ibdata2,ibdata3)形成一个逻辑系统表空间。运行innochecksum在构成一个逻辑系统表空间的多个文件上,innochecksum要求-选项从标准输入读入表空间文件,这相当于连接多个文件以创建单个文件。对于上面提供的示例,请执行以下操作innochecksum命令将被使用:

Cat ibdata* | innochecksum -

指的是innochecksum选项的详细信息-选择。

请注意

运行innochecksum在Windows操作系统上不支持对同一个表空间中的多个文件执行用于cmd . exe不支持glob模式展开。在Windows系统上,innochecksum必须为每个系统表空间文件单独运行。例如:

Innochecksum.exe ibdata1 Innochecksum.exe ibdata2