2307 lines
43 KiB
Plaintext
2307 lines
43 KiB
Plaintext
#
|
|
# Test for IBD2SDI tool
|
|
#
|
|
set global innodb_limit_optimistic_insert_debug = 2;
|
|
INSERT INTO cache_policies VALUES('cache_policy', 'innodb_only',
|
|
'innodb_only', 'innodb_only', 'innodb_only');
|
|
INSERT INTO config_options VALUES('separator', '|');
|
|
INSERT INTO containers VALUES ('desc_t1', 'test', 't1',
|
|
'c1', 'c2', '0', '0', '0', 'PRIMARY');
|
|
USE test;
|
|
# Case 1. Test with small SDI data
|
|
SET DEBUG = '+d, skip_sdi';
|
|
CREATE TABLE t1(c1 VARCHAR(32),
|
|
c2 TEXT,
|
|
primary key(c1))
|
|
ENGINE = INNODB;
|
|
SET DEBUG = '-d, skip_sdi';
|
|
INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so';
|
|
SET GLOBAL innodb_buf_flush_list_now = ON;
|
|
[INFO] ibd2sdi: SDI is empty.
|
|
# 1. Read SDI with long option
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2,
|
|
"object":
|
|
Test32
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4,
|
|
"object":
|
|
Test34
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5,
|
|
"object":
|
|
Test35
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4,
|
|
"object":
|
|
Test44
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0,
|
|
"object":
|
|
Test50
|
|
}
|
|
]
|
|
# 3. Read with specific id & type (long option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
]
|
|
# 4. Read with specific id & type (short option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4,
|
|
"object":
|
|
Test44
|
|
}
|
|
]
|
|
# 5. Read with skip data
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0
|
|
}
|
|
]
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0
|
|
}
|
|
]
|
|
# 6. Read SDI and dump into FILE
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2,
|
|
"object":
|
|
Test32
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4,
|
|
"object":
|
|
Test34
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5,
|
|
"object":
|
|
Test35
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4,
|
|
"object":
|
|
Test44
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0,
|
|
"object":
|
|
Test50
|
|
}
|
|
]
|
|
# 7. Read SDI and dump into FILE using short option
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0
|
|
}
|
|
]
|
|
# 8. Print all records matching type (short option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
]
|
|
# 9. Print all records matching id (long option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
]
|
|
# 10. Print version
|
|
IBD2SDI Ver #.#.#
|
|
# 11. Print help
|
|
IBD2SDI Ver #.#.#
|
|
Copyright (c) YEAR, YEAR, 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.
|
|
|
|
IBD2SDI [-v] [-c <strict-check>] [-d <dump file name>] [-n] filename1 [filenames]
|
|
See http://dev.mysql.com/doc/refman/8.0/en/ibd2sdi.html for usage hints.
|
|
-h, --help Display this help and exit.
|
|
-v, --version Display version information and exit.
|
|
-d, --dump-file=name
|
|
Dump the tablespace SDI into the file passed by user.
|
|
Without the filename, it will default to stdout
|
|
-s, --skip-data Skip retrieving data from SDI records. Retrieve only id
|
|
and type.
|
|
-i, --id=# Retrieve the SDI record matching the id passed by user.
|
|
-t, --type=# Retrieve the SDI records matching the type passed by
|
|
user.
|
|
-c, --strict-check=name
|
|
Specify the strict checksum algorithm by the user.
|
|
Allowed values are innodb, crc32, none.
|
|
-n, --no-check Ignore the checksum verification.
|
|
-p, --pretty Pretty format the SDI output.If false, SDI would be not
|
|
human readable but it will be of less size
|
|
(Defaults to on; use --skip-pretty to disable.)
|
|
|
|
Variables (--variable-name=value)
|
|
and boolean options {FALSE|TRUE} Value (after reading options)
|
|
--------------------------------- ----------------------------------------
|
|
dump-file (No default value)
|
|
skip-data FALSE
|
|
id 0
|
|
type 0
|
|
strict-check crc32
|
|
no-check FALSE
|
|
pretty TRUE
|
|
# 12. Print all records
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2,
|
|
"object":
|
|
Test32
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4,
|
|
"object":
|
|
Test34
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5,
|
|
"object":
|
|
Test35
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4,
|
|
"object":
|
|
Test44
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0,
|
|
"object":
|
|
Test50
|
|
}
|
|
]
|
|
# 13. Retrieve explicit id & type
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
]
|
|
# 14. Skip data and retrieve
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0
|
|
}
|
|
]
|
|
# 15. Dump all records into outfile
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2,
|
|
"object":
|
|
Test32
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4,
|
|
"object":
|
|
Test34
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5,
|
|
"object":
|
|
Test35
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4,
|
|
"object":
|
|
Test44
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0,
|
|
"object":
|
|
Test50
|
|
}
|
|
]
|
|
# 16. Print all records matching type (short option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
]
|
|
# 17. Print all records matching id (long option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
]
|
|
# 18. Pass --no-check & --strict-check together
|
|
[ERROR] ibd2sdi: Invalid combination of options. Cannot use --no-check & --strict-check together.
|
|
ibd2sdi: [ERROR] Unknown suffix '@' used for variable 'type' (value '@').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '@' to 'type'.
|
|
ibd2sdi: [ERROR] IBD2SDI: option '-t' requires an argument.
|
|
ibd2sdi: [ERROR] Unknown suffix '=' used for variable 'type' (value '=').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '=' to 'type'.
|
|
# 22. Test --type option with
|
|
# 22.1 non numeric/Alphanumeric
|
|
ibd2sdi: [ERROR] Unknown suffix 'a' used for variable 'type' (value 'a').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value 'a' to 'type'.
|
|
ibd2sdi: [ERROR] Unknown suffix 'b' used for variable 'type' (value 'b').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value 'b' to 'type'.
|
|
# 22.2 numbers with +/-
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
]
|
|
ibd2sdi: [Warning] option 'type': value -0 adjusted to 0.
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
]
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
]
|
|
ibd2sdi: [Warning] option 'type': value -1 adjusted to 0.
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
]
|
|
ibd2sdi: [Warning] option 'type': value -15 adjusted to 0.
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
]
|
|
["ibd2sdi"
|
|
]
|
|
# 22.4 with no permitted values
|
|
["ibd2sdi"
|
|
]
|
|
ibd2sdi: [Warning] option 'type': value -14 adjusted to 0.
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
]
|
|
# 22.5 with very long value
|
|
ibd2sdi: [ERROR] Incorrect unsigned integer value: '14324932470234893204293032'.
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '14324932470234893204293032' to 'type'.
|
|
# 22.6 with blank value
|
|
ibd2sdi: [ERROR] IBD2SDI: Empty value for 'type' specified.
|
|
# 22.7 value with spaces
|
|
ibd2sdi: [ERROR] IBD2SDI: Empty value for 'type' specified.
|
|
# 23. Test for reading form more than type example (invalid): -t 0,1
|
|
ibd2sdi: [ERROR] Unknown suffix ',' used for variable 'type' (value '0,1').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '0,1' to 'type'.
|
|
ibd2sdi: [ERROR] Unknown suffix ',' used for variable 'type' (value '2,3').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '2,3' to 'type'.
|
|
# 24. With misspelled --type
|
|
ibd2sdi: [ERROR] unknown variable 'tpe=0'.
|
|
# 25. With Invalid file types
|
|
# 25.1 With non IBD file
|
|
[ERROR] ibd2sdi: Unable to read the page header of 1024 bytes.
|
|
[ERROR] ibd2sdi: Bytes read was 5.
|
|
# 25.2 with non existant file
|
|
[ERROR] ibd2sdi: Unable to get file stats non_existant_file.txt.
|
|
[ERROR] ibd2sdi: File doesn't exist.
|
|
# 25.3 with empty file
|
|
[ERROR] ibd2sdi: Unable to read the page header of 1024 bytes.
|
|
[ERROR] ibd2sdi: Bytes read was 0.
|
|
# restart: --innodb_checksum_algorithm=innodb
|
|
INSERT INTO innodb_memcache.containers VALUES ('desc_t2', 'test', 't2',
|
|
'c1', 'c2', '0', '0', '0', 'PRIMARY');
|
|
# test with innodb checksum
|
|
SET DEBUG = '+d, skip_sdi';
|
|
CREATE TABLE t2(c1 VARCHAR(32),
|
|
c2 TEXT,
|
|
primary key(c1)) ENGINE=INNODB;
|
|
SET DEBUG = '-d, skip_sdi';
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2,
|
|
"object":
|
|
Test32
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4,
|
|
"object":
|
|
Test34
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5,
|
|
"object":
|
|
Test35
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4,
|
|
"object":
|
|
Test44
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0,
|
|
"object":
|
|
Test50
|
|
}
|
|
]
|
|
# restart: --innodb_checksum_algorithm=none
|
|
SET DEBUG = '+d, skip_sdi';
|
|
DROP TABLE t2;
|
|
SET DEBUG = '-d, skip_sdi';
|
|
INSERT INTO innodb_memcache.containers VALUES ('desc_t3', 'test', 't3',
|
|
'c1', 'c2', '0', '0', '0', 'PRIMARY');
|
|
# test with none checksum
|
|
SET DEBUG = '+d, skip_sdi';
|
|
CREATE TABLE t3(c1 VARCHAR(32),
|
|
c2 TEXT,
|
|
primary key(c1)) ENGINE=INNODB;
|
|
SET DEBUG = '-d, skip_sdi';
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2,
|
|
"object":
|
|
Test32
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4,
|
|
"object":
|
|
Test34
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5,
|
|
"object":
|
|
Test35
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4,
|
|
"object":
|
|
Test44
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0,
|
|
"object":
|
|
Test50
|
|
}
|
|
]
|
|
[ERROR] ibd2sdi: Unable to create temporary file. err: Permission denied.
|
|
[ERROR] ibd2sdi: Invalid Dumpfile passed.
|
|
IBD2SDI Copyright (c) YEAR, YEAR, 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.
|
|
|
|
Usage: IBD2SDI [-v] [-c <strict-check>] [-d <dump file name>] [-n] filename1 [filenames]
|
|
See http://dev.mysql.com/doc/refman/8.0/en/ibd2sdi.html for usage hints.
|
|
-h, --help Display this help and exit.
|
|
-v, --version Display version information and exit.
|
|
-#, --debug[=name] Output debug log. See
|
|
http://dev.mysql.com/doc/refman/8.0/en/dbug-package.html
|
|
-d, --dump-file=name
|
|
Dump the tablespace SDI into the file passed by user.
|
|
Without the filename, it will default to stdout
|
|
-s, --skip-data Skip retrieving data from SDI records. Retrieve only id
|
|
and type.
|
|
-i, --id=# Retrieve the SDI record matching the id passed by user.
|
|
-t, --type=# Retrieve the SDI records matching the type passed by
|
|
user.
|
|
-c, --strict-check=name
|
|
Specify the strict checksum algorithm by the user.
|
|
Allowed values are innodb, crc32, none.
|
|
-n, --no-check Ignore the checksum verification.
|
|
-p, --pretty Pretty format the SDI output.If false, SDI would be not
|
|
human readable but it will be of less size
|
|
(Defaults to on; use --skip-pretty to disable.)
|
|
|
|
Variables (--variable-name=value)
|
|
and boolean options {FALSE|TRUE} Value (after reading options)
|
|
--------------------------------- ----------------------------------------
|
|
debug (No default value)
|
|
dump-file (No default value)
|
|
skip-data FALSE
|
|
id 0
|
|
type 0
|
|
strict-check crc32
|
|
no-check FALSE
|
|
pretty TRUE
|
|
[ERROR] ibd2sdi: Error: Unable to seek to necessary offset for file with descriptor X and error msg is: Invalid argument.
|
|
[ERROR] ibd2sdi: SDI doesn't exist for this tablespace or the SDI root page numbers couldn't be determined.
|
|
[ERROR] ibd2sdi: Read requested on invalid page number 20. The maximum valid page number in the tablespace is 19.
|
|
[ERROR] ibd2sdi: SDI doesn't exist for this tablespace or the SDI root page numbers couldn't be determined.
|
|
[ERROR] ibd2sdi: Unable to open file junk_file.
|
|
[WARNING] ibd2sdi: There is a partial page at the end, of size 1. This partial page is ignored.
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2,
|
|
"object":
|
|
Test32
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4,
|
|
"object":
|
|
Test34
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5,
|
|
"object":
|
|
Test35
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4,
|
|
"object":
|
|
Test44
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0,
|
|
"object":
|
|
Test50
|
|
}
|
|
]
|
|
[ERROR] ibd2sdi: Couldn't find valid root page number.
|
|
[ERROR] ibd2sdi: SDI doesn't exist for this tablespace or the SDI root page numbers couldn't be determined.
|
|
["ibd2sdi"
|
|
]
|
|
# 18. Corrupt Root page numbers in Page 1
|
|
# We should still see data because of the good
|
|
# page numbers in Page 2
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2,
|
|
"object":
|
|
Test32
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4,
|
|
"object":
|
|
Test34
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5,
|
|
"object":
|
|
Test35
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4,
|
|
"object":
|
|
Test44
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0,
|
|
"object":
|
|
Test50
|
|
}
|
|
]
|
|
# 19. Test with broken node-page link. The child page_no
|
|
# will be zero. Use --no-checksum as the page is corrupted.
|
|
[ERROR] ibd2sdi: Invalid child page number: 0 found.
|
|
# 20. Test with broken leaf-page link. The child page_no
|
|
# will be zero. Use --no-checksum as the page is corrupted
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2,
|
|
"object":
|
|
Test32
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
[ERROR] ibd2sdi: Unexpected page type: 8. Expected page type: 17853.
|
|
]
|
|
# Retrieve from .ibd file
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
[ERROR] ibd2sdi: Page [page id: space=X, page number=10] is corrupted. Checksum verification failed.
|
|
[ERROR] ibd2sdi: Couldn't read next page 10.
|
|
]
|
|
# 21. Test with Leaf Page full of Zeros
|
|
# Checksum will be valid. Skip checksum is not necessary
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
[ERROR] ibd2sdi: Unexpected page type: 0. Expected page type: 17853.
|
|
]
|
|
# 22. Test with Record corruption. User record pointing to
|
|
# INFIMUM Causing INFINITE loops.
|
|
[ERROR] ibd2sdi: Record Corruption detected. Too many records or infinite loop detected. Aborting.
|
|
[ERROR] ibd2sdi: The current iteration num is 529. Maximum number of records expected on the page 10 is 528.
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2,
|
|
"object":
|
|
Test32
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4,
|
|
"object":
|
|
Test34
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5,
|
|
"object":
|
|
Test35
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4,
|
|
"object":
|
|
Test44
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0,
|
|
"object":
|
|
Test50
|
|
}
|
|
]
|
|
# 23. Test with INFIMUM payload corruption. We should just
|
|
# see a msg in error log but data retrieval should be OK
|
|
[WARNING] ibd2sdi: Infimum payload on page 10 is corrupted.
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2,
|
|
"object":
|
|
Test32
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4,
|
|
"object":
|
|
Test34
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5,
|
|
"object":
|
|
Test35
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4,
|
|
"object":
|
|
Test44
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0,
|
|
"object":
|
|
Test50
|
|
}
|
|
]
|
|
# 24. Test with SUPREMUM payload corruption. We should just
|
|
# see a msg in error log but data retrieval should be OK
|
|
[WARNING] ibd2sdi: supremum record payload on page 7 is corrupted.
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2,
|
|
"object":
|
|
Test32
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4,
|
|
"object":
|
|
Test34
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5,
|
|
"object":
|
|
Test35
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4,
|
|
"object":
|
|
Test44
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0,
|
|
"object":
|
|
Test50
|
|
}
|
|
]
|
|
# 25. Test with SUPREMUM next-rec offset corruption. We should just
|
|
# see a msg in error log but data retrieval should be OK
|
|
[WARNING] ibd2sdi: Unexpected next-rec offset 20 of supremum record on page 6.
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2,
|
|
"object":
|
|
Test32
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4,
|
|
"object":
|
|
Test34
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5,
|
|
"object":
|
|
Test35
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4,
|
|
"object":
|
|
Test44
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0,
|
|
"object":
|
|
Test50
|
|
}
|
|
]
|
|
# 26. Test with SPACE FLAGS Corruption
|
|
[ERROR] ibd2sdi: Page 0 corruption detected. Page size is either zero or out of bound.
|
|
[ERROR] ibd2sdi: Minimum valid page size is [page size: physical=1024, logical=4096, compressed=1].
|
|
[ERROR] ibd2sdi: Maximum valid page size is [page size: physical=65536, logical=65536, compressed=0].
|
|
[ERROR] ibd2sdi: Reading multiple pages to determine the page_size.
|
|
[INFO] ibd2sdi: Page size determined is : [page size: physical=16384, logical=16384, compressed=0].
|
|
[WARNING] ibd2sdi: Tablespace flags suggest SDI INDEX didn't exist but found valid SDI root page numbers at SDI offsets in Page 0.
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
Test00
|
|
}
|
|
,
|
|
{
|
|
"type": 1,
|
|
"id": 0,
|
|
"object":
|
|
Test10
|
|
}
|
|
,
|
|
{
|
|
"type": 2,
|
|
"id": 0,
|
|
"object":
|
|
Test20
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 0,
|
|
"object":
|
|
Test30
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 1,
|
|
"object":
|
|
Test31
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 2,
|
|
"object":
|
|
Test32
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
Test33
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 4,
|
|
"object":
|
|
Test34
|
|
}
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 5,
|
|
"object":
|
|
Test35
|
|
}
|
|
,
|
|
{
|
|
"type": 4,
|
|
"id": 4,
|
|
"object":
|
|
Test44
|
|
}
|
|
,
|
|
{
|
|
"type": 5,
|
|
"id": 0,
|
|
"object":
|
|
Test50
|
|
}
|
|
]
|
|
# restart
|
|
SET DEBUG = '+d, skip_sdi';
|
|
DROP TABLE t1;
|
|
SET DEBUG = '-d, skip_sdi';
|
|
SET GLOBAL innodb_limit_optimistic_insert_debug = default;
|
|
# Case 2: Insert large SDI in uncompressed table
|
|
SET DEBUG = '+d, skip_sdi';
|
|
CREATE TABLE t1(c1 VARCHAR(32),
|
|
c2 TEXT,
|
|
primary key(c1))
|
|
ENGINE = INNODB;
|
|
SET DEBUG = '-d, skip_sdi';
|
|
# Section I: Test options
|
|
# 1. Read SDI with long option
|
|
# 3. Read with specific id & type (long option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 4. Read with specific id & type (short option)
|
|
# 5. Read with skip data
|
|
# 6. Read SDI and dump into FILE
|
|
# 7. Read SDI and dump into FILE using short option
|
|
# 8. Print all records matching type (short option)
|
|
# 9. Print all records matching id (long option)
|
|
# 10. Print version
|
|
IBD2SDI Ver #.#.#
|
|
# 11. Print help
|
|
IBD2SDI Ver #.#.#
|
|
Copyright (c) YEAR, YEAR, 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.
|
|
|
|
IBD2SDI [-v] [-c <strict-check>] [-d <dump file name>] [-n] filename1 [filenames]
|
|
See http://dev.mysql.com/doc/refman/8.0/en/ibd2sdi.html for usage hints.
|
|
-h, --help Display this help and exit.
|
|
-v, --version Display version information and exit.
|
|
-d, --dump-file=name
|
|
Dump the tablespace SDI into the file passed by user.
|
|
Without the filename, it will default to stdout
|
|
-s, --skip-data Skip retrieving data from SDI records. Retrieve only id
|
|
and type.
|
|
-i, --id=# Retrieve the SDI record matching the id passed by user.
|
|
-t, --type=# Retrieve the SDI records matching the type passed by
|
|
user.
|
|
-c, --strict-check=name
|
|
Specify the strict checksum algorithm by the user.
|
|
Allowed values are innodb, crc32, none.
|
|
-n, --no-check Ignore the checksum verification.
|
|
-p, --pretty Pretty format the SDI output.If false, SDI would be not
|
|
human readable but it will be of less size
|
|
(Defaults to on; use --skip-pretty to disable.)
|
|
|
|
Variables (--variable-name=value)
|
|
and boolean options {FALSE|TRUE} Value (after reading options)
|
|
--------------------------------- ----------------------------------------
|
|
dump-file (No default value)
|
|
skip-data FALSE
|
|
id 0
|
|
type 0
|
|
strict-check crc32
|
|
no-check FALSE
|
|
pretty TRUE
|
|
# 12. Print all records
|
|
# 13. Retrieve explicit id & type
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 14. Skip data and retrieve
|
|
# 15. Dump all records into outfile
|
|
# 16. Print all records matching type (short option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 17. Print all records matching id (long option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 18. Pass --no-check & --strict-check together
|
|
[ERROR] ibd2sdi: Invalid combination of options. Cannot use --no-check & --strict-check together.
|
|
ibd2sdi: [ERROR] Unknown suffix '@' used for variable 'type' (value '@').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '@' to 'type'.
|
|
ibd2sdi: [ERROR] IBD2SDI: option '-t' requires an argument.
|
|
ibd2sdi: [ERROR] Unknown suffix '=' used for variable 'type' (value '=').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '=' to 'type'.
|
|
# 22. Test --type option with
|
|
# 22.1 non numeric/Alphanumeric
|
|
ibd2sdi: [ERROR] Unknown suffix 'a' used for variable 'type' (value 'a').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value 'a' to 'type'.
|
|
ibd2sdi: [ERROR] Unknown suffix 'b' used for variable 'type' (value 'b').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value 'b' to 'type'.
|
|
# 22.2 numbers with +/-
|
|
# 22.4 with no permitted values
|
|
# 22.5 with very long value
|
|
ibd2sdi: [ERROR] Incorrect unsigned integer value: '14324932470234893204293032'.
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '14324932470234893204293032' to 'type'.
|
|
# 22.6 with blank value
|
|
ibd2sdi: [ERROR] IBD2SDI: Empty value for 'type' specified.
|
|
# 22.7 value with spaces
|
|
ibd2sdi: [ERROR] IBD2SDI: Empty value for 'type' specified.
|
|
# 23. Test for reading form more than type example (invalid): -t 0,1
|
|
ibd2sdi: [ERROR] Unknown suffix ',' used for variable 'type' (value '0,1').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '0,1' to 'type'.
|
|
ibd2sdi: [ERROR] Unknown suffix ',' used for variable 'type' (value '2,3').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '2,3' to 'type'.
|
|
# 24. With misspelled --type
|
|
ibd2sdi: [ERROR] unknown variable 'tpe=0'.
|
|
# 25. With Invalid file types
|
|
# 25.1 With non IBD file
|
|
[ERROR] ibd2sdi: Unable to read the page header of 1024 bytes.
|
|
[ERROR] ibd2sdi: Bytes read was 5.
|
|
# 25.2 with non existant file
|
|
[ERROR] ibd2sdi: Unable to get file stats non_existant_file.txt.
|
|
[ERROR] ibd2sdi: File doesn't exist.
|
|
# 25.3 with empty file
|
|
[ERROR] ibd2sdi: Unable to read the page header of 1024 bytes.
|
|
[ERROR] ibd2sdi: Bytes read was 0.
|
|
# restart
|
|
SET DEBUG = '+d, skip_sdi';
|
|
DROP TABLE t1;
|
|
SET DEBUG = '-d, skip_sdi';
|
|
# Case 3: Insert large SDI in compressed table
|
|
SET DEBUG = '+d, skip_sdi';
|
|
CREATE TABLE t1(c1 VARCHAR(32),
|
|
c2 TEXT,
|
|
primary key(c1))
|
|
ENGINE = INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
|
SET DEBUG = '-d, skip_sdi';
|
|
# Section I: Test options
|
|
# 1. Read SDI with long option
|
|
# 3. Read with specific id & type (long option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 4. Read with specific id & type (short option)
|
|
# 5. Read with skip data
|
|
# 6. Read SDI and dump into FILE
|
|
# 7. Read SDI and dump into FILE using short option
|
|
# 8. Print all records matching type (short option)
|
|
# 9. Print all records matching id (long option)
|
|
# 10. Print version
|
|
IBD2SDI Ver #.#.#
|
|
# 11. Print help
|
|
IBD2SDI Ver #.#.#
|
|
Copyright (c) YEAR, YEAR, 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.
|
|
|
|
IBD2SDI [-v] [-c <strict-check>] [-d <dump file name>] [-n] filename1 [filenames]
|
|
See http://dev.mysql.com/doc/refman/8.0/en/ibd2sdi.html for usage hints.
|
|
-h, --help Display this help and exit.
|
|
-v, --version Display version information and exit.
|
|
-d, --dump-file=name
|
|
Dump the tablespace SDI into the file passed by user.
|
|
Without the filename, it will default to stdout
|
|
-s, --skip-data Skip retrieving data from SDI records. Retrieve only id
|
|
and type.
|
|
-i, --id=# Retrieve the SDI record matching the id passed by user.
|
|
-t, --type=# Retrieve the SDI records matching the type passed by
|
|
user.
|
|
-c, --strict-check=name
|
|
Specify the strict checksum algorithm by the user.
|
|
Allowed values are innodb, crc32, none.
|
|
-n, --no-check Ignore the checksum verification.
|
|
-p, --pretty Pretty format the SDI output.If false, SDI would be not
|
|
human readable but it will be of less size
|
|
(Defaults to on; use --skip-pretty to disable.)
|
|
|
|
Variables (--variable-name=value)
|
|
and boolean options {FALSE|TRUE} Value (after reading options)
|
|
--------------------------------- ----------------------------------------
|
|
dump-file (No default value)
|
|
skip-data FALSE
|
|
id 0
|
|
type 0
|
|
strict-check crc32
|
|
no-check FALSE
|
|
pretty TRUE
|
|
# 12. Print all records
|
|
# 13. Retrieve explicit id & type
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 14. Skip data and retrieve
|
|
# 15. Dump all records into outfile
|
|
# 16. Print all records matching type (short option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 17. Print all records matching id (long option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 18. Pass --no-check & --strict-check together
|
|
[ERROR] ibd2sdi: Invalid combination of options. Cannot use --no-check & --strict-check together.
|
|
ibd2sdi: [ERROR] Unknown suffix '@' used for variable 'type' (value '@').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '@' to 'type'.
|
|
ibd2sdi: [ERROR] IBD2SDI: option '-t' requires an argument.
|
|
ibd2sdi: [ERROR] Unknown suffix '=' used for variable 'type' (value '=').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '=' to 'type'.
|
|
# 22. Test --type option with
|
|
# 22.1 non numeric/Alphanumeric
|
|
ibd2sdi: [ERROR] Unknown suffix 'a' used for variable 'type' (value 'a').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value 'a' to 'type'.
|
|
ibd2sdi: [ERROR] Unknown suffix 'b' used for variable 'type' (value 'b').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value 'b' to 'type'.
|
|
# 22.2 numbers with +/-
|
|
# 22.4 with no permitted values
|
|
# 22.5 with very long value
|
|
ibd2sdi: [ERROR] Incorrect unsigned integer value: '14324932470234893204293032'.
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '14324932470234893204293032' to 'type'.
|
|
# 22.6 with blank value
|
|
ibd2sdi: [ERROR] IBD2SDI: Empty value for 'type' specified.
|
|
# 22.7 value with spaces
|
|
ibd2sdi: [ERROR] IBD2SDI: Empty value for 'type' specified.
|
|
# 23. Test for reading form more than type example (invalid): -t 0,1
|
|
ibd2sdi: [ERROR] Unknown suffix ',' used for variable 'type' (value '0,1').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '0,1' to 'type'.
|
|
ibd2sdi: [ERROR] Unknown suffix ',' used for variable 'type' (value '2,3').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '2,3' to 'type'.
|
|
# 24. With misspelled --type
|
|
ibd2sdi: [ERROR] unknown variable 'tpe=0'.
|
|
# 25. With Invalid file types
|
|
# 25.1 With non IBD file
|
|
[ERROR] ibd2sdi: Unable to read the page header of 1024 bytes.
|
|
[ERROR] ibd2sdi: Bytes read was 5.
|
|
# 25.2 with non existant file
|
|
[ERROR] ibd2sdi: Unable to get file stats non_existant_file.txt.
|
|
[ERROR] ibd2sdi: File doesn't exist.
|
|
# 25.3 with empty file
|
|
[ERROR] ibd2sdi: Unable to read the page header of 1024 bytes.
|
|
[ERROR] ibd2sdi: Bytes read was 0.
|
|
# restart
|
|
SET DEBUG = '+d, skip_sdi';
|
|
DROP TABLE t1;
|
|
SET DEBUG = '-d, skip_sdi';
|
|
# Case 3: Insert large SDI in compressed table
|
|
SET DEBUG = '+d, skip_sdi';
|
|
CREATE TABLE t1(c1 VARCHAR(32),
|
|
c2 TEXT,
|
|
primary key(c1))
|
|
ENGINE = INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
|
SET DEBUG = '-d, skip_sdi';
|
|
# Section I: Test options
|
|
# 1. Read SDI with long option
|
|
# 3. Read with specific id & type (long option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 4. Read with specific id & type (short option)
|
|
# 5. Read with skip data
|
|
# 6. Read SDI and dump into FILE
|
|
# 7. Read SDI and dump into FILE using short option
|
|
# 8. Print all records matching type (short option)
|
|
# 9. Print all records matching id (long option)
|
|
# 10. Print version
|
|
IBD2SDI Ver #.#.#
|
|
# 11. Print help
|
|
IBD2SDI Ver #.#.#
|
|
Copyright (c) YEAR, YEAR, 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.
|
|
|
|
IBD2SDI [-v] [-c <strict-check>] [-d <dump file name>] [-n] filename1 [filenames]
|
|
See http://dev.mysql.com/doc/refman/8.0/en/ibd2sdi.html for usage hints.
|
|
-h, --help Display this help and exit.
|
|
-v, --version Display version information and exit.
|
|
-d, --dump-file=name
|
|
Dump the tablespace SDI into the file passed by user.
|
|
Without the filename, it will default to stdout
|
|
-s, --skip-data Skip retrieving data from SDI records. Retrieve only id
|
|
and type.
|
|
-i, --id=# Retrieve the SDI record matching the id passed by user.
|
|
-t, --type=# Retrieve the SDI records matching the type passed by
|
|
user.
|
|
-c, --strict-check=name
|
|
Specify the strict checksum algorithm by the user.
|
|
Allowed values are innodb, crc32, none.
|
|
-n, --no-check Ignore the checksum verification.
|
|
-p, --pretty Pretty format the SDI output.If false, SDI would be not
|
|
human readable but it will be of less size
|
|
(Defaults to on; use --skip-pretty to disable.)
|
|
|
|
Variables (--variable-name=value)
|
|
and boolean options {FALSE|TRUE} Value (after reading options)
|
|
--------------------------------- ----------------------------------------
|
|
dump-file (No default value)
|
|
skip-data FALSE
|
|
id 0
|
|
type 0
|
|
strict-check crc32
|
|
no-check FALSE
|
|
pretty TRUE
|
|
# 12. Print all records
|
|
# 13. Retrieve explicit id & type
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 14. Skip data and retrieve
|
|
# 15. Dump all records into outfile
|
|
# 16. Print all records matching type (short option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 17. Print all records matching id (long option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 18. Pass --no-check & --strict-check together
|
|
[ERROR] ibd2sdi: Invalid combination of options. Cannot use --no-check & --strict-check together.
|
|
ibd2sdi: [ERROR] Unknown suffix '@' used for variable 'type' (value '@').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '@' to 'type'.
|
|
ibd2sdi: [ERROR] IBD2SDI: option '-t' requires an argument.
|
|
ibd2sdi: [ERROR] Unknown suffix '=' used for variable 'type' (value '=').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '=' to 'type'.
|
|
# 22. Test --type option with
|
|
# 22.1 non numeric/Alphanumeric
|
|
ibd2sdi: [ERROR] Unknown suffix 'a' used for variable 'type' (value 'a').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value 'a' to 'type'.
|
|
ibd2sdi: [ERROR] Unknown suffix 'b' used for variable 'type' (value 'b').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value 'b' to 'type'.
|
|
# 22.2 numbers with +/-
|
|
# 22.4 with no permitted values
|
|
# 22.5 with very long value
|
|
ibd2sdi: [ERROR] Incorrect unsigned integer value: '14324932470234893204293032'.
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '14324932470234893204293032' to 'type'.
|
|
# 22.6 with blank value
|
|
ibd2sdi: [ERROR] IBD2SDI: Empty value for 'type' specified.
|
|
# 22.7 value with spaces
|
|
ibd2sdi: [ERROR] IBD2SDI: Empty value for 'type' specified.
|
|
# 23. Test for reading form more than type example (invalid): -t 0,1
|
|
ibd2sdi: [ERROR] Unknown suffix ',' used for variable 'type' (value '0,1').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '0,1' to 'type'.
|
|
ibd2sdi: [ERROR] Unknown suffix ',' used for variable 'type' (value '2,3').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '2,3' to 'type'.
|
|
# 24. With misspelled --type
|
|
ibd2sdi: [ERROR] unknown variable 'tpe=0'.
|
|
# 25. With Invalid file types
|
|
# 25.1 With non IBD file
|
|
[ERROR] ibd2sdi: Unable to read the page header of 1024 bytes.
|
|
[ERROR] ibd2sdi: Bytes read was 5.
|
|
# 25.2 with non existant file
|
|
[ERROR] ibd2sdi: Unable to get file stats non_existant_file.txt.
|
|
[ERROR] ibd2sdi: File doesn't exist.
|
|
# 25.3 with empty file
|
|
[ERROR] ibd2sdi: Unable to read the page header of 1024 bytes.
|
|
[ERROR] ibd2sdi: Bytes read was 0.
|
|
page_zip_decompress 1: 9998 1024
|
|
[ERROR] ibd2sdi: Decompression failed for compressed page [page id: space=X, page number=3].
|
|
[ERROR] ibd2sdi: Couldn't read page 3.
|
|
[ERROR] ibd2sdi: Couldn't reach upto level zero.
|
|
# restart
|
|
SET DEBUG = '+d, skip_sdi';
|
|
DROP TABLE t1;
|
|
SET DEBUG = '-d, skip_sdi';
|
|
# Case 4: Insert large SDI in General Tablespace
|
|
SET DEBUG = '+d, skip_sdi';
|
|
CREATE TABLESPACE ts1 ADD DATAFILE 'ts1.ibd';
|
|
CREATE TABLE t1(c1 VARCHAR(32),
|
|
c2 TEXT,
|
|
primary key(c1))
|
|
ENGINE = INNODB TABLESPACE=ts1;
|
|
SET DEBUG = '-d, skip_sdi';
|
|
# Section I: Test options
|
|
# 1. Read SDI with long option
|
|
# 3. Read with specific id & type (long option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 4. Read with specific id & type (short option)
|
|
# 5. Read with skip data
|
|
# 6. Read SDI and dump into FILE
|
|
# 7. Read SDI and dump into FILE using short option
|
|
# 8. Print all records matching type (short option)
|
|
# 9. Print all records matching id (long option)
|
|
# 10. Print version
|
|
IBD2SDI Ver #.#.#
|
|
# 11. Print help
|
|
IBD2SDI Ver #.#.#
|
|
Copyright (c) YEAR, YEAR, 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.
|
|
|
|
IBD2SDI [-v] [-c <strict-check>] [-d <dump file name>] [-n] filename1 [filenames]
|
|
See http://dev.mysql.com/doc/refman/8.0/en/ibd2sdi.html for usage hints.
|
|
-h, --help Display this help and exit.
|
|
-v, --version Display version information and exit.
|
|
-d, --dump-file=name
|
|
Dump the tablespace SDI into the file passed by user.
|
|
Without the filename, it will default to stdout
|
|
-s, --skip-data Skip retrieving data from SDI records. Retrieve only id
|
|
and type.
|
|
-i, --id=# Retrieve the SDI record matching the id passed by user.
|
|
-t, --type=# Retrieve the SDI records matching the type passed by
|
|
user.
|
|
-c, --strict-check=name
|
|
Specify the strict checksum algorithm by the user.
|
|
Allowed values are innodb, crc32, none.
|
|
-n, --no-check Ignore the checksum verification.
|
|
-p, --pretty Pretty format the SDI output.If false, SDI would be not
|
|
human readable but it will be of less size
|
|
(Defaults to on; use --skip-pretty to disable.)
|
|
|
|
Variables (--variable-name=value)
|
|
and boolean options {FALSE|TRUE} Value (after reading options)
|
|
--------------------------------- ----------------------------------------
|
|
dump-file (No default value)
|
|
skip-data FALSE
|
|
id 0
|
|
type 0
|
|
strict-check crc32
|
|
no-check FALSE
|
|
pretty TRUE
|
|
# 12. Print all records
|
|
# 13. Retrieve explicit id & type
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 14. Skip data and retrieve
|
|
# 15. Dump all records into outfile
|
|
# 16. Print all records matching type (short option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 0,
|
|
"id": 0,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 17. Print all records matching id (long option)
|
|
["ibd2sdi"
|
|
,
|
|
{
|
|
"type": 3,
|
|
"id": 3,
|
|
"object":
|
|
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
|
|
}
|
|
]
|
|
# 18. Pass --no-check & --strict-check together
|
|
[ERROR] ibd2sdi: Invalid combination of options. Cannot use --no-check & --strict-check together.
|
|
ibd2sdi: [ERROR] Unknown suffix '@' used for variable 'type' (value '@').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '@' to 'type'.
|
|
ibd2sdi: [ERROR] IBD2SDI: option '-t' requires an argument.
|
|
ibd2sdi: [ERROR] Unknown suffix '=' used for variable 'type' (value '=').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '=' to 'type'.
|
|
# 22. Test --type option with
|
|
# 22.1 non numeric/Alphanumeric
|
|
ibd2sdi: [ERROR] Unknown suffix 'a' used for variable 'type' (value 'a').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value 'a' to 'type'.
|
|
ibd2sdi: [ERROR] Unknown suffix 'b' used for variable 'type' (value 'b').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value 'b' to 'type'.
|
|
# 22.2 numbers with +/-
|
|
# 22.4 with no permitted values
|
|
# 22.5 with very long value
|
|
ibd2sdi: [ERROR] Incorrect unsigned integer value: '14324932470234893204293032'.
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '14324932470234893204293032' to 'type'.
|
|
# 22.6 with blank value
|
|
ibd2sdi: [ERROR] IBD2SDI: Empty value for 'type' specified.
|
|
# 22.7 value with spaces
|
|
ibd2sdi: [ERROR] IBD2SDI: Empty value for 'type' specified.
|
|
# 23. Test for reading form more than type example (invalid): -t 0,1
|
|
ibd2sdi: [ERROR] Unknown suffix ',' used for variable 'type' (value '0,1').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '0,1' to 'type'.
|
|
ibd2sdi: [ERROR] Unknown suffix ',' used for variable 'type' (value '2,3').
|
|
ibd2sdi: [ERROR] IBD2SDI: Error while setting value '2,3' to 'type'.
|
|
# 24. With misspelled --type
|
|
ibd2sdi: [ERROR] unknown variable 'tpe=0'.
|
|
# 25. With Invalid file types
|
|
# 25.1 With non IBD file
|
|
[ERROR] ibd2sdi: Unable to read the page header of 1024 bytes.
|
|
[ERROR] ibd2sdi: Bytes read was 5.
|
|
# 25.2 with non existant file
|
|
[ERROR] ibd2sdi: Unable to get file stats non_existant_file.txt.
|
|
[ERROR] ibd2sdi: File doesn't exist.
|
|
# 25.3 with empty file
|
|
[ERROR] ibd2sdi: Unable to read the page header of 1024 bytes.
|
|
[ERROR] ibd2sdi: Bytes read was 0.
|
|
# restart
|
|
SET DEBUG = '+d, skip_sdi';
|
|
DROP TABLE t1;
|
|
DROP TABLESPACE ts1;
|
|
SET DEBUG = '-d, skip_sdi';
|
|
UNINSTALL PLUGIN daemon_memcached;
|
|
DROP DATABASE innodb_memcache;
|
|
SET GLOBAL transaction_isolation = default;
|
|
SET DEBUG = '+d, skip_sdi';
|
|
DROP TABLE t3;
|
|
SET DEBUG = '-d, skip_sdi';
|