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的选项
[root@MySQL57M1 10:38:36 /root]# /usr/local/mysql56/bin/innochecksum --version InnoDB offline file checksum utility. /usr/local/mysql56/bin/innochecksum Ver 5.6.35, for linux-glibc2.5 (x86_64) [root@MySQL57M1 10:38:42 /root]# /usr/local/mysql56/bin/innochecksum --help InnoDB offline file checksum 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 offline file checksum utility. Usage: /usr/local/mysql56/bin/innochecksum [-c] [-s <start page>] [-e <end page>] [-p <page>] [-v] [-d] <filename> -?, --help Displays this help and exits. -I, --info Synonym for --help. -V, --version Displays version information and exits. -v, --verbose Verbose (prints progress every 5 seconds). -d, --debug Debug mode (prints checksums for each page, implies verbose). -c, --count Print the count of pages in the file. -s, --start-page=# Start on this page number (0 based). -e, --end-page=# End at this page number (0 based). -p, --page=# Check only this page (0 based). Variables (--variable-name=value) and boolean options {FALSE|TRUE} Value (after reading options) --------------------------------- ---------------------------------------- verbose FALSE debug FALSE count FALSE start-page 0 end-page 0 page 0
再看看MySQL5.7的innochecksum的选项
[root@MySQL57M1 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 offline file checksum utility. Usage: /usr/local/mysql/bin/innochecksum [-c] [-s <start page>] [-e <end page>] [-p <page>] [-v] [-a <allow mismatches>] [-n] [-C <strict-check>] [-w <write>] [-S] [-D <page type dump>] [-l <log>] <filename or [-]> 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 5 seconds). -c, --count Print the count of pages in the file and exits. -s, --start-page=# Start on this page number (0 based). -e, --end-page=# End at this page number (0 based). -p, --page=# Check only this page (0 based). -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 type in a tablespace. -D, --page-type-dump=name Dump the page type info for each page in a 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 0 end-page 0 page 0 strict-check crc32 no-check FALSE allow-mismatches 0 write crc32 page-type-summary FALSE page-type-dump (No default value) log (No default value)
下面通过与innodb_ruby的比较来解读一下输出结果
步骤一、通过sysbench来插入1000条记录
# 创建数据库 root@localhost:mysql3306.sock [(none)]>show create database sbtest ; +----------+-----------------------------------------------------------------+ | Database | Create Database | +----------+-----------------------------------------------------------------+ | sbtest | CREATE DATABASE `sbtest` /*!40100 DEFAULT CHARACTER SET utf8 */ | +----------+-----------------------------------------------------------------+ 1 row in set (0.02 sec)
root@localhost: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插入数据 [root@MySQL57M1 10: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 sysbench 0.5: multi-threaded system evaluation benchmark # 检查插入记录 [root@MySQL57M1 15: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 connection id is 8 Server 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 clear the current input statement. root@localhost:mysql3306.sock [(none)]>use sbtest ; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed
root@localhost:mysql3306.sock [sbtest]>select count(1) from sbtest1 ; +----------+ | count(1) | +----------+ | 1000 | +----------+ 1 row in set (0.00 sec)
步骤二、关闭mysqld进程
[root@MySQL57M1 10:52:23 /root]# /usr/local/mysql/bin/mysqladmin -S /tmp/mysql3306.sock shutdown
步骤三、输出innochecksum的结果
选项一、--count,此选项表明文件中共有多少个page
[root@MySQL57M1 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
[root@MySQL57M1 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 =============================================== 17 Index page # 此项在innodb_ruby的space-indexes中解释 0 Undo log page 1 Inode page 0 Insert buffer free list page 1 Freshly allocated page 1 Insert buffer bitmap 0 System page 0 Transaction system page 1 File Space Header 0 Extent descriptor page 0 BLOB page 0 Compressed BLOB page 0 Other type of page =============================================== Additional information: Undo page type: 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
[root@MySQL57M1 16:05:42 /data/mysql/mysql3306/data/sbtest]# /usr/local/mysql/bin/innochecksum --page-type-dump=/tmp/sbtest_dump.log sbtest1.ibd [root@MySQL57M1 16: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 | - [root@MySQL57M1 16: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
[root@MySQL57M1 16:37:06 /data/mysql/mysql3306/data]# innodb_space -s ibdata1 -T sbtest/sbtest1 space-indexes id name root fseg used allocated fill_factor 45 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
[root@MySQL57M1 16:37:18 /data/mysql/mysql3306/data]# innodb_space -s ibdata1 -T sbtest/sbtest1 space-page-type-regions start end count type 0 0 1 FSP_HDR 1 1 1 IBUF_BITMAP 2 2 1 INODE 3 19 17 INDEX 20 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
[root@MySQL57M1 16:38:05 /data/mysql/mysql3306/data]# innodb_space -s ibdata1 -T sbtest/sbtest1 -p 3 page-records Record 125: (id=1) → #5 Record 138: (id=37) → #6 Record 151: (id=110) → #7 Record 164: (id=183) → #8 Record 177: (id=256) → #9 Record 190: (id=329) → #10 Record 203: (id=402) → #11 Record 216: (id=475) → #12 Record 229: (id=548) → #13 Record 242: (id=621) → #14 Record 255: (id=694) → #15 Record 268: (id=767) → #16 Record 281: (id=840) → #17 Record 294: (id=913) → #18 Record 307: (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解析
[root@MySQL57M1 16:42:56 /data/mysql/mysql3306/data]# innodb_space -s ibdata1 -T sbtest/sbtest1 -p 5 page-records Record 127: (id=1) → (k=500, c="08566691963-88624912351-16662227201-46648573979-64646226163-77505759394-75470094713-41097360717-15161106334-50535565977", pad="63188288836-92351140030-06390587585-66802097351-49282961843") Record 335: (id=2) → (k=503, c="95969429576-20587925969-20202408199-67602281819-18293380360-38184587501-73192830026-41693404212-56705243222-89212376805", pad="09512147864-77936258834-40901700703-13541171421-15205431759") Record 543: (id=3) → (k=329, c="26283585383-48610978532-72166636310-67148386979-89643583984-06169170732-23477134062-17788128188-73465768032-24619558652", pad="21979564480-87492594656-60524686334-78820761788-57684966682") Record 751: (id=4) → (k=504, c="57481185690-89398636500-16888148413-67987678267-15604944838-94210794401-18107184012-91338377776-83386272438-09451188763", pad="35227182905-15234265621-59793845249-15413569710-23749555118") Record 959: (id=5) → (k=496, c="29279855805-99348203463-85191104223-39587263726-81794340135-73817557808-54578801760-64404111877-55434439976-37212880746", pad="59222897263-22759023974-22020489960-93434521232-77981152534") Record 1167: (id=6) → (k=500, c="24267764271-42431022577-79399828403-34660685942-15614883401-01775912296-17834847270-24498656403-67162539148-21266176221", pad="26472102213-44313108032-85929810653-63595461233-99754685588") Record 1375: (id=7) → (k=325, c="75769514803-27086227718-38612213700-37972984756-05033716175-01596446901-14887935702-82254196675-91092890141-99940009825", pad="01920094826-30050572228-27293124892-55703762324-88111796380") Record 1583: (id=8) → (k=499, c="82571936845-31830426410-85662298479-28456275464-64339136268-26186841165-94168712814-56389105006-66969794071-60071049942", pad="13152283289-69561545685-52868757241-04245213425-69280254356") Record 1791: (id=9) → (k=496, c="94556997174-32108982644-63004661483-42547508604-40987100663-82959520169-01960773852-23325192900-64841585484-09299809863", pad="38130396901-31554193919-79854584773-97713622125-48090103407") Record 1999: (id=10) → (k=500, c="92229281843-40509455748-54180693333-69666735372-33631067191-52840688810-46742388152-62036963372-40370446940-14952664058", pad="29251291459-26439838509-02439953981-87093993879-41189576069") Record 2207: (id=11) → (k=500, c="55539894961-94630227272-87892715306-11757554233-65025656366-18040038788-59035923136-82077391351-71299309808-41806629806", pad="95243893840-44524415901-82294436187-08420012728-74234360637") Record 2415: (id=12) → (k=503, c="85745887749-43926612815-52671599838-72615670779-39539880737-32384431916-14624123858-03743007646-92421088881-13995056613", pad="95695252907-40835773194-59752082278-75477923775-11498955389") Record 2623: (id=13) → (k=477, c="56316294888-57679890769-58383613277-57458454910-66366822420-44427204096-36206800006-57779232548-42467397897-95291088583", pad="88218646660-35398169196-80904295321-21916525974-80577254755") Record 2831: (id=14) → (k=501, c="49194164261-78718959601-76453436726-12328252331-82252358387-32591334883-94591313333-32194299027-56489480566-29273924881", pad="29180048350-56869357598-30507794298-39605791895-24572116324") Record 3039: (id=15) → (k=331, c="25087972499-30804716351-98946650357-16506466188-42176842560-16335148324-61364737966-77319603815-63697591309-04051890496", pad="43910273478-50996077734-27755511063-38289440715-15018863089") Record 3247: (id=16) → (k=497, c="43454717653-44558192345-39282807857-81817475020-59463951424-65087261835-25202204115-99284673840-03229487757-24342009464", pad="20451441330-30875371862-04498774055-95322094956-34874417333") Record 3455: (id=17) → (k=499, c="38155538057-45725545265-40889413187-19176032256-33350854183-64846306087-12561577300-76952889459-50179987140-19189659407", pad="47983967466-32916043660-26754951311-67648211152-77587164235") Record 3663: (id=18) → (k=502, c="23655981276-08645059528-30058537153-25321072018-87163062804-08883437163-58223216794-90063295219-14234702496-80694475355", pad="58046153567-81750139665-38039780155-05506141429-84599433667") Record 3871: (id=19) → (k=497, c="79942101578-07260787699-83643054812-74587100667-46426009339-58721772706-98945630642-82234846798-71888359042-26732947100", pad="92272567328-80415195747-71974765950-52428122735-62201258395") Record 4079: (id=20) → (k=496, c="88145905092-43361185087-51020319593-37179046642-84310697372-70862287819-48856968404-99184797065-93751342014-72177157904", pad="24134778965-24746119933-67168161568-50086411748-70562288790") Record 4287: (id=21) → (k=499, c="38424691506-09354796197-61202697271-63038046508-29888453798-92949141153-62688443035-08026750638-08254686176-61761342594", pad="79733906981-31521935604-58311962288-85453122462-71504498773") Record 4495: (id=22) → (k=505, c="14727371780-27787201378-78787463594-18460466846-21839479873-30447182067-93416020974-84136743014-58317107496-48981937169", pad="96709539373-81997780696-95347904390-38078115633-62447355461") Record 4703: (id=23) → (k=497, c="90230837177-91597521543-23236354134-79212233606-17507706971-75567480641-70481816939-85424101073-64577171634-48162481689", pad="27800249225-92962708583-56272782620-97779067645-23232529648") Record 4911: (id=24) → (k=457, c="96225808974-56822595984-95377074482-83456476383-25408814447-92968603608-77649769299-95136600978-30286715144-34964058160", pad="10255815850-80260680522-69787802778-01654410036-27346900110") Record 5119: (id=25) → (k=501, c="39480776623-00640080130-24904126938-78433406039-49288389176-22282678080-47593616764-27175866783-76471987280-19342048981", pad="06494949497-92944075663-00641001373-66339631879-79992388428") Record 5327: (id=26) → (k=497, c="98265218933-49011148684-87417682873-50240835334-63362800751-26404352055-84312047314-60245034763-37365752796-84881045043", pad="13545447624-79776314902-61013724602-32988712578-06240717021") Record 5535: (id=27) → (k=512, c="91079361241-09020847684-37391806898-07273736210-93629366034-98744355592-20414955521-01312444108-12076129320-46986911874", pad="69590894051-41889115293-04015358313-27891602619-86760056074") Record 5743: (id=28) → (k=500, c="80179432201-98548860753-91071657657-08431367331-52356826954-28157300365-86275596256-02785465787-96895628664-00768599865", pad="33389172619-93724844897-09488184787-91378022772-29059719650") Record 5951: (id=29) → (k=500, c="58209632634-43428453594-47456591135-47559683146-08619138313-32670203285-43565200994-03574309358-44183488778-44132897676", pad="94180732599-41019997528-32379837658-27859269245-31924674726") Record 6159: (id=30) → (k=498, c="85452655587-77830531569-94567785727-88551977409-59919100524-37150116535-18673032762-44703758355-80271278927-32342812113", pad="32564586600-33076490416-56481808104-36256881339-89021614149") Record 6367: (id=31) → (k=596, c="39326381516-63921696904-87491520820-37013348913-29492574405-00049940380-73338425185-15684942822-68194250937-43955352407", pad="21039155106-57470432053-20794119530-37429140194-04940180039") Record 6575: (id=32) → (k=504, c="03515613512-80898990798-18127527684-13820923410-87634298088-09696188722-57126942783-21229376041-55087409499-84868981582", pad="09234013725-21861902085-62986870504-46868808475-64122952251") Record 6783: (id=33) → (k=503, c="23266654172-78195672262-36264075637-94939288146-23645310951-37183821782-68857233719-03327841652-09169517965-20526019272", pad="72521203537-87305696795-36845341458-79422297727-89248574761") Record 6991: (id=34) → (k=504, c="38423913511-71623847994-68618244490-86589321139-77132624675-92398243198-54892244775-51156020613-11419752608-78874205780", pad="79447375504-29813460505-34699095586-42852971172-10094297988") Record 7199: (id=35) → (k=503, c="52101984189-39229076175-04316910553-64297530658-96446154615-15344967034-76614845754-87528921307-64652782110-03909494474", pad="30363008196-82587212701-32548750678-55550447232-82627277050") Record 7407: (id=36) → (k=498, c="60401506099-53488453875-83999629965-15055549870-48449782366-42360013702-73918593804-33127766677-37977797336-72110586674", pad="91361291187-39343181035-58706528978-28600137866-50235431912") [root@MySQL57M1 16:57:17 /data/mysql/mysql3306/data]# [root@MySQL57M1 16:39:28 /data/mysql/mysql3306/data]# innodb_space -s ibdata1 -T sbtest/sbtest1 -p 19 page-records Record 127: (id=986) → (k=497, c="87298914175-67019310774-55914766116-99828999777-99586454236-20112561950-04631324345-42297289244-53773772569-18847518165", pad="51641139864-09971760446-48470783437-67945081862-02437170409") Record 335: (id=987) → (k=502, c="92379144351-81987843986-60512646961-43351715220-89143263257-35157311208-00971788323-81113388070-51063502831-14585145751", pad="54562744428-58434610050-02640971647-28643258481-82786922223") Record 543: (id=988) → (k=504, c="79480787598-39254493988-69786031029-70870874504-39408353161-74914604044-71312408918-90080844569-76683765267-75045254744", pad="66798872943-27202526790-73601971494-14196086682-33205984184") Record 751: (id=989) → (k=505, c="76613703975-82648385342-65551565318-48073944213-71095746644-21533359862-02468363964-12827037545-15025918511-99958538641", pad="38546404030-64482612227-79761253030-12629548985-71060525466") Record 959: (id=990) → (k=364, c="27517650862-96268857874-14433848856-73786054388-95781750782-17746238114-15483646344-81063380673-29949561587-62048756586", pad="86418789389-75080583550-28788891732-08577340926-95852238449") Record 1167: (id=991) → (k=502, c="13499442135-63729372612-00275706338-88486676039-41096881141-28185759547-80480437474-69347981661-92232870081-39724037280", pad="54660772003-50838112072-93582421460-90434524209-63516920354") Record 1375: (id=992) → (k=500, c="79620784849-00009549599-62394242058-63066433982-71035091537-35754137965-86009757471-55756806049-53705417378-55041368810", pad="63548119286-47199979705-42988872119-13070669712-06137073580") Record 1583: (id=993) → (k=498, c="33283211264-24104569482-49264463192-09788701315-23954673461-86748673406-98818577066-14240275554-97803650262-31630156143", pad="80210283445-13340705489-64221956430-39947049243-74556653233") Record 1791: (id=994) → (k=499, c="83529629079-37942549488-11187709798-93240515639-48172628293-01762263287-90076192966-92341984336-56589272804-75716525178", pad="14134715187-27217033507-96959210163-63526812993-29261456006") Record 1999: (id=995) → (k=498, c="28769317254-04610620937-33197663850-06518823866-27538021436-58760267595-46800223318-09591165747-49998359495-80438066644", pad="28997889228-51766953098-77939220474-53869366939-65122058297") Record 2207: (id=996) → (k=501, c="32972167321-21678283565-66466390078-58658971709-41234554112-81164217010-17369749478-42053792679-91787935893-73897637591", pad="84962785394-67975877825-54938010963-97372544497-10658110844") Record 2415: (id=997) → (k=476, c="95487528837-46850865997-40704725014-54408638016-53826361046-89364038833-04046942105-18066005022-87589460289-21223164339", pad="41335103059-85552460472-48481785622-06965909863-36628827974") Record 2623: (id=998) → (k=662, c="44144448828-38741837876-41443995192-83251064406-55334438827-77662225731-08536762638-97753926873-81832829034-78595369790", pad="40656376548-15920620514-89673385654-08014037818-12933490278") Record 2831: (id=999) → (k=471, c="28092799576-44007252568-97298475370-17983935646-96883601559-37032302110-13467978291-80633123787-54692039428-43594456579", pad="36157782684-31531034792-80519610585-46470205763-00609302773") Record 3039: (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?
以上,如有错谬, 请不吝指正。