天天看点

mysql checksum_MySQL之innochecksum初探

innochecksum是一个用于校验innodb表空间文件完整性的工具,这是一个官方自带的工具,关于它的介绍,可以查看MySQL官方文档,下文主要是通过innodb_ruby来对innochecksum --page-type-dump的结果进行解读。

关于innodb_ruby的使用,请稍移玉步,查看以前的拙文"使用innodb_ruby探查Innodb索引结构"

innnchecksum的使用限制:必须关闭mysqld进程,否则会在使用的时候提示“Unable to lock file”的错误。 个人认为innochecksum的使用非常受限,也只有在mysqld进程异常退出,或者服务器宕机的时候用于快速检查表空间文件的完整性。而innodb_ruby的使用范围更广。

innnchecksum在MySQL5.7之后,可选项比MySQL5.6稍多。

特别说明:本文使用的是MySQL5.7的innochecksum。

首先,看看MySQL5.6的innochecksum的选项

[[email protected] 10:38:36 /root]# /usr/local/mysql56/bin/innochecksum --version

InnoDB offlinefilechecksum utility./usr/local/mysql56/bin/innochecksum Ver 5.6.35, for linux-glibc2.5(x86_64)

[[email protected]:38:42 /root]# /usr/local/mysql56/bin/innochecksum --help

InnoDB offlinefilechecksum utility./usr/local/mysql56/bin/innochecksum Ver 5.6.35, for linux-glibc2.5(x86_64)

Copyright (c)2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

InnoDB offlinefilechecksum utility.

Usage:/usr/local/mysql56/bin/innochecksum [-c] [-s ] [-e ] [-p ] [-v] [-d]

-?, --help Displays this help and exits.-I, --info Synonym for --help.-V, --version Displays version information and exits.-v, --verbose Verbose (prints progress every 5seconds).-d, --debug Debug mode (prints checksums foreach page, implies

verbose).-c, --count Print the count of pages in the file.-s, --start-page=# Start on this page number (0based).-e, --end-page=# End at this page number (0based).-p, --page=# Check only this page (0based).

Variables (--variable-name=value)

and boolean options {FALSE|TRUE} Value (after reading options)--------------------------------- ----------------------------------------verbose FALSE

debug FALSE

count FALSE

start-page 0end-page 0page0

再看看MySQL5.7的innochecksum的选项

[[email protected] 10:39:43 /root]# /usr/local/mysql/bin/innochecksum --help/usr/local/mysql/bin/innochecksum Ver 5.7.17, for linux-glibc2.5(x86_64)

Copyright (c)2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

InnoDB offlinefilechecksum utility.

Usage:/usr/local/mysql/bin/innochecksum [-c] [-s ] [-e ] [-p ] [-v] [-a ] [-n] [-C ] [-w ] [-S] [-D ] [-l ] See http://dev.mysql.com/doc/refman/5.7/en/innochecksum.html for usage hints.

-?, --help Displays this help and exits.-I, --info Synonym for --help.-V, --version Displays version information and exits.-v, --verbose Verbose (prints progress every 5seconds).-c, --count Print the count of pages in the fileand exits.-s, --start-page=# Start on this page number (0based).-e, --end-page=# End at this page number (0based).-p, --page=# Check only this page (0based).-C, --strict-check=name

Specify the strict checksum algorithm by the user.-n, --no-check Ignore the checksum verification.-a, --allow-mismatches=#

Maximum checksum mismatch allowed.-w, --write=name Rewrite the checksum algorithm by the user.-S, --page-type-summary

Display a count of each page typeina tablespace.-D, --page-type-dump=name

Dump the page typeinfo for each page ina tablespace.-l, --log=name log output.

Variables (--variable-name=value)

and boolean options {FALSE|TRUE} Value (after reading options)--------------------------------- ----------------------------------------verbose FALSE

count FALSE

start-page 0end-page 0page0strict-check crc32

no-check FALSE

allow-mismatches 0

writecrc32

page-type-summary FALSE

page-type-dump (No default value)

log (No default value)

下面通过与innodb_ruby的比较来解读一下输出结果

步骤一、通过sysbench来插入1000条记录

# 创建数据库

[email protected]:mysql3306.sock [(none)]>show create database sbtest ;+----------+-----------------------------------------------------------------+

| Database | Create Database |

+----------+-----------------------------------------------------------------+

| sbtest | CREATE DATABASE `sbtest` |

+----------+-----------------------------------------------------------------+

1 row in set (0.02sec)

[email protected]:mysql3306.sock [sbtest]>show create table sbtest1 ;

+---------+-----------------------------------------------------------------------------------+

| Table | Create Table |

+---------+-----------------------------------------------------------------------------------+

| sbtest1 | CREATE TABLE `sbtest1` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`k` int(10) unsigned NOT NULL DEFAULT '0',

`c` char(120) NOT NULL DEFAULT '',

`pad` char(60) NOT NULL DEFAULT '',

PRIMARY KEY (`id`),

KEY `k_1` (`k`)

) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8 MAX_ROWS=1000000 |

+---------+-----------------------------------------------------------------------------------+

1 row in set (0.00 sec)

# 使用sysbench插入数据

[[email protected]:52:23 /opt/software/sysbench-0.4.12-1.1/sysbench]# sysbench --test=/opt/software/sysbench-0.4.12-1.1/sysbench/tests/db/oltp.lua --oltp-table-size=1000 --oltp-read-only=off --initg=on --numads=8 --max-requests=0 --oltp-dist-type=uniform --max-time=1800 --mysql-user=root --mysql-socket=/tmp/mysql3306.sock --mysql-password= --db-driver=mysql --mysql-table-engine=innodb --oltp-test-mode=complex prepare

sysbench0.5: multi-threaded system evaluation benchmark

# 检查插入记录

[[email protected]:56:18 /opt/software/sysbench-0.4.12-1.1/sysbench]# mysql -S /tmp/mysql3306.sock

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connectionid is 8Server version:5.7.17-log MySQL Community Server (GPL)

Copyright (c)2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type'help;' or '\h' for help. Type '\c' to clearthe current input statement.

[email protected]:mysql3306.sock [(none)]>use sbtest ;

Reading table informationforcompletion of table and column names

You can turn off this feature to get a quicker startup with-A

Database changed

[email protected]:mysql3306.sock [sbtest]>select count(1) from sbtest1 ;+----------+

| count(1) |

+----------+

| 1000 |

+----------+

1 row in set (0.00 sec)

步骤二、关闭mysqld进程

[[email protected] 10:52:23 /root]# /usr/local/mysql/bin/mysqladmin -S /tmp/mysql3306.sock shutdown

步骤三、输出innochecksum的结果

选项一、--count,此选项表明文件中共有多少个page

[[email protected] 16:06:55 /data/mysql/mysql3306/data/sbtest]# /usr/local/mysql/bin/innochecksum --count sbtest1.ibd

Number of pages:21 # 此项在innodb_ruby的space-page-type-regions中进行解读,也可以从innochecksum --page-type-dump中得到印证,使用的page是0~20,共21个page

选项二、--page-type-sumary

[[email protected] 16:02:09 /data/mysql/mysql3306/data/sbtest]# /usr/local/mysql/bin/innochecksum --page-type-summary sbtest1.ibd

File::sbtest1.ibd================PAGE TYPE SUMMARY==============#PAGE_COUNT PAGE_TYPE===============================================

17Index page # 此项在innodb_ruby的space-indexes中解释0Undo log page1Inode page0 Insert buffer freelist page1Freshly allocated page1Insert buffer bitmap0System page0Transaction system page1File Space Header0Extent descriptor page0BLOB page0Compressed BLOB page0Other type of page===============================================Additional information:

Undo page type:0 insert, 0 update, 0other

Undo page state:0 active, 0 cached, 0 to_free, 0 to_purge, 0 prepared, 0 other

选项三、--page-type-dump

[[email protected] 16:05:42 /data/mysql/mysql3306/data/sbtest]# /usr/local/mysql/bin/innochecksum --page-type-dump=/tmp/sbtest_dump.log sbtest1.ibd

[[email protected]:06:46 /data/mysql/mysql3306/data/sbtest]# more /tmp/sbtest_dump.log

Filename::sbtest1.ibd==============================================================================PAGE_NO| PAGE_TYPE |EXTRA INFO==============================================================================#::0 | File Space Header | -#::1 | Insert Buffer Bitmap | -#::2 | Inode page | -#::3 | Index page | index id=45, page level=1, No. of records=15, garbage=0, - # index id 和 page level在innodb_ruby的space-indexes中解读,No. of records 在innodb_ruby的page records中解读,garbage尚未能解读是什么#::4 | Index page | index id=46, page level=0, No. of records=1000, garbage=0, -#::5 | Index page | index id=45, page level=0, No. of records=36, garbage=7696, -#::6 | Index page | index id=45, page level=0, No. of records=73, garbage=0, -#::7 | Index page | index id=45, page level=0, No. of records=73, garbage=0, -#::8 | Index page | index id=45, page level=0, No. of records=73, garbage=0, -#::9 | Index page | index id=45, page level=0, No. of records=73, garbage=0, -#::10 | Index page | index id=45, page level=0, No. of records=73, garbage=0, -#::11 | Index page | index id=45, page level=0, No. of records=73, garbage=0, -#::12 | Index page | index id=45, page level=0, No. of records=73, garbage=0, -#::13 | Index page | index id=45, page level=0, No. of records=73, garbage=0, -#::14 | Index page | index id=45, page level=0, No. of records=73, garbage=0, -#::15 | Index page | index id=45, page level=0, No. of records=73, garbage=0, -#::16 | Index page | index id=45, page level=0, No. of records=73, garbage=0, -#::17 | Index page | index id=45, page level=0, No. of records=73, garbage=0, -#::18 | Index page | index id=45, page level=0, No. of records=73, garbage=0, -#::19 | Index page | index id=45, page level=0, No. of records=15, garbage=0, -#::20 | Freshly allocated page | -[[email protected]:06:55 /data/mysql/mysql3306/data/sbtest]#

注:这里的index page都是按照page num的顺序从小到大排列的(至少我的实验结果是这样的,实际情况不知道。使用innodb_space -s ibdata1 -T sbtest/sbtest1 -p 5 page-records得到的是36条记录,innodb_space -s ibdata1 -T sbtest/sbtest1 -p 19  page-records得到的是15条记录)

步骤四、使用innodb_ruby进行解读

选项一、space-indexes

[[email protected] 16:37:06 /data/mysql/mysql3306/data]# innodb_space -s ibdata1 -T sbtest/sbtest1 space-indexesidname root fseg used allocated fill_factor45 PRIMARY 3 internal 1 1 100.00%

45 PRIMARY 3 leaf 15 15 100.00%

46 k_1 4 internal 1 1 100.00%

46 k_1 4 leaf 0 0 0.00%

此项可以解释innochecksum --page-type-checksum中为什么得到了17个index pages,因为表sbtest1对应着2个索引,一个是主键索引,另外一个是二级索引。其中主键索引‘PRIMARY’共分配了16个page(1个非叶子节点,15个叶子节点,因为sbtest1是聚集索引组织表,索引叶子节点中也包含了真实的数据),二级索引‘k_1’分配了一个page,所以共占用了1+15+1=17个page。

从上面的结果还可以看出主键索引(‘Primary’)的索引ID是45,根结点是page 3,而且叶子节点与根节点并不是同一个节点,所以根节点的page level为1;二级索引(‘k_1’)的索引ID是46,根节点是page 4,而且此根节点也是叶子节点,所以索引ID46在innochecksum --page-type-dump中的结果只有page level = 0【叶子节点的page level是0,越是往上level值就越大】,并不包含page level = 1 的记录。

选项二、space-page-type-regions

[[email protected] 16:37:18 /data/mysql/mysql3306/data]# innodb_space -s ibdata1 -T sbtest/sbtest1 space-page-type-regions

start end count type0 0 1FSP_HDR1 1 1IBUF_BITMAP2 2 1INODE3 19 17INDEX20 20 1 FREE (ALLOCATED)

这里用于印证innochecksum中--count选项,sbtest1表空间文件共使用了21个page,start表示从第x个page开始,end表示到第x个page结束,count表示何种page类型使用了多少个page,type表示page类型。共使用了1+1+1+17+1 = 21。

选项三、-p pagenum page-records

[[email protected] 16:38:05 /data/mysql/mysql3306/data]# innodb_space -s ibdata1 -T sbtest/sbtest1 -p 3 page-records

Record125: (id=1) → #5Record138: (id=37) → #6Record151: (id=110) → #7Record164: (id=183) → #8Record177: (id=256) → #9Record190: (id=329) → #10Record203: (id=402) → #11Record216: (id=475) → #12Record229: (id=548) → #13Record242: (id=621) → #14Record255: (id=694) → #15Record268: (id=767) → #16Record281: (id=840) → #17Record294: (id=913) → #18Record307: (id=986) → #19

这里的15条记录对应这个15个叶子节点的page num(5~19),也对应着innochecksum中的No. of records,所以No. of records代表的就是page中包含的记录数。

补充:添加对page 5和page 19的innodb_space  page records解析

[[email protected] 16:42:56 /data/mysql/mysql3306/data]# innodb_space -s ibdata1 -T sbtest/sbtest1 -p 5 page-records

Record127: (id=1) → (k=500, c="08566691963-88624912351-16662227201-46648573979-64646226163-77505759394-75470094713-41097360717-15161106334-50535565977", pad="63188288836-92351140030-06390587585-66802097351-49282961843")

Record335: (id=2) → (k=503, c="95969429576-20587925969-20202408199-67602281819-18293380360-38184587501-73192830026-41693404212-56705243222-89212376805", pad="09512147864-77936258834-40901700703-13541171421-15205431759")

Record543: (id=3) → (k=329, c="26283585383-48610978532-72166636310-67148386979-89643583984-06169170732-23477134062-17788128188-73465768032-24619558652", pad="21979564480-87492594656-60524686334-78820761788-57684966682")

Record751: (id=4) → (k=504, c="57481185690-89398636500-16888148413-67987678267-15604944838-94210794401-18107184012-91338377776-83386272438-09451188763", pad="35227182905-15234265621-59793845249-15413569710-23749555118")

Record959: (id=5) → (k=496, c="29279855805-99348203463-85191104223-39587263726-81794340135-73817557808-54578801760-64404111877-55434439976-37212880746", pad="59222897263-22759023974-22020489960-93434521232-77981152534")

Record1167: (id=6) → (k=500, c="24267764271-42431022577-79399828403-34660685942-15614883401-01775912296-17834847270-24498656403-67162539148-21266176221", pad="26472102213-44313108032-85929810653-63595461233-99754685588")

Record1375: (id=7) → (k=325, c="75769514803-27086227718-38612213700-37972984756-05033716175-01596446901-14887935702-82254196675-91092890141-99940009825", pad="01920094826-30050572228-27293124892-55703762324-88111796380")

Record1583: (id=8) → (k=499, c="82571936845-31830426410-85662298479-28456275464-64339136268-26186841165-94168712814-56389105006-66969794071-60071049942", pad="13152283289-69561545685-52868757241-04245213425-69280254356")

Record1791: (id=9) → (k=496, c="94556997174-32108982644-63004661483-42547508604-40987100663-82959520169-01960773852-23325192900-64841585484-09299809863", pad="38130396901-31554193919-79854584773-97713622125-48090103407")

Record1999: (id=10) → (k=500, c="92229281843-40509455748-54180693333-69666735372-33631067191-52840688810-46742388152-62036963372-40370446940-14952664058", pad="29251291459-26439838509-02439953981-87093993879-41189576069")

Record2207: (id=11) → (k=500, c="55539894961-94630227272-87892715306-11757554233-65025656366-18040038788-59035923136-82077391351-71299309808-41806629806", pad="95243893840-44524415901-82294436187-08420012728-74234360637")

Record2415: (id=12) → (k=503, c="85745887749-43926612815-52671599838-72615670779-39539880737-32384431916-14624123858-03743007646-92421088881-13995056613", pad="95695252907-40835773194-59752082278-75477923775-11498955389")

Record2623: (id=13) → (k=477, c="56316294888-57679890769-58383613277-57458454910-66366822420-44427204096-36206800006-57779232548-42467397897-95291088583", pad="88218646660-35398169196-80904295321-21916525974-80577254755")

Record2831: (id=14) → (k=501, c="49194164261-78718959601-76453436726-12328252331-82252358387-32591334883-94591313333-32194299027-56489480566-29273924881", pad="29180048350-56869357598-30507794298-39605791895-24572116324")

Record3039: (id=15) → (k=331, c="25087972499-30804716351-98946650357-16506466188-42176842560-16335148324-61364737966-77319603815-63697591309-04051890496", pad="43910273478-50996077734-27755511063-38289440715-15018863089")

Record3247: (id=16) → (k=497, c="43454717653-44558192345-39282807857-81817475020-59463951424-65087261835-25202204115-99284673840-03229487757-24342009464", pad="20451441330-30875371862-04498774055-95322094956-34874417333")

Record3455: (id=17) → (k=499, c="38155538057-45725545265-40889413187-19176032256-33350854183-64846306087-12561577300-76952889459-50179987140-19189659407", pad="47983967466-32916043660-26754951311-67648211152-77587164235")

Record3663: (id=18) → (k=502, c="23655981276-08645059528-30058537153-25321072018-87163062804-08883437163-58223216794-90063295219-14234702496-80694475355", pad="58046153567-81750139665-38039780155-05506141429-84599433667")

Record3871: (id=19) → (k=497, c="79942101578-07260787699-83643054812-74587100667-46426009339-58721772706-98945630642-82234846798-71888359042-26732947100", pad="92272567328-80415195747-71974765950-52428122735-62201258395")

Record4079: (id=20) → (k=496, c="88145905092-43361185087-51020319593-37179046642-84310697372-70862287819-48856968404-99184797065-93751342014-72177157904", pad="24134778965-24746119933-67168161568-50086411748-70562288790")

Record4287: (id=21) → (k=499, c="38424691506-09354796197-61202697271-63038046508-29888453798-92949141153-62688443035-08026750638-08254686176-61761342594", pad="79733906981-31521935604-58311962288-85453122462-71504498773")

Record4495: (id=22) → (k=505, c="14727371780-27787201378-78787463594-18460466846-21839479873-30447182067-93416020974-84136743014-58317107496-48981937169", pad="96709539373-81997780696-95347904390-38078115633-62447355461")

Record4703: (id=23) → (k=497, c="90230837177-91597521543-23236354134-79212233606-17507706971-75567480641-70481816939-85424101073-64577171634-48162481689", pad="27800249225-92962708583-56272782620-97779067645-23232529648")

Record4911: (id=24) → (k=457, c="96225808974-56822595984-95377074482-83456476383-25408814447-92968603608-77649769299-95136600978-30286715144-34964058160", pad="10255815850-80260680522-69787802778-01654410036-27346900110")

Record5119: (id=25) → (k=501, c="39480776623-00640080130-24904126938-78433406039-49288389176-22282678080-47593616764-27175866783-76471987280-19342048981", pad="06494949497-92944075663-00641001373-66339631879-79992388428")

Record5327: (id=26) → (k=497, c="98265218933-49011148684-87417682873-50240835334-63362800751-26404352055-84312047314-60245034763-37365752796-84881045043", pad="13545447624-79776314902-61013724602-32988712578-06240717021")

Record5535: (id=27) → (k=512, c="91079361241-09020847684-37391806898-07273736210-93629366034-98744355592-20414955521-01312444108-12076129320-46986911874", pad="69590894051-41889115293-04015358313-27891602619-86760056074")

Record5743: (id=28) → (k=500, c="80179432201-98548860753-91071657657-08431367331-52356826954-28157300365-86275596256-02785465787-96895628664-00768599865", pad="33389172619-93724844897-09488184787-91378022772-29059719650")

Record5951: (id=29) → (k=500, c="58209632634-43428453594-47456591135-47559683146-08619138313-32670203285-43565200994-03574309358-44183488778-44132897676", pad="94180732599-41019997528-32379837658-27859269245-31924674726")

Record6159: (id=30) → (k=498, c="85452655587-77830531569-94567785727-88551977409-59919100524-37150116535-18673032762-44703758355-80271278927-32342812113", pad="32564586600-33076490416-56481808104-36256881339-89021614149")

Record6367: (id=31) → (k=596, c="39326381516-63921696904-87491520820-37013348913-29492574405-00049940380-73338425185-15684942822-68194250937-43955352407", pad="21039155106-57470432053-20794119530-37429140194-04940180039")

Record6575: (id=32) → (k=504, c="03515613512-80898990798-18127527684-13820923410-87634298088-09696188722-57126942783-21229376041-55087409499-84868981582", pad="09234013725-21861902085-62986870504-46868808475-64122952251")

Record6783: (id=33) → (k=503, c="23266654172-78195672262-36264075637-94939288146-23645310951-37183821782-68857233719-03327841652-09169517965-20526019272", pad="72521203537-87305696795-36845341458-79422297727-89248574761")

Record6991: (id=34) → (k=504, c="38423913511-71623847994-68618244490-86589321139-77132624675-92398243198-54892244775-51156020613-11419752608-78874205780", pad="79447375504-29813460505-34699095586-42852971172-10094297988")

Record7199: (id=35) → (k=503, c="52101984189-39229076175-04316910553-64297530658-96446154615-15344967034-76614845754-87528921307-64652782110-03909494474", pad="30363008196-82587212701-32548750678-55550447232-82627277050")

Record7407: (id=36) → (k=498, c="60401506099-53488453875-83999629965-15055549870-48449782366-42360013702-73918593804-33127766677-37977797336-72110586674", pad="91361291187-39343181035-58706528978-28600137866-50235431912")

[[email protected]:57:17 /data/mysql/mysql3306/data]#

[[email protected]:39:28 /data/mysql/mysql3306/data]# innodb_space -s ibdata1 -T sbtest/sbtest1 -p 19 page-records

Record127: (id=986) → (k=497, c="87298914175-67019310774-55914766116-99828999777-99586454236-20112561950-04631324345-42297289244-53773772569-18847518165", pad="51641139864-09971760446-48470783437-67945081862-02437170409")

Record335: (id=987) → (k=502, c="92379144351-81987843986-60512646961-43351715220-89143263257-35157311208-00971788323-81113388070-51063502831-14585145751", pad="54562744428-58434610050-02640971647-28643258481-82786922223")

Record543: (id=988) → (k=504, c="79480787598-39254493988-69786031029-70870874504-39408353161-74914604044-71312408918-90080844569-76683765267-75045254744", pad="66798872943-27202526790-73601971494-14196086682-33205984184")

Record751: (id=989) → (k=505, c="76613703975-82648385342-65551565318-48073944213-71095746644-21533359862-02468363964-12827037545-15025918511-99958538641", pad="38546404030-64482612227-79761253030-12629548985-71060525466")

Record959: (id=990) → (k=364, c="27517650862-96268857874-14433848856-73786054388-95781750782-17746238114-15483646344-81063380673-29949561587-62048756586", pad="86418789389-75080583550-28788891732-08577340926-95852238449")

Record1167: (id=991) → (k=502, c="13499442135-63729372612-00275706338-88486676039-41096881141-28185759547-80480437474-69347981661-92232870081-39724037280", pad="54660772003-50838112072-93582421460-90434524209-63516920354")

Record1375: (id=992) → (k=500, c="79620784849-00009549599-62394242058-63066433982-71035091537-35754137965-86009757471-55756806049-53705417378-55041368810", pad="63548119286-47199979705-42988872119-13070669712-06137073580")

Record1583: (id=993) → (k=498, c="33283211264-24104569482-49264463192-09788701315-23954673461-86748673406-98818577066-14240275554-97803650262-31630156143", pad="80210283445-13340705489-64221956430-39947049243-74556653233")

Record1791: (id=994) → (k=499, c="83529629079-37942549488-11187709798-93240515639-48172628293-01762263287-90076192966-92341984336-56589272804-75716525178", pad="14134715187-27217033507-96959210163-63526812993-29261456006")

Record1999: (id=995) → (k=498, c="28769317254-04610620937-33197663850-06518823866-27538021436-58760267595-46800223318-09591165747-49998359495-80438066644", pad="28997889228-51766953098-77939220474-53869366939-65122058297")

Record2207: (id=996) → (k=501, c="32972167321-21678283565-66466390078-58658971709-41234554112-81164217010-17369749478-42053792679-91787935893-73897637591", pad="84962785394-67975877825-54938010963-97372544497-10658110844")

Record2415: (id=997) → (k=476, c="95487528837-46850865997-40704725014-54408638016-53826361046-89364038833-04046942105-18066005022-87589460289-21223164339", pad="41335103059-85552460472-48481785622-06965909863-36628827974")

Record2623: (id=998) → (k=662, c="44144448828-38741837876-41443995192-83251064406-55334438827-77662225731-08536762638-97753926873-81832829034-78595369790", pad="40656376548-15920620514-89673385654-08014037818-12933490278")

Record2831: (id=999) → (k=471, c="28092799576-44007252568-97298475370-17983935646-96883601559-37032302110-13467978291-80633123787-54692039428-43594456579", pad="36157782684-31531034792-80519610585-46470205763-00609302773")

Record3039: (id=1000) → (k=504, c="41661884355-04359997856-74148055858-87015057769-70320273831-12909644636-94738459377-75660797476-90352294801-17449377020", pad="26633455577-63943069160-88331246770-21566796168-02314240479")

最后,对于innochecksum --page-type-dump中的garbages是代表什么意思,依然无从着手,为什么只有主键索引的最小page num的garbages才是非0,其他的都是0?

以上,如有错谬, 请不吝指正。