10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 从本手册中摘录

4.6.2 innochecksum -离线InnoDB文件校验工具

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

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

    在这个例子中,innodb校验和算法:

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

    在这个例子中,crc32校验和算法:

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

    以下条件适用:

    • 如果不指定- 检查选项,innochecksum验证对innodbcrc32没有任何

    • 如果您指定没有任何选项,仅由生成的校验和没有任何是允许的。

    • 如果您指定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时获取排他锁——写选择使用。

    在本例中,acrc32校验和是写作的tab1.ibd.

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

    在本例中,acrc32将重写校验和以替换无效的校验和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

    将表空间中每个页的页类型信息转储到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
  • -选择。

    指定-从标准输入读取的选项。如果是-读取标准是期待,innochecksum印刷innochecksum使用信息表明-选择是省略。示例用法:

    猫t1。Ibd | innochecksum -

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