# /usr/bin/perl 5.016003 # Linux base.master.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux # Arguments: _[--slave-user=user]_ _[--slave-password=1234]_ _[-q]_ # OptionParser:1952 13097 Option rule: This tool accepts additional command-line arguments. Refer to the SYNOPSIS and usage information for details. # OptionParser:1961 13097 =item --ask-pass # OptionParser:1988 13097 Short help: Prompt for a password when connecting to MySQL # OptionParser:1961 13097 =item --[no]check-binlog-format # OptionParser:1988 13097 Short help: Check that the binlog_format is the same on all servers # OptionParser:1961 13097 =item --binary-index # OptionParser:1980 13097 Option has no attributes # OptionParser:1988 13097 Short help: This option modifies the behavior of --create-replicate-table such that the replicate table's upper and lower boundary columns are created with the BLOB data type # OptionParser:1961 13097 =item --check-interval # OptionParser:1988 13097 Short help: Sleep time between checks for --max-lag # OptionParser:1961 13097 =item --[no]check-plan # OptionParser:1988 13097 Short help: Check query execution plans for safety # OptionParser:1961 13097 =item --[no]check-replication-filters # OptionParser:1988 13097 Short help: Do not checksum if any replication filters are set on any replicas # OptionParser:1961 13097 =item --check-slave-lag # OptionParser:1988 13097 Short help: Pause checksumming until this replica's lag is less than --max-lag # OptionParser:1961 13097 =item --[no]check-slave-tables # OptionParser:1988 13097 Short help: Checks that tables on slaves exist and have all the checksum --columns # OptionParser:1961 13097 =item --chunk-index # OptionParser:1988 13097 Short help: Prefer this index for chunking tables # OptionParser:1961 13097 =item --chunk-index-columns # OptionParser:1988 13097 Short help: Use only this many left-most columns of a --chunk-index # OptionParser:1961 13097 =item --chunk-size # OptionParser:1988 13097 Short help: Number of rows to select for each checksum query # OptionParser:1961 13097 =item --chunk-size-limit # OptionParser:1988 13097 Short help: Do not checksum chunks this much larger than the desired chunk size # OptionParser:1961 13097 =item --chunk-time # OptionParser:1988 13097 Short help: Adjust the chunk size dynamically so each checksum query takes this long to execute # OptionParser:1961 13097 =item --columns # OptionParser:1988 13097 Short help: Checksum only this comma-separated list of columns # OptionParser:1961 13097 =item --config # OptionParser:1988 13097 Short help: Read this comma-separated list of config files; if specified, this must be the first option on the command line # OptionParser:1961 13097 =item --[no]create-replicate-table # OptionParser:1988 13097 Short help: Create the --replicate database and table if they do not exist # OptionParser:1961 13097 =item --databases # OptionParser:1988 13097 Short help: Only checksum this comma-separated list of databases # OptionParser:1961 13097 =item --databases-regex # OptionParser:1988 13097 Short help: Only checksum databases whose names match this Perl regex # OptionParser:1961 13097 =item --defaults-file # OptionParser:1988 13097 Short help: Only read mysql options from the given file # OptionParser:1961 13097 =item --[no]empty-replicate-table # OptionParser:1988 13097 Short help: Delete previous checksums for each table before checksumming the table # OptionParser:1961 13097 =item --engines # OptionParser:1988 13097 Short help: Only checksum tables which use these storage engines # OptionParser:1961 13097 =item --explain # OptionParser:1988 13097 Short help: Show, but do not execute, checksum queries (disables --[no]empty-replicate-table) # OptionParser:1961 13097 =item --float-precision # OptionParser:1988 13097 Short help: Precision for FLOAT and DOUBLE number-to-string conversion # OptionParser:1961 13097 =item --function # OptionParser:1988 13097 Short help: Hash function for checksums (FNV1A_64, MURMUR_HASH, SHA1, MD5, CRC32, etc) # OptionParser:1961 13097 =item --help # OptionParser:1988 13097 Short help: Show help and exit # OptionParser:1961 13097 =item --host # OptionParser:1988 13097 Short help: Host to connect to # OptionParser:1961 13097 =item --ignore-columns # OptionParser:1988 13097 Short help: Ignore this comma-separated list of columns when calculating the checksum # OptionParser:1961 13097 =item --ignore-databases # OptionParser:1988 13097 Short help: Ignore this comma-separated list of databases # OptionParser:1961 13097 =item --ignore-databases-regex # OptionParser:1988 13097 Short help: Ignore databases whose names match this Perl regex # OptionParser:1961 13097 =item --ignore-engines # OptionParser:1988 13097 Short help: Ignore this comma-separated list of storage engines # OptionParser:1961 13097 =item --ignore-tables # OptionParser:1988 13097 Short help: Ignore this comma-separated list of tables # OptionParser:1961 13097 =item --ignore-tables-regex # OptionParser:1988 13097 Short help: Ignore tables whose names match the Perl regex # OptionParser:1961 13097 =item --max-lag # OptionParser:1988 13097 Short help: Pause checksumming until all replicas' lag is less than this value # OptionParser:1961 13097 =item --max-load # OptionParser:1988 13097 Short help: Examine SHOW GLOBAL STATUS after every chunk, and pause if any status variables are higher than the threshold # OptionParser:1961 13097 =item --password # OptionParser:1988 13097 Short help: Password to use when connecting # OptionParser:1961 13097 =item --pause-file # OptionParser:1988 13097 Short help: Execution will be paused while the file specified by this param exists # OptionParser:1961 13097 =item --pid # OptionParser:1988 13097 Short help: Create the given PID file # OptionParser:1961 13097 =item --plugin # OptionParser:1988 13097 Short help: Perl module file that defines a pt_table_checksum_plugin class # OptionParser:1961 13097 =item --port # OptionParser:1988 13097 Short help: Port number to use for connection # OptionParser:1961 13097 =item --progress # OptionParser:1988 13097 Short help: Print progress reports to STDERR # OptionParser:1961 13097 =item --quiet # OptionParser:1988 13097 Short help: Print only the most important information (disables --progress) # OptionParser:1961 13097 =item --recurse # OptionParser:1988 13097 Short help: Number of levels to recurse in the hierarchy when discovering replicas # OptionParser:1961 13097 =item --recursion-method # OptionParser:1988 13097 Short help: Preferred recursion method for discovering replicas. pt-table-checksum performs several REPLICA CHECKS before and while running # OptionParser:1961 13097 =item --replicate # OptionParser:1988 13097 Short help: Write checksum results to this table # OptionParser:1961 13097 =item --[no]replicate-check # OptionParser:1988 13097 Short help: Check replicas for data differences after finishing each table # OptionParser:1961 13097 =item --replicate-check-only # OptionParser:1980 13097 Option has no attributes # OptionParser:1988 13097 Short help: Check replicas for consistency without executing checksum queries # OptionParser:1961 13097 =item --replicate-check-retries # OptionParser:1988 13097 Short help: Retry checksum comparison this many times when a difference is encountered # OptionParser:1961 13097 =item --replicate-database # OptionParser:1988 13097 Short help: USE only this database # OptionParser:1961 13097 =item --resume # OptionParser:1980 13097 Option has no attributes # OptionParser:1988 13097 Short help: Resume checksumming from the last completed chunk (disables --[no]empty-replicate-table) # OptionParser:1961 13097 =item --retries # OptionParser:1988 13097 Short help: Retry a chunk this many times when there is a nonfatal error # OptionParser:1961 13097 =item --run-time # OptionParser:1988 13097 Short help: How long to run # OptionParser:1961 13097 =item --separator # OptionParser:1988 13097 Short help: The separator character used for CONCAT_WS() # OptionParser:1961 13097 =item --slave-user # OptionParser:1988 13097 Short help: Sets the user to be used to connect to the slaves # OptionParser:1961 13097 =item --slave-password # OptionParser:1988 13097 Short help: Sets the password to be used to connect to the slaves # OptionParser:1961 13097 =item --set-vars # OptionParser:1988 13097 Short help: Set the MySQL variables in this comma-separated list of variable=value pairs # OptionParser:1961 13097 =item --socket # OptionParser:1988 13097 Short help: Socket file to use for connection # OptionParser:1961 13097 =item --slave-skip-tolerance # OptionParser:1988 13097 Short help: When a master table is marked to be checksumed in only one chunk but a slave table exceeds the maximum accepted size for this, the table is skipped # OptionParser:1961 13097 =item --tables # OptionParser:1988 13097 Short help: Checksum only this comma-separated list of tables # OptionParser:1961 13097 =item --tables-regex # OptionParser:1988 13097 Short help: Checksum only tables whose names match this Perl regex # OptionParser:1961 13097 =item --trim # OptionParser:1980 13097 Option has no attributes # OptionParser:1988 13097 Short help: Add TRIM() to VARCHAR columns (helps when comparing 4.1 to >= 5.0) # OptionParser:1961 13097 =item --user # OptionParser:1988 13097 Short help: User for login if not current user # OptionParser:1961 13097 =item --version # OptionParser:1988 13097 Short help: Show version and exit # OptionParser:1961 13097 =item --[no]version-check # OptionParser:1988 13097 Short help: Check for the latest version of Percona Toolkit, MySQL, and other programs # OptionParser:1961 13097 =item --where # OptionParser:1988 13097 Short help: Do only rows matching this WHERE clause # OptionParser:2028 13097 Parsing opt spec: group => Connection spec => ask-pass desc => Prompt for a password when connecting to MySQL attributes => HASH(0x29b5078) # OptionParser:2067 13097 ask-pass type: undef # OptionParser:2028 13097 Parsing opt spec: group => default spec => check-binlog-format! desc => Check that the binlog_format is the same on all servers (default yes) attributes => HASH(0x31a5a80) # OptionParser:2067 13097 check-binlog-format type: undef # OptionParser:2074 13097 check-binlog-format default: yes # OptionParser:2028 13097 Parsing opt spec: group => default spec => binary-index desc => This option modifies the behavior of --create-replicate-table such that the replicate table's upper and lower boundary columns are created with the BLOB data type attributes => HASH(0x31a5918) # OptionParser:2067 13097 binary-index type: undef # OptionParser:2028 13097 Parsing opt spec: group => Throttle spec => check-interval=m desc => Sleep time between checks for --max-lag (default 1) attributes => HASH(0x31a5870) # OptionParser:2067 13097 check-interval type: m # OptionParser:2074 13097 check-interval default: 1 # OptionParser:2028 13097 Parsing opt spec: group => default spec => check-plan! desc => Check query execution plans for safety (default yes) attributes => HASH(0x31a5780) # OptionParser:2067 13097 check-plan type: undef # OptionParser:2074 13097 check-plan default: yes # OptionParser:2028 13097 Parsing opt spec: group => Safety spec => check-replication-filters! desc => Do not checksum if any replication filters are set on any replicas (default yes) attributes => HASH(0x31a1f70) # OptionParser:2067 13097 check-replication-filters type: undef # OptionParser:2074 13097 check-replication-filters default: yes # OptionParser:2028 13097 Parsing opt spec: group => Throttle spec => check-slave-lag=s desc => Pause checksumming until this replica's lag is less than --max-lag attributes => HASH(0x31a1e80) # OptionParser:2067 13097 check-slave-lag type: s # OptionParser:2028 13097 Parsing opt spec: group => Safety spec => check-slave-tables! desc => Checks that tables on slaves exist and have all the checksum --columns (default yes) attributes => HASH(0x31a1da8) # OptionParser:2067 13097 check-slave-tables type: undef # OptionParser:2074 13097 check-slave-tables default: yes # OptionParser:2028 13097 Parsing opt spec: group => default spec => chunk-index=s desc => Prefer this index for chunking tables attributes => HASH(0x31a1cb8) # OptionParser:2067 13097 chunk-index type: s # OptionParser:2028 13097 Parsing opt spec: group => default spec => chunk-index-columns=i desc => Use only this many left-most columns of a --chunk-index attributes => HASH(0x31a1bf8) # OptionParser:2067 13097 chunk-index-columns type: i # OptionParser:2028 13097 Parsing opt spec: group => default spec => chunk-size=z desc => Number of rows to select for each checksum query (default 1000) attributes => HASH(0x31a1b38) # OptionParser:2067 13097 chunk-size type: z # OptionParser:2074 13097 chunk-size default: 1000 # OptionParser:2028 13097 Parsing opt spec: group => Safety spec => chunk-size-limit=f desc => Do not checksum chunks this much larger than the desired chunk size (default 2.0) attributes => HASH(0x31a1a60) # OptionParser:2067 13097 chunk-size-limit type: f # OptionParser:2074 13097 chunk-size-limit default: 2.0 # OptionParser:2028 13097 Parsing opt spec: group => default spec => chunk-time=f desc => Adjust the chunk size dynamically so each checksum query takes this long to execute (default 0.5) attributes => HASH(0x31a1970) # OptionParser:2067 13097 chunk-time type: f # OptionParser:2074 13097 chunk-time default: 0.5 # OptionParser:2028 13097 Parsing opt spec: group => Filter spec => columns|c=a desc => Checksum only this comma-separated list of columns attributes => HASH(0x31a1898) # OptionParser:2067 13097 columns type: a # OptionParser:2028 13097 Parsing opt spec: group => Config spec => config=A desc => Read this comma-separated list of config files; if specified, this must be the first option on the command line attributes => HASH(0x31a17a8) # OptionParser:2067 13097 config type: A # OptionParser:2028 13097 Parsing opt spec: group => default spec => create-replicate-table! desc => Create the --replicate database and table if they do not exist (default yes) attributes => HASH(0x31a16d0) # OptionParser:2067 13097 create-replicate-table type: undef # OptionParser:2074 13097 create-replicate-table default: yes # OptionParser:2028 13097 Parsing opt spec: group => Filter spec => databases|d=h desc => Only checksum this comma-separated list of databases attributes => HASH(0x31a15f8) # OptionParser:2067 13097 databases type: h # OptionParser:2028 13097 Parsing opt spec: group => Filter spec => databases-regex=s desc => Only checksum databases whose names match this Perl regex attributes => HASH(0x31a1508) # OptionParser:2067 13097 databases-regex type: s # OptionParser:2028 13097 Parsing opt spec: group => Connection spec => defaults-file|F=s desc => Only read mysql options from the given file attributes => HASH(0x31a1430) # OptionParser:2067 13097 defaults-file type: s # OptionParser:2028 13097 Parsing opt spec: group => default spec => empty-replicate-table! desc => Delete previous checksums for each table before checksumming the table (default yes) attributes => HASH(0x318f2c0) # OptionParser:2067 13097 empty-replicate-table type: undef # OptionParser:2074 13097 empty-replicate-table default: yes # OptionParser:2028 13097 Parsing opt spec: group => Filter spec => engines|e=h desc => Only checksum tables which use these storage engines attributes => HASH(0x318f110) # OptionParser:2067 13097 engines type: h # OptionParser:2028 13097 Parsing opt spec: group => Output spec => explain+ desc => Show, but do not execute, checksum queries (disables --[no]empty-replicate-table) (default 0) attributes => HASH(0x318f530) # OptionParser:2067 13097 explain type: undef # OptionParser:2074 13097 explain default: 0 # OptionParser:2083 13097 Deferring check of disables rule for HASH(0x318f398) disables --[no]empty-replicate-table) (default 0) # OptionParser:2028 13097 Parsing opt spec: group => default spec => float-precision=i desc => Precision for FLOAT and DOUBLE number-to-string conversion attributes => HASH(0x318f428) # OptionParser:2067 13097 float-precision type: i # OptionParser:2028 13097 Parsing opt spec: group => default spec => function=s desc => Hash function for checksums (FNV1A_64, MURMUR_HASH, SHA1, MD5, CRC32, etc) attributes => HASH(0x318f080) # OptionParser:2067 13097 function type: s # OptionParser:2028 13097 Parsing opt spec: group => Help spec => help desc => Show help and exit attributes => HASH(0x318f140) # OptionParser:2067 13097 help type: undef # OptionParser:2028 13097 Parsing opt spec: group => Connection spec => host|h=s desc => Host to connect to (default localhost) attributes => HASH(0x30404a8) # OptionParser:2067 13097 host type: s # OptionParser:2074 13097 host default: localhost # OptionParser:2028 13097 Parsing opt spec: group => Filter spec => ignore-columns=H desc => Ignore this comma-separated list of columns when calculating the checksum attributes => HASH(0x3040160) # OptionParser:2067 13097 ignore-columns type: H # OptionParser:2028 13097 Parsing opt spec: group => Filter spec => ignore-databases=H desc => Ignore this comma-separated list of databases attributes => HASH(0x2f1c4f0) # OptionParser:2067 13097 ignore-databases type: H # OptionParser:2028 13097 Parsing opt spec: group => Filter spec => ignore-databases-regex=s desc => Ignore databases whose names match this Perl regex attributes => HASH(0x2ebd260) # OptionParser:2067 13097 ignore-databases-regex type: s # OptionParser:2028 13097 Parsing opt spec: group => Filter spec => ignore-engines=H desc => Ignore this comma-separated list of storage engines (default FEDERATED,MRG_MyISAM) attributes => HASH(0x318eeb8) # OptionParser:2067 13097 ignore-engines type: H # OptionParser:2074 13097 ignore-engines default: FEDERATED,MRG_MyISAM # OptionParser:2028 13097 Parsing opt spec: group => Filter spec => ignore-tables=H desc => Ignore this comma-separated list of tables attributes => HASH(0x318efa8) # OptionParser:2067 13097 ignore-tables type: H # OptionParser:2028 13097 Parsing opt spec: group => Filter spec => ignore-tables-regex=s desc => Ignore tables whose names match the Perl regex attributes => HASH(0x30769e0) # OptionParser:2067 13097 ignore-tables-regex type: s # OptionParser:2028 13097 Parsing opt spec: group => Throttle spec => max-lag=m desc => Pause checksumming until all replicas' lag is less than this value (default 1s) attributes => HASH(0x3076a88) # OptionParser:2067 13097 max-lag type: m # OptionParser:2074 13097 max-lag default: 1s # OptionParser:2028 13097 Parsing opt spec: group => Throttle spec => max-load=A desc => Examine SHOW GLOBAL STATUS after every chunk, and pause if any status variables are higher than the threshold (default Threads_running=25) attributes => HASH(0x3076b78) # OptionParser:2067 13097 max-load type: A # OptionParser:2074 13097 max-load default: Threads_running=25 # OptionParser:2028 13097 Parsing opt spec: group => Connection spec => password|p=s desc => Password to use when connecting attributes => HASH(0x3076c68) # OptionParser:2067 13097 password type: s # OptionParser:2028 13097 Parsing opt spec: group => default spec => pause-file=s desc => Execution will be paused while the file specified by this param exists attributes => HASH(0x3076d58) # OptionParser:2067 13097 pause-file type: s # OptionParser:2028 13097 Parsing opt spec: group => default spec => pid=s desc => Create the given PID file attributes => HASH(0x3076e18) # OptionParser:2067 13097 pid type: s # OptionParser:2028 13097 Parsing opt spec: group => default spec => plugin=s desc => Perl module file that defines a pt_table_checksum_plugin class attributes => HASH(0x3076ed8) # OptionParser:2067 13097 plugin type: s # OptionParser:2028 13097 Parsing opt spec: group => Connection spec => port|P=i desc => Port number to use for connection attributes => HASH(0x3077010) # OptionParser:2067 13097 port type: i # OptionParser:2028 13097 Parsing opt spec: group => default spec => progress=a desc => Print progress reports to STDERR (default time,30) attributes => HASH(0x3077100) # OptionParser:2067 13097 progress type: a # OptionParser:2074 13097 progress default: time,30 # OptionParser:2028 13097 Parsing opt spec: group => default spec => quiet|q+ desc => Print only the most important information (disables --progress) (default 0) attributes => HASH(0x30771d8) # OptionParser:2067 13097 quiet type: undef # OptionParser:2074 13097 quiet default: 0 # OptionParser:2083 13097 Deferring check of disables rule for HASH(0x3077178) disables --progress) (default 0) # OptionParser:2028 13097 Parsing opt spec: group => default spec => recurse=i desc => Number of levels to recurse in the hierarchy when discovering replicas attributes => HASH(0x30772c8) # OptionParser:2067 13097 recurse type: i # OptionParser:2028 13097 Parsing opt spec: group => default spec => recursion-method=a desc => Preferred recursion method for discovering replicas. pt-table-checksum performs several REPLICA CHECKS before and while running (default processlist,hosts) attributes => HASH(0x3077388) # OptionParser:2067 13097 recursion-method type: a # OptionParser:2074 13097 recursion-method default: processlist,hosts # OptionParser:2028 13097 Parsing opt spec: group => default spec => replicate=s desc => Write checksum results to this table (default percona.checksums) attributes => HASH(0x319d778) # OptionParser:2067 13097 replicate type: s # OptionParser:2074 13097 replicate default: percona.checksums # OptionParser:2028 13097 Parsing opt spec: group => default spec => replicate-check! desc => Check replicas for data differences after finishing each table (default yes) attributes => HASH(0x319d850) # OptionParser:2067 13097 replicate-check type: undef # OptionParser:2074 13097 replicate-check default: yes # OptionParser:2028 13097 Parsing opt spec: group => default spec => replicate-check-only desc => Check replicas for consistency without executing checksum queries attributes => HASH(0x319d928) # OptionParser:2067 13097 replicate-check-only type: undef # OptionParser:2028 13097 Parsing opt spec: group => default spec => replicate-check-retries=i desc => Retry checksum comparison this many times when a difference is encountered (default 1) attributes => HASH(0x319d9d0) # OptionParser:2067 13097 replicate-check-retries type: i # OptionParser:2074 13097 replicate-check-retries default: 1 # OptionParser:2028 13097 Parsing opt spec: group => default spec => replicate-database=s desc => USE only this database attributes => HASH(0x319daa8) # OptionParser:2067 13097 replicate-database type: s # OptionParser:2028 13097 Parsing opt spec: group => default spec => resume desc => Resume checksumming from the last completed chunk (disables --[no]empty-replicate-table) attributes => HASH(0x319db68) # OptionParser:2067 13097 resume type: undef # OptionParser:2083 13097 Deferring check of disables rule for HASH(0x31a13b8) disables --[no]empty-replicate-table) # OptionParser:2028 13097 Parsing opt spec: group => default spec => retries=i desc => Retry a chunk this many times when there is a nonfatal error (default 2) attributes => HASH(0x320f5c0) # OptionParser:2067 13097 retries type: i # OptionParser:2074 13097 retries default: 2 # OptionParser:2028 13097 Parsing opt spec: group => default spec => run-time=m desc => How long to run attributes => HASH(0x320f698) # OptionParser:2067 13097 run-time type: m # OptionParser:2028 13097 Parsing opt spec: group => default spec => separator=s desc => The separator character used for CONCAT_WS() (default #) attributes => HASH(0x320f758) # OptionParser:2067 13097 separator type: s # OptionParser:2074 13097 separator default: # # OptionParser:2028 13097 Parsing opt spec: group => default spec => slave-user=s desc => Sets the user to be used to connect to the slaves attributes => HASH(0x320f830) # OptionParser:2067 13097 slave-user type: s # OptionParser:2028 13097 Parsing opt spec: group => default spec => slave-password=s desc => Sets the password to be used to connect to the slaves attributes => HASH(0x320f8f0) # OptionParser:2067 13097 slave-password type: s # OptionParser:2028 13097 Parsing opt spec: group => Connection spec => set-vars=A desc => Set the MySQL variables in this comma-separated list of variable=value pairs attributes => HASH(0x320f9b0) # OptionParser:2067 13097 set-vars type: A # OptionParser:2028 13097 Parsing opt spec: group => Connection spec => socket|S=s desc => Socket file to use for connection attributes => HASH(0x320fa88) # OptionParser:2067 13097 socket type: s # OptionParser:2028 13097 Parsing opt spec: group => default spec => slave-skip-tolerance=f desc => When a master table is marked to be checksumed in only one chunk but a slave table exceeds the maximum accepted size for this, the table is skipped (default 1.0) attributes => HASH(0x320fb78) # OptionParser:2067 13097 slave-skip-tolerance type: f # OptionParser:2074 13097 slave-skip-tolerance default: 1.0 # OptionParser:2028 13097 Parsing opt spec: group => Filter spec => tables|t=h desc => Checksum only this comma-separated list of tables attributes => HASH(0x320fc50) # OptionParser:2067 13097 tables type: h # OptionParser:2028 13097 Parsing opt spec: group => Filter spec => tables-regex=s desc => Checksum only tables whose names match this Perl regex attributes => HASH(0x320fd40) # OptionParser:2067 13097 tables-regex type: s # OptionParser:2028 13097 Parsing opt spec: group => default spec => trim desc => Add TRIM() to VARCHAR columns (helps when comparing 4.1 to >= 5.0) attributes => HASH(0x320fe18) # OptionParser:2067 13097 trim type: undef # OptionParser:2028 13097 Parsing opt spec: group => Connection spec => user|u=s desc => User for login if not current user attributes => HASH(0x320fec0) # OptionParser:2067 13097 user type: s # OptionParser:2028 13097 Parsing opt spec: group => Help spec => version desc => Show version and exit attributes => HASH(0x320ffb0) # OptionParser:2067 13097 version type: undef # OptionParser:2028 13097 Parsing opt spec: group => default spec => version-check! desc => Check for the latest version of Percona Toolkit, MySQL, and other programs (default yes) attributes => HASH(0x3210070) # OptionParser:2067 13097 version-check type: undef # OptionParser:2074 13097 version-check default: yes # OptionParser:2028 13097 Parsing opt spec: group => default spec => where=s desc => Do only rows matching this WHERE clause attributes => HASH(0x3210148) # OptionParser:2067 13097 where type: s # OptionParser:2089 13097 Parsing rule: This tool accepts additional command-line arguments. Refer to the SYNOPSIS and usage information for details. # OptionParser:2145 13097 Participants for This tool accepts additional command-line arguments. Refer to the SYNOPSIS and usage information for details. : # OptionParser:2121 13097 Strict mode disabled by rule # OptionParser:2145 13097 Participants for disables --[no]empty-replicate-table) : empty-replicate-table # OptionParser:2131 13097 Option resume disables empty-replicate-table # OptionParser:2145 13097 Participants for disables --progress) (default 0) : progress # OptionParser:2131 13097 Option quiet disables progress # OptionParser:2145 13097 Participants for disables --[no]empty-replicate-table) (default 0) : empty-replicate-table # OptionParser:2131 13097 Option explain disables empty-replicate-table # OptionParser:1871 13097 Parsing DSN OPTIONS # OptionParser:1961 13097 =item * A # OptionParser:1988 13097 Short help: Default character set # OptionParser:1961 13097 =item * D # OptionParser:1988 13097 Short help: DSN table database # OptionParser:1961 13097 =item * F # OptionParser:1988 13097 Short help: Defaults file for connection values # OptionParser:1961 13097 =item * h # OptionParser:1988 13097 Short help: Connect to host # OptionParser:1961 13097 =item * p # OptionParser:1988 13097 Short help: Password to use when connecting # OptionParser:1961 13097 =item * P # OptionParser:1988 13097 Short help: Port number to use for connection # OptionParser:1961 13097 =item * S # OptionParser:1988 13097 Short help: Socket file to use for connection # OptionParser:1961 13097 =item * t # OptionParser:1988 13097 Short help: DSN table table # OptionParser:1961 13097 =item * u # OptionParser:1988 13097 Short help: User for login if not current user # DSNParser:1389 13097 DSN option: copy=1, dsn=charset, desc=Default character set, key=A # DSNParser:1389 13097 DSN option: copy=, dsn=undef, desc=DSN table database, key=D # DSNParser:1389 13097 DSN option: copy=1, dsn=mysql_read_default_file, desc=Defaults file for connection values, key=F # DSNParser:1389 13097 DSN option: copy=1, dsn=host, desc=Connect to host, key=h # DSNParser:1389 13097 DSN option: copy=1, dsn=password, desc=Password to use when connecting, key=p # DSNParser:1389 13097 DSN option: copy=1, dsn=port, desc=Port number to use for connection, key=P # DSNParser:1389 13097 DSN option: copy=, dsn=mysql_socket, desc=Socket file to use for connection, key=S # DSNParser:1389 13097 DSN option: copy=, dsn=undef, desc=DSN table table, key=t # DSNParser:1389 13097 DSN option: copy=1, dsn=user, desc=User for login if not current user, key=u # OptionParser:1915 13097 pt-table-checksum 2.2.20 # OptionParser:2255 13097 Cannot open /etc/percona-toolkit/percona-toolkit.conf: No such file or directory # # OptionParser:2255 13097 Cannot open /etc/percona-toolkit/pt-table-checksum.conf: No such file or directory # # OptionParser:2255 13097 Cannot open /root/.percona-toolkit.conf: No such file or directory # # OptionParser:2255 13097 Cannot open /root/.pt-table-checksum.conf: No such file or directory # # OptionParser:2217 13097 Got option slave-user = user # OptionParser:2217 13097 Got option slave-password = 1234 # OptionParser:2217 13097 Got option quiet = 1 # OptionParser:2444 13097 Nothing to validate for option slave-skip-tolerance type f value 1.0 # OptionParser:2444 13097 Nothing to validate for option tables type h value undef # OptionParser:2444 13097 Nothing to validate for option password type s value undef # OptionParser:2444 13097 Nothing to validate for option chunk-index-columns type i value undef # OptionParser:2444 13097 Nothing to validate for option chunk-time type f value 0.5 # OptionParser:2395 13097 Parsing option max-lag as a time value # OptionParser:2409 13097 Setting option max-lag to 1 # OptionParser:2444 13097 Nothing to validate for option function type s value undef # OptionParser:2444 13097 Nothing to validate for option slave-user type s value user # OptionParser:2444 13097 Nothing to validate for option pause-file type s value undef # OptionParser:2444 13097 Nothing to validate for option where type s value undef # OptionParser:2444 13097 Nothing to validate for option defaults-file type s value undef # OptionParser:2434 13097 Parsing option chunk-size as a size value # OptionParser:2444 13097 Nothing to validate for option ignore-tables-regex type s value undef # OptionParser:2444 13097 Nothing to validate for option ignore-databases-regex type s value undef # OptionParser:2444 13097 Nothing to validate for option check-slave-lag type s value undef # OptionParser:2444 13097 Nothing to validate for option chunk-index type s value undef # OptionParser:2444 13097 Nothing to validate for option pid type s value undef # OptionParser:2444 13097 Nothing to validate for option float-precision type i value undef # OptionParser:2444 13097 Nothing to validate for option replicate type s value percona.checksums # OptionParser:2444 13097 Nothing to validate for option user type s value undef # OptionParser:2444 13097 Nothing to validate for option port type i value undef # OptionParser:2444 13097 Nothing to validate for option socket type s value undef # OptionParser:2395 13097 Parsing option check-interval as a time value # OptionParser:2400 13097 No suffix given; using s for check-interval (value: 1 ) # OptionParser:2409 13097 Setting option check-interval to 1 # OptionParser:2444 13097 Nothing to validate for option recurse type i value undef # OptionParser:2444 13097 Nothing to validate for option columns type a value undef # OptionParser:2444 13097 Nothing to validate for option replicate-database type s value undef # OptionParser:2444 13097 Nothing to validate for option engines type h value undef # OptionParser:2444 13097 Nothing to validate for option retries type i value 2 # OptionParser:2444 13097 Nothing to validate for option run-time type m value undef # OptionParser:2444 13097 Nothing to validate for option databases-regex type s value undef # OptionParser:2444 13097 Nothing to validate for option replicate-check-retries type i value 1 # OptionParser:2444 13097 Nothing to validate for option plugin type s value undef # OptionParser:2322 13097 Unset options progress because quiet disables them # OptionParser:2444 13097 Nothing to validate for option tables-regex type s value undef # OptionParser:2444 13097 Nothing to validate for option chunk-size-limit type f value 2.0 # OptionParser:2444 13097 Nothing to validate for option databases type h value undef # OptionParser:2444 13097 Nothing to validate for option host type s value localhost # OptionParser:2444 13097 Nothing to validate for option separator type s value # # OptionParser:2444 13097 Nothing to validate for option slave-password type s value 1234 # OptionParser:2846 13097 --set-vars: $VAR1 = { # innodb_lock_wait_timeout => { # default => 1, # val => '1' # }, # wait_timeout => { # default => 1, # val => '10000' # } # }; # # DSNParser:1405 13097 Setting set-vars property # OptionParser:2518 13097 Getting description and usage from SYNOPSIS in ./pt-table-checksum # OptionParser:2779 13097 Parsing SYNOPSIS in ./pt-table-checksum # OptionParser:2792 13097 Raw SYNOPSIS text: Usage: pt-table-checksum [OPTIONS] [DSN] # # pt-table-checksum performs an online replication consistency check by executing # checksum queries on the master, which produces different results on replicas # that are inconsistent with the master. The optional DSN specifies the master # host. The tool's L<"EXIT STATUS"> is non-zero if any differences are found, # or if any warnings or errors occur. # # # OptionParser:2522 13097 Description: pt-table-checksum performs an online replication consistency check by executing checksum queries on the master, which produces different results on replicas that are inconsistent with the master. The optional DSN specifies the master host. The tool's L<"EXIT STATUS"> is non-zero if any differences are found, or if any warnings or errors occur. # Usage: pt-table-checksum [OPTIONS] [DSN] # Daemon:7102 13097 Starting daemon # Daemon:7172 13097 Daemon running # DSNParser:1477 13097 DSN string made from options: h=localhost # DSNParser:1417 13097 Parsing h=localhost # DSNParser:1436 13097 Finding value for S # DSNParser:1446 13097 Copying value for S from defaults # DSNParser:1436 13097 Finding value for F # DSNParser:1446 13097 Copying value for F from defaults # DSNParser:1436 13097 Finding value for A # DSNParser:1446 13097 Copying value for A from defaults # DSNParser:1436 13097 Finding value for P # DSNParser:1446 13097 Copying value for P from defaults # DSNParser:1436 13097 Finding value for u # DSNParser:1446 13097 Copying value for u from defaults # DSNParser:1436 13097 Finding value for p # DSNParser:1446 13097 Copying value for p from defaults # DSNParser:1436 13097 Finding value for h # DSNParser:1436 13097 Finding value for D # DSNParser:1446 13097 Copying value for D from defaults # DSNParser:1436 13097 Finding value for t # DSNParser:1446 13097 Copying value for t from defaults # DSNParser:1417 13097 Parsing h=localhost # DSNParser:1436 13097 Finding value for S # DSNParser:1446 13097 Copying value for S from defaults # DSNParser:1436 13097 Finding value for F # DSNParser:1446 13097 Copying value for F from defaults # DSNParser:1436 13097 Finding value for A # DSNParser:1446 13097 Copying value for A from defaults # DSNParser:1436 13097 Finding value for P # DSNParser:1446 13097 Copying value for P from defaults # DSNParser:1436 13097 Finding value for u # DSNParser:1446 13097 Copying value for u from defaults # DSNParser:1436 13097 Finding value for p # DSNParser:1446 13097 Copying value for p from defaults # DSNParser:1436 13097 Finding value for h # DSNParser:1436 13097 Finding value for D # DSNParser:1446 13097 Copying value for D from defaults # DSNParser:1436 13097 Finding value for t # DSNParser:1446 13097 Copying value for t from defaults # DSNParser:1530 13097 DBI:mysql:;host=localhost;mysql_read_default_group=client # DSNParser:1579 13097 DBI:mysql:;host=localhost;mysql_read_default_group=client undef undef mysql_enable_utf8=>0, ShowErrorStatement=>1, AutoCommit=>1, RaiseError=>1, PrintError=>0 # DSNParser:1738 13097 DBI::db=HASH(0x323cd20) SET SESSION innodb_lock_wait_timeout=1 # DSNParser:1738 13097 DBI::db=HASH(0x323cd20) SET SESSION wait_timeout=10000 # DSNParser:1628 13097 DBI::db=HASH(0x323cd20) SELECT @@SQL_MODE # DSNParser:1638 13097 DBI::db=HASH(0x323cd20) SET @@SQL_QUOTE_SHOW_CREATE = 1/*!40101, @@SQL_MODE='NO_AUTO_VALUE_ON_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'*/ # DSNParser:1647 13097 DBH info: DBI::db=HASH(0x323cd20) $VAR1 = { # '@@hostname' => 'base.master.localdomain', # 'CONNECTION_ID()' => '30', # 'DATABASE()' => undef, # 'VERSION()' => '10.1.20-MariaDB' # }; # Connection info: Localhost via UNIX socket Character set info: $VAR1 = [ # { # Value => 'latin1', # Variable_name => 'character_set_client' # }, # { # Value => 'latin1', # Variable_name => 'character_set_connection' # }, # { # Value => 'latin1', # Variable_name => 'character_set_database' # }, # { # Value => 'binary', # Variable_name => 'character_set_filesystem' # }, # { # Value => 'latin1', # Variable_name => 'character_set_results' # }, # { # Value => 'latin1', # Variable_name => 'character_set_server' # }, # { # Value => 'utf8', # Variable_name => 'character_set_system' # }, # { # Value => '/usr/share/mysql/charsets/', # Variable_name => 'character_sets_dir' # } # ]; # $DBD::mysql::VERSION: 4.023 $DBI::VERSION: 1.627 # Cxn:3625 13097 DBI::db=HASH(0x323cd20) Setting dbh # Cxn:3630 13097 DBI::db=HASH(0x323cd20) SELECT @@server_id /*!50038 , @@hostname*/ # Cxn:3632 13097 DBI::db=HASH(0x323cd20) hostname: base.master.localdomain 1 # pt_table_checksum:9261 13097 DBI::db=HASH(0x323cd20) SELECT @@SQL_MODE # pt_table_checksum:9268 13097 DBI::db=HASH(0x323cd20) SET SQL_MODE='NO_AUTO_VALUE_ON_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' # VersionParser:4238 13097 VersionParser got a dbh, trying to get the version # VersionParser:4286 13097 InnoDB support: DEFAULT # VersionParser:4298 13097 InnoDB version: 5.6.34-79.1 # pt_table_checksum:9283 13097 DBI::db=HASH(0x323cd20) SELECT @@binlog_format # pt_table_checksum:9285 13097 Original binlog_format: STATEMENT # pt_table_checksum:9316 13097 DBI::db=HASH(0x323cd20) SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ # Cxn:3613 13097 DBI::db=HASH(0x323cd20) Connected dbh to base.master.localdomain h=localhost # Percona::XtraDB::Cluster:3804 13097 base.master.localdomain SHOW VARIABLES LIKE 'wsrep_on' # Percona::XtraDB::Cluster:3806 13097 $VAR1 = [ # 'wsrep_on', # 'OFF' # ]; # # MasterSlave:5127 13097 Recursion methods: processlist hosts # MasterSlave:5137 13097 Connected to h=localhost # MasterSlave:5146 13097 SELECT @@SERVER_ID # MasterSlave:5148 13097 Working on server ID 1 # MasterSlave:5181 13097 Looking for slaves on h=localhost using methods processlist hosts # MasterSlave:5188 13097 Finding slaves with _find_slaves_by_processlist # MasterSlave:5250 13097 DBI::db=HASH(0x323cd20) SHOW GRANTS FOR CURRENT_USER() # MasterSlave:5280 13097 DBI::db=HASH(0x323cd20) SHOW FULL PROCESSLIST # DSNParser:1417 13097 Parsing h=mysql_slave # DSNParser:1436 13097 Finding value for S # DSNParser:1446 13097 Copying value for S from defaults # DSNParser:1436 13097 Finding value for F # DSNParser:1446 13097 Copying value for F from defaults # DSNParser:1436 13097 Finding value for A # DSNParser:1446 13097 Copying value for A from defaults # DSNParser:1436 13097 Finding value for P # DSNParser:1446 13097 Copying value for P from defaults # DSNParser:1436 13097 Finding value for u # DSNParser:1446 13097 Copying value for u from defaults # DSNParser:1436 13097 Finding value for p # DSNParser:1446 13097 Copying value for p from defaults # DSNParser:1436 13097 Finding value for h # DSNParser:1436 13097 Finding value for D # DSNParser:1446 13097 Copying value for D from defaults # DSNParser:1436 13097 Finding value for t # DSNParser:1446 13097 Copying value for t from defaults # MasterSlave:5193 13097 Found 1 slaves # MasterSlave:5170 13097 Recursing from h=localhost to h=mysql_slave # MasterSlave:5127 13097 Recursion methods: processlist hosts # DSNParser:1530 13097 DBI:mysql:;host=mysql_slave;mysql_read_default_group=client # DSNParser:1579 13097 DBI:mysql:;host=mysql_slave;mysql_read_default_group=client undef undef mysql_enable_utf8=>0, ShowErrorStatement=>1, AutoCommit=>1, RaiseError=>1, PrintError=>0 # DSNParser:1579 13097 DBI:mysql:;host=mysql_slave;mysql_read_default_group=client undef undef mysql_enable_utf8=>0, ShowErrorStatement=>1, AutoCommit=>1, RaiseError=>1, PrintError=>0 Cannot connect to h=mysql_slave # Cxn:3707 13097 base.master.localdomain SHOW VARIABLES LIKE 'wsrep_on' # Cxn:3694 13097 SELECT @@SERVER_ID # Cxn:3697 13097 Generated unique id for cluster: 1 # Cxn:3717 13097 Removing duplicates from base.master.localdomain # Cxn:3707 13097 base.master.localdomain SHOW VARIABLES LIKE 'wsrep_on' # Cxn:3694 13097 SELECT @@SERVER_ID # Cxn:3697 13097 Generated unique id for cluster: 1 # Cxn:3723 13097 Server ID for base.master.localdomain : 1 # pt_table_checksum:9495 13097 0 slaves found Diffs cannot be detected because no slaves were found. Please read the --recursion-method documentation for information. # VersionParser:4238 13097 VersionParser got a dbh, trying to get the version # VersionParser:4286 13097 InnoDB support: DEFAULT # VersionParser:4298 13097 InnoDB version: 5.6.34-79.1 # pt_table_checksum:9638 13097 Will check slave lag on all slaves # pt_table_checksum:9702 13097 Checking slave replication filters # pt_table_checksum:10938 13097 Checking --replicate table `percona`.`checksums` # pt_table_checksum:10947 13097 SHOW DATABASES LIKE 'percona' # pt_table_checksum:10962 13097 CREATE DATABASE IF NOT EXISTS `percona` /* pt-table-checksum */ # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # TableParser:4543 13097 Checking `percona`.`checksums` # TableParser:4549 13097 SHOW TABLES FROM `percona` LIKE 'checksums' # TableParser:4564 13097 Table percona checksums exists # pt_table_checksum:11019 13097 --replicate table exists: yes # pt_table_checksum:11311 13097 Creating --replicate table `percona`.`checksums` # pt_table_checksum:11319 13097 DBI::db=HASH(0x323cd20) CREATE TABLE IF NOT EXISTS `percona`.`checksums` ( # db CHAR(64) NOT NULL, # tbl CHAR(64) NOT NULL, # chunk INT NOT NULL, # chunk_time FLOAT NULL, # chunk_index VARCHAR(200) NULL, # lower_boundary TEXT NULL, # upper_boundary TEXT NULL, # this_crc CHAR(40) NOT NULL, # this_cnt INT NOT NULL, # master_crc CHAR(40) NULL, # master_cnt INT NULL, # ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, # PRIMARY KEY (db, tbl, chunk), # INDEX ts_db_tbl (ts, db, tbl) # ) ENGINE=InnoDB DEFAULT CHARSET=utf8 # MySQLStatusWaiter:8525 13097 Parsing spec for max thresholds # MySQLStatusWaiter:8667 13097 Checking and setting values # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8683 13097 Wait if Threads_running >= 25 # MySQLStatusWaiter:8535 13097 Parsing spec for critical thresholds # RowChecksum:5955 13097 SELECT CRC32('test-string') # RowChecksum:5963 13097 Chosen hash func: CRC32 # RowChecksum:6003 13097 SELECT CRC32('a') bigint 10 # RowChecksum:6009 13097 crc_type: int length: 10 # Percona::XtraDB::Cluster:3804 13097 base.master.localdomain SHOW VARIABLES LIKE 'wsrep_on' # Percona::XtraDB::Cluster:3806 13097 $VAR1 = [ # 'wsrep_on', # 'OFF' # ]; # # SchemaIterator:7401 13097 Filter ignore-tables value: percona checksums # SchemaIterator:7405 13097 Filter ignore-engines value: mrg_myisam # SchemaIterator:7405 13097 Filter ignore-engines value: federated # SchemaIterator:7425 13097 Schema object filters: $VAR1 = { # 'ignore-engines' => { # federated => 1, # mrg_myisam => 1 # }, # 'ignore-tables' => { # percona => { # checksums => 1 # } # } # }; # # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # SchemaIterator:7540 13097 SHOW DATABASES # SchemaIterator:7618 13097 Database information_schema is a system database, ignoring # SchemaIterator:7618 13097 Database percona is a system database, ignoring # SchemaIterator:7618 13097 Database performance_schema is a system database, ignoring # SchemaIterator:7546 13097 Found 2 databases # SchemaIterator:7553 13097 Next database: employees # SchemaIterator:7559 13097 SHOW /*!50002 FULL*/ TABLES FROM `employees` # SchemaIterator:7570 13097 Found 6 tables in database employees # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `employees` # TableParser:4378 13097 SHOW CREATE TABLE `employees`.`departments` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: InnoDB # TableParser:4420 13097 Table cols: `dept_no`, `dept_name` # TableParser:4572 13097 Storage engine: InnoDB # TableParser:4588 13097 Parsed key: PRIMARY KEY (`dept_no`), # TableParser:4608 13097 PRIMARY key cols: `dept_no` # TableParser:4630 13097 This key is the clustered key # TableParser:4588 13097 Parsed key: UNIQUE KEY `dept_name` (`dept_name`) # TableParser:4608 13097 dept_name key cols: `dept_name` # SchemaIterator:7459 13097 Next schema object: employees departments # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `dept_no`, `dept_name`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `dept_no`, `dept_name`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `employees`.`departments` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'Using index', # id => '1', # key => 'dept_name', # key_len => '42', # possible_keys => undef, # ref => undef, # rows => '9', # select_type => 'SIMPLE', # table => 'departments', # type => 'index' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY, dept_name # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `dept_no`, `dept_name`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`departments` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `dept_no`, `dept_name`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`departments` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `employees` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `dept_no`, `dept_name`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`departments` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `dept_no`, `dept_name`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`departments` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using index', # id => '1', # key => 'dept_name', # key_len => '42', # possible_keys => undef, # ref => undef, # rows => '9', # select_type => 'SIMPLE', # table => 'departments', # type => 'index' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `dept_no`, `dept_name`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`departments` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00505995750427246 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1778 # WeightedAvgRate:8736 13097 Master op time: 9 n / 0.00505995750427246 s # WeightedAvgRate:8748 13097 Initial avg rate: 1778.67106441125 n/s # WeightedAvgRate:8752 13097 Adjust n to 889 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `employees` # TableParser:4378 13097 SHOW CREATE TABLE `employees`.`dept_emp` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: InnoDB # TableParser:4420 13097 Table cols: `emp_no`, `dept_no`, `from_date`, `to_date` # TableParser:4572 13097 Storage engine: InnoDB # TableParser:4588 13097 Parsed key: PRIMARY KEY (`emp_no`,`dept_no`), # TableParser:4608 13097 PRIMARY key cols: `emp_no`, `dept_no` # TableParser:4630 13097 This key is the clustered key # TableParser:4588 13097 Parsed key: KEY `dept_no` (`dept_no`), # TableParser:4608 13097 dept_no key cols: `dept_no` # SchemaIterator:7459 13097 Next schema object: employees dept_emp # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `employees`.`dept_emp` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '331570', # select_type => 'SIMPLE', # table => 'dept_emp', # type => 'ALL' # }; # # NibbleIterator:6548 13097 One nibble: no # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY, dept_no # NibbleIterator:6643 13097 Best index: PRIMARY # TableNibbler:4772 13097 Will ascend index PRIMARY # TableNibbler:4784 13097 Will ascend columns emp_no, dept_no # TableNibbler:4795 13097 Will ascend, in ordinal position: 0, 1 # NibbleIterator:6228 13097 Ascend params: $VAR1 = { # boundaries => { # '<' => '((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` < ?))', # '<=' => '((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` <= ?))', # '>' => '((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` > ?))', # '>=' => '((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?))' # }, # cols => [ # 'emp_no', # 'dept_no', # 'from_date', # 'to_date' # ], # index => 'PRIMARY', # scols => [ # 'emp_no', # 'emp_no', # 'dept_no' # ], # slice => [ # 0, # 0, # 1 # ], # where => '((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` > ?))' # }; # # NibbleIterator:6245 13097 First lower boundary statement: SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `dept_no` FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) ORDER BY `emp_no`, `dept_no` LIMIT 1 /*first lower boundary*/ # NibbleIterator:6270 13097 Last upper boundary statement: SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `dept_no` FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) ORDER BY `emp_no` DESC,`dept_no` DESC LIMIT 1 /*last upper boundary*/ # NibbleIterator:6281 13097 Upper boundary statement: SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `dept_no` FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) ORDER BY `emp_no`, `dept_no` LIMIT ?, 2 /*next chunk boundary*/ # NibbleIterator:6294 13097 Nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` <= ?)) /*checksum chunk*/ # NibbleIterator:6307 13097 Explain nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` <= ?)) /*explain checksum chunk*/ # NibbleIterator:6310 13097 Initial chunk size (LIMIT): 888 # OobNibbleIterator:6921 13097 Past lower statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` < ?)) ORDER BY `emp_no`, `dept_no` /*past lower chunk*/ # OobNibbleIterator:6931 13097 Past lower statement: EXPLAIN SELECT COUNT(*), '0' FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` < ?)) ORDER BY `emp_no`, `dept_no` /*explain past lower chunk*/ # OobNibbleIterator:6938 13097 Past upper statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` > ?)) ORDER BY `emp_no`, `dept_no` /*past upper chunk*/ # OobNibbleIterator:6948 13097 Past upper statement: EXPLAIN SELECT COUNT(*), '0' FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` > ?)) ORDER BY `emp_no`, `dept_no` /*explain past upper chunk*/ # OobNibbleIterator:6964 13097 Nibble past lower upper # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # NibbleIterator:6719 13097 First lower boundary: $VAR1 = [ # '10001', # '10001', # 'd005' # ]; # # NibbleIterator:6735 13097 Next lower boundary: $VAR1 = [ # '10001', # '10001', # 'd005' # ]; # # IndexLength:8870 13097 SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `dept_no` FROM `employees`.`dept_emp` FORCE INDEX (`PRIMARY`) WHERE `emp_no` IS NOT NULL AND `dept_no` IS NOT NULL ORDER BY `emp_no`, `dept_no` LIMIT 1 /*key_len*/ # IndexLength:8837 13097 EXPLAIN SELECT /*!40001 SQL_NO_CACHE */ * FROM `employees`.`dept_emp` FORCE INDEX (`PRIMARY`) WHERE `emp_no` = ? AND `dept_no` >= ? /*key_len*/ params: 10001 d005 # IndexLength:8841 13097 Range scan: $VAR1 = { # extra => 'Using where', # id => '1', # key => 'PRIMARY', # key_len => '8', # possible_keys => 'PRIMARY', # ref => undef, # rows => '1', # select_type => 'SIMPLE', # table => 'dept_emp', # type => 'range' # }; # # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `employees` # NibbleIterator:6364 13097 init callback returned 1 # pt_table_checksum:11350 13097 EXPLAIN SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `dept_no` FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) ORDER BY `emp_no`, `dept_no` LIMIT ?, 2 /*next chunk boundary*/ params: 10001 10001 d005 888 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where; Using index', # id => '1', # key => 'PRIMARY', # key_len => '8', # possible_keys => 'PRIMARY', # ref => undef, # rows => '165786', # select_type => 'SIMPLE', # table => 'dept_emp', # type => 'range' # }; # # NibbleIterator:6790 13097 next_boundaries callback returned 1 # NibbleIterator:6799 13097 SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `dept_no` FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) ORDER BY `emp_no`, `dept_no` LIMIT ?, 2 /*next chunk boundary*/ params: 10001, 10001, d005 888 # NibbleIterator:6802 13097 Next boundary: $VAR1 = [ # [ # '10806', # '10806', # 'd002' # ], # [ # '10806', # '10806', # 'd003' # ] # ]; # # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` <= ?)) /*checksum chunk*/ params: 10001, 10001, d005, 10806, 10806, d002 # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` <= ?)) /*explain checksum chunk*/ params: 10001 10001 d005 10806 10806 d002 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where', # id => '1', # key => 'PRIMARY', # key_len => '8', # possible_keys => 'PRIMARY', # ref => undef, # rows => '887', # select_type => 'SIMPLE', # table => 'dept_emp', # type => 'range' # }; # # Quoter:4057 13097 Serializing $VAR1 = [ # '10001', # '10001', # 'd005' # ]; # # Quoter:4073 13097 Serialized: < 10001,10001,d005 > # Quoter:4057 13097 Serializing $VAR1 = [ # '10806', # '10806', # 'd002' # ]; # # Quoter:4073 13097 Serialized: < 10806,10806,d002 > # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` <= ?)) /*checksum chunk*/ lower boundary: 10001 10001 d005 upper boundary: 10806 10806 d002 # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00296807289123535 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 111858 # WeightedAvgRate:8736 13097 Master op time: 889 n / 0.00296807289123535 s # WeightedAvgRate:8748 13097 Initial avg rate: 299520.945939433 n/s # WeightedAvgRate:8752 13097 Adjust n to 149760 # NibbleIterator:6505 13097 Set new chunk size (LIMIT): 149760 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # pt_table_checksum:11350 13097 EXPLAIN SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `dept_no` FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) ORDER BY `emp_no`, `dept_no` LIMIT ?, 2 /*next chunk boundary*/ params: 10806 10806 d003 149759 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where; Using index', # id => '1', # key => 'PRIMARY', # key_len => '8', # possible_keys => 'PRIMARY', # ref => undef, # rows => '165786', # select_type => 'SIMPLE', # table => 'dept_emp', # type => 'range' # }; # # NibbleIterator:6790 13097 next_boundaries callback returned 1 # NibbleIterator:6799 13097 SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `dept_no` FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) ORDER BY `emp_no`, `dept_no` LIMIT ?, 2 /*next chunk boundary*/ params: 10806, 10806, d003 149759 # NibbleIterator:6802 13097 Next boundary: $VAR1 = [ # [ # '236288', # '236288', # 'd003' # ], # [ # '236289', # '236289', # 'd002' # ] # ]; # # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` <= ?)) /*checksum chunk*/ params: 10806, 10806, d003, 236288, 236288, d003 # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` <= ?)) /*explain checksum chunk*/ params: 10806 10806 d003 236288 236288 d003 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where', # id => '1', # key => 'PRIMARY', # key_len => '8', # possible_keys => 'PRIMARY', # ref => undef, # rows => '165787', # select_type => 'SIMPLE', # table => 'dept_emp', # type => 'range' # }; # # Quoter:4057 13097 Serializing $VAR1 = [ # '10806', # '10806', # 'd003' # ]; # # Quoter:4073 13097 Serialized: < 10806,10806,d003 > # Quoter:4057 13097 Serializing $VAR1 = [ # '236288', # '236288', # 'd003' # ]; # # Quoter:4073 13097 Serialized: < 236288,236288,d003 > # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` <= ?)) /*checksum chunk*/ lower boundary: 10806 10806 d003 upper boundary: 236288 236288 d003 # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.11368203163147 # NibbleIterator:6408 13097 0 rows in nibble 2 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1237843 # WeightedAvgRate:8736 13097 Master op time: 149760 n / 0.11368203163147 s # WeightedAvgRate:8742 13097 Weighted avg rate: 1297810.66017078 n/s # WeightedAvgRate:8752 13097 Adjust n to 648905 # NibbleIterator:6505 13097 Set new chunk size (LIMIT): 648905 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # pt_table_checksum:11350 13097 EXPLAIN SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `dept_no` FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) ORDER BY `emp_no`, `dept_no` LIMIT ?, 2 /*next chunk boundary*/ params: 236289 236289 d002 648904 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where; Using index', # id => '1', # key => 'PRIMARY', # key_len => '8', # possible_keys => 'PRIMARY', # ref => undef, # rows => '165787', # select_type => 'SIMPLE', # table => 'dept_emp', # type => 'range' # }; # # NibbleIterator:6790 13097 next_boundaries callback returned 1 # NibbleIterator:6799 13097 SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `dept_no` FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) ORDER BY `emp_no`, `dept_no` LIMIT ?, 2 /*next chunk boundary*/ params: 236289, 236289, d002 648904 # NibbleIterator:6802 13097 Next boundary: $VAR1 = []; # # NibbleIterator:6819 13097 Last upper boundary: $VAR1 = [ # '499999', # '499999', # 'd004' # ]; # # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` <= ?)) /*checksum chunk*/ params: 236289, 236289, d002, 499999, 499999, d004 # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` <= ?)) /*explain checksum chunk*/ params: 236289 236289 d002 499999 499999 d004 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where', # id => '1', # key => 'PRIMARY', # key_len => '8', # possible_keys => 'PRIMARY', # ref => undef, # rows => '165788', # select_type => 'SIMPLE', # table => 'dept_emp', # type => 'range' # }; # # Quoter:4057 13097 Serializing $VAR1 = [ # '236289', # '236289', # 'd002' # ]; # # Quoter:4073 13097 Serialized: < 236289,236289,d002 > # Quoter:4057 13097 Serializing $VAR1 = [ # '499999', # '499999', # 'd004' # ]; # # Quoter:4073 13097 Serialized: < 499999,499999,d004 > # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` <= ?)) /*checksum chunk*/ lower boundary: 236289 236289 d002 upper boundary: 499999 499999 d004 # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.134289026260376 # NibbleIterator:6408 13097 0 rows in nibble 3 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1295363 # WeightedAvgRate:8736 13097 Master op time: 180954 n / 0.134289026260376 s # WeightedAvgRate:8742 13097 Weighted avg rate: 1327971.8907607 n/s # WeightedAvgRate:8752 13097 Adjust n to 663985 # NibbleIterator:6505 13097 Set new chunk size (LIMIT): 663985 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7010 13097 Nibbling values below lower boundary # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` < ?)) ORDER BY `emp_no`, `dept_no` /*past lower chunk*/ params: 10001, 10001, d005 # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*), '0' FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` < ?)) ORDER BY `emp_no`, `dept_no` /*explain past lower chunk*/ params: 10001 10001 d005 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where; Using index', # id => '1', # key => 'PRIMARY', # key_len => '8', # possible_keys => 'PRIMARY', # ref => undef, # rows => '2', # select_type => 'SIMPLE', # table => 'dept_emp', # type => 'range' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = [ # '10001', # '10001', # 'd005' # ]; # # Quoter:4073 13097 Serialized: < 10001,10001,d005 > # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` < ?) OR (`emp_no` = ? AND `dept_no` < ?)) ORDER BY `emp_no`, `dept_no` /*past lower chunk*/ lower boundary: upper boundary: 10001 10001 d005 # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00248217582702637 # NibbleIterator:6408 13097 0 rows in nibble 4 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7018 13097 Nibbling values above upper boundary # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` > ?)) ORDER BY `emp_no`, `dept_no` /*past upper chunk*/ params: 499999, 499999, d004 # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*), '0' FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` > ?)) ORDER BY `emp_no`, `dept_no` /*explain past upper chunk*/ params: 499999 499999 d004 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where; Using index', # id => '1', # key => 'PRIMARY', # key_len => '8', # possible_keys => 'PRIMARY', # ref => undef, # rows => '2', # select_type => 'SIMPLE', # table => 'dept_emp', # type => 'range' # }; # # Quoter:4057 13097 Serializing $VAR1 = [ # '499999', # '499999', # 'd004' # ]; # # Quoter:4073 13097 Serialized: < 499999,499999,d004 > # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `employees`.`dept_emp` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `dept_no` > ?)) ORDER BY `emp_no`, `dept_no` /*past upper chunk*/ lower boundary: 499999 499999 d004 upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00228500366210938 # NibbleIterator:6408 13097 0 rows in nibble 5 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish explain_first_lb_sth # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish ub_sth # OobNibbleIterator:7039 13097 Finish past_lower_sth # OobNibbleIterator:7039 13097 Finish explain_past_lower_sth # OobNibbleIterator:7039 13097 Finish explain_past_upper_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # OobNibbleIterator:7039 13097 Finish explain_ub_sth # OobNibbleIterator:7039 13097 Finish past_upper_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `employees` # TableParser:4378 13097 SHOW CREATE TABLE `employees`.`dept_manager` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: InnoDB # TableParser:4420 13097 Table cols: `emp_no`, `dept_no`, `from_date`, `to_date` # TableParser:4572 13097 Storage engine: InnoDB # TableParser:4588 13097 Parsed key: PRIMARY KEY (`emp_no`,`dept_no`), # TableParser:4608 13097 PRIMARY key cols: `emp_no`, `dept_no` # TableParser:4630 13097 This key is the clustered key # TableParser:4588 13097 Parsed key: KEY `dept_no` (`dept_no`), # TableParser:4608 13097 dept_no key cols: `dept_no` # SchemaIterator:7459 13097 Next schema object: employees dept_manager # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `employees`.`dept_manager` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '24', # select_type => 'SIMPLE', # table => 'dept_manager', # type => 'ALL' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY, dept_no # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_manager` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_manager` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `employees` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_manager` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_manager` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '24', # select_type => 'SIMPLE', # table => 'dept_manager', # type => 'ALL' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `dept_no`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`dept_manager` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00223588943481445 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1284241 # WeightedAvgRate:8736 13097 Master op time: 24 n / 0.00223588943481445 s # WeightedAvgRate:8748 13097 Initial avg rate: 10733.9833653231 n/s # WeightedAvgRate:8752 13097 Adjust n to 5366 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `employees` # TableParser:4378 13097 SHOW CREATE TABLE `employees`.`employees` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: InnoDB # TableParser:4420 13097 Table cols: `emp_no`, `birth_date`, `first_name`, `last_name`, `gender`, `hire_date` # TableParser:4572 13097 Storage engine: InnoDB # TableParser:4588 13097 Parsed key: PRIMARY KEY (`emp_no`) # TableParser:4608 13097 PRIMARY key cols: `emp_no` # TableParser:4630 13097 This key is the clustered key # SchemaIterator:7459 13097 Next schema object: employees employees # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `emp_no`, `birth_date`, `first_name`, `last_name`, `gender`, `hire_date`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `birth_date`, `first_name`, `last_name`, `gender`, `hire_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `employees`.`employees` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '299246', # select_type => 'SIMPLE', # table => 'employees', # type => 'ALL' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `birth_date`, `first_name`, `last_name`, `gender`, `hire_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`employees` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `birth_date`, `first_name`, `last_name`, `gender`, `hire_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`employees` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `employees` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `birth_date`, `first_name`, `last_name`, `gender`, `hire_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`employees` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `birth_date`, `first_name`, `last_name`, `gender`, `hire_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`employees` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '299246', # select_type => 'SIMPLE', # table => 'employees', # type => 'ALL' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `birth_date`, `first_name`, `last_name`, `gender`, `hire_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`employees` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.246511936187744 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1251439 # WeightedAvgRate:8736 13097 Master op time: 300024 n / 0.246511936187744 s # WeightedAvgRate:8748 13097 Initial avg rate: 1217076.96852253 n/s # WeightedAvgRate:8752 13097 Adjust n to 608538 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `employees` # TableParser:4378 13097 SHOW CREATE TABLE `employees`.`salaries` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: InnoDB # TableParser:4420 13097 Table cols: `emp_no`, `salary`, `from_date`, `to_date` # TableParser:4572 13097 Storage engine: InnoDB # TableParser:4588 13097 Parsed key: PRIMARY KEY (`emp_no`,`from_date`), # TableParser:4608 13097 PRIMARY key cols: `emp_no`, `from_date` # TableParser:4630 13097 This key is the clustered key # SchemaIterator:7459 13097 Next schema object: employees salaries # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `employees`.`salaries` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '2838426', # select_type => 'SIMPLE', # table => 'salaries', # type => 'ALL' # }; # # NibbleIterator:6548 13097 One nibble: no # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # TableNibbler:4772 13097 Will ascend index PRIMARY # TableNibbler:4784 13097 Will ascend columns emp_no, from_date # TableNibbler:4795 13097 Will ascend, in ordinal position: 0, 2 # NibbleIterator:6228 13097 Ascend params: $VAR1 = { # boundaries => { # '<' => '((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` < ?))', # '<=' => '((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?))', # '>' => '((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` > ?))', # '>=' => '((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?))' # }, # cols => [ # 'emp_no', # 'salary', # 'from_date', # 'to_date' # ], # index => 'PRIMARY', # scols => [ # 'emp_no', # 'emp_no', # 'from_date' # ], # slice => [ # 0, # 0, # 2 # ], # where => '((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` > ?))' # }; # # NibbleIterator:6245 13097 First lower boundary statement: SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `from_date` FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) ORDER BY `emp_no`, `from_date` LIMIT 1 /*first lower boundary*/ # NibbleIterator:6270 13097 Last upper boundary statement: SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `from_date` FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) ORDER BY `emp_no` DESC,`from_date` DESC LIMIT 1 /*last upper boundary*/ # NibbleIterator:6281 13097 Upper boundary statement: SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `from_date` FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) ORDER BY `emp_no`, `from_date` LIMIT ?, 2 /*next chunk boundary*/ # NibbleIterator:6294 13097 Nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*checksum chunk*/ # NibbleIterator:6307 13097 Explain nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*explain checksum chunk*/ # NibbleIterator:6310 13097 Initial chunk size (LIMIT): 625718 # OobNibbleIterator:6921 13097 Past lower statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` < ?)) ORDER BY `emp_no`, `from_date` /*past lower chunk*/ # OobNibbleIterator:6931 13097 Past lower statement: EXPLAIN SELECT COUNT(*), '0' FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` < ?)) ORDER BY `emp_no`, `from_date` /*explain past lower chunk*/ # OobNibbleIterator:6938 13097 Past upper statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` > ?)) ORDER BY `emp_no`, `from_date` /*past upper chunk*/ # OobNibbleIterator:6948 13097 Past upper statement: EXPLAIN SELECT COUNT(*), '0' FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` > ?)) ORDER BY `emp_no`, `from_date` /*explain past upper chunk*/ # OobNibbleIterator:6964 13097 Nibble past lower upper # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # NibbleIterator:6719 13097 First lower boundary: $VAR1 = [ # '10001', # '10001', # '1986-06-26' # ]; # # NibbleIterator:6735 13097 Next lower boundary: $VAR1 = [ # '10001', # '10001', # '1986-06-26' # ]; # # IndexLength:8870 13097 SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `from_date` FROM `employees`.`salaries` FORCE INDEX (`PRIMARY`) WHERE `emp_no` IS NOT NULL AND `from_date` IS NOT NULL ORDER BY `emp_no`, `from_date` LIMIT 1 /*key_len*/ # IndexLength:8837 13097 EXPLAIN SELECT /*!40001 SQL_NO_CACHE */ * FROM `employees`.`salaries` FORCE INDEX (`PRIMARY`) WHERE `emp_no` = ? AND `from_date` >= ? /*key_len*/ params: 10001 1986-06-26 # IndexLength:8841 13097 Range scan: $VAR1 = { # extra => 'Using where', # id => '1', # key => 'PRIMARY', # key_len => '7', # possible_keys => 'PRIMARY', # ref => undef, # rows => '17', # select_type => 'SIMPLE', # table => 'salaries', # type => 'range' # }; # # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `employees` # NibbleIterator:6364 13097 init callback returned 1 # pt_table_checksum:11350 13097 EXPLAIN SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `from_date` FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) ORDER BY `emp_no`, `from_date` LIMIT ?, 2 /*next chunk boundary*/ params: 10001 10001 1986-06-26 625718 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where; Using index', # id => '1', # key => 'PRIMARY', # key_len => '7', # possible_keys => 'PRIMARY', # ref => undef, # rows => '1419230', # select_type => 'SIMPLE', # table => 'salaries', # type => 'range' # }; # # NibbleIterator:6790 13097 next_boundaries callback returned 1 # NibbleIterator:6799 13097 SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `from_date` FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) ORDER BY `emp_no`, `from_date` LIMIT ?, 2 /*next chunk boundary*/ params: 10001, 10001, 1986-06-26 625718 # NibbleIterator:6802 13097 Next boundary: $VAR1 = [ # [ # '75906', # '75906', # '2001-07-01' # ], # [ # '75906', # '75906', # '2002-07-01' # ] # ]; # # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*checksum chunk*/ params: 10001, 10001, 1986-06-26, 75906, 75906, 2001-07-01 # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*explain checksum chunk*/ params: 10001 10001 1986-06-26 75906 75906 2001-07-01 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where', # id => '1', # key => 'PRIMARY', # key_len => '7', # possible_keys => 'PRIMARY', # ref => undef, # rows => '1245173', # select_type => 'SIMPLE', # table => 'salaries', # type => 'range' # }; # # Quoter:4057 13097 Serializing $VAR1 = [ # '10001', # '10001', # '1986-06-26' # ]; # # Quoter:4073 13097 Serialized: < 10001,10001,1986-06-26 > # Quoter:4057 13097 Serializing $VAR1 = [ # '75906', # '75906', # '2001-07-01' # ]; # # Quoter:4073 13097 Serialized: < 75906,75906,2001-07-01 > # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*checksum chunk*/ lower boundary: 10001 10001 1986-06-26 upper boundary: 75906 75906 2001-07-01 # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.458049058914185 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1305966 # WeightedAvgRate:8736 13097 Master op time: 625719 n / 0.458049058914185 s # WeightedAvgRate:8748 13097 Initial avg rate: 1366052.36452899 n/s # WeightedAvgRate:8752 13097 Adjust n to 683026 # NibbleIterator:6505 13097 Set new chunk size (LIMIT): 683026 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # pt_table_checksum:11350 13097 EXPLAIN SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `from_date` FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) ORDER BY `emp_no`, `from_date` LIMIT ?, 2 /*next chunk boundary*/ params: 75906 75906 2002-07-01 683025 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where; Using index', # id => '1', # key => 'PRIMARY', # key_len => '7', # possible_keys => 'PRIMARY', # ref => undef, # rows => '1419214', # select_type => 'SIMPLE', # table => 'salaries', # type => 'range' # }; # # NibbleIterator:6790 13097 next_boundaries callback returned 1 # NibbleIterator:6799 13097 SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `from_date` FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) ORDER BY `emp_no`, `from_date` LIMIT ?, 2 /*next chunk boundary*/ params: 75906, 75906, 2002-07-01 683025 # NibbleIterator:6802 13097 Next boundary: $VAR1 = [ # [ # '237843', # '237843', # '1989-11-07' # ], # [ # '237843', # '237843', # '1990-11-07' # ] # ]; # # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*checksum chunk*/ params: 75906, 75906, 2002-07-01, 237843, 237843, 1989-11-07 # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*explain checksum chunk*/ params: 75906 75906 2002-07-01 237843 237843 1989-11-07 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where', # id => '1', # key => 'PRIMARY', # key_len => '7', # possible_keys => 'PRIMARY', # ref => undef, # rows => '1419218', # select_type => 'SIMPLE', # table => 'salaries', # type => 'range' # }; # # Quoter:4057 13097 Serializing $VAR1 = [ # '75906', # '75906', # '2002-07-01' # ]; # # Quoter:4073 13097 Serialized: < 75906,75906,2002-07-01 > # Quoter:4057 13097 Serializing $VAR1 = [ # '237843', # '237843', # '1989-11-07' # ]; # # Quoter:4073 13097 Serialized: < 237843,237843,1989-11-07 > # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*checksum chunk*/ lower boundary: 75906 75906 2002-07-01 upper boundary: 237843 237843 1989-11-07 # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.51016092300415 # NibbleIterator:6408 13097 0 rows in nibble 2 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1317353 # WeightedAvgRate:8736 13097 Master op time: 683026 n / 0.51016092300415 s # WeightedAvgRate:8742 13097 Weighted avg rate: 1349793.05531377 n/s # WeightedAvgRate:8752 13097 Adjust n to 674896 # NibbleIterator:6505 13097 Set new chunk size (LIMIT): 674896 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # pt_table_checksum:11350 13097 EXPLAIN SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `from_date` FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) ORDER BY `emp_no`, `from_date` LIMIT ?, 2 /*next chunk boundary*/ params: 237843 237843 1990-11-07 674895 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where; Using index', # id => '1', # key => 'PRIMARY', # key_len => '7', # possible_keys => 'PRIMARY', # ref => undef, # rows => '1419225', # select_type => 'SIMPLE', # table => 'salaries', # type => 'range' # }; # # NibbleIterator:6790 13097 next_boundaries callback returned 1 # NibbleIterator:6799 13097 SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `from_date` FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) ORDER BY `emp_no`, `from_date` LIMIT ?, 2 /*next chunk boundary*/ params: 237843, 237843, 1990-11-07 674895 # NibbleIterator:6802 13097 Next boundary: $VAR1 = [ # [ # '409162', # '409162', # '2000-07-19' # ], # [ # '409162', # '409162', # '2001-07-19' # ] # ]; # # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*checksum chunk*/ params: 237843, 237843, 1990-11-07, 409162, 409162, 2000-07-19 # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*explain checksum chunk*/ params: 237843 237843 1990-11-07 409162 409162 2000-07-19 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where', # id => '1', # key => 'PRIMARY', # key_len => '7', # possible_keys => 'PRIMARY', # ref => undef, # rows => '1218515', # select_type => 'SIMPLE', # table => 'salaries', # type => 'range' # }; # # Quoter:4057 13097 Serializing $VAR1 = [ # '237843', # '237843', # '1990-11-07' # ]; # # Quoter:4073 13097 Serialized: < 237843,237843,1990-11-07 > # Quoter:4057 13097 Serializing $VAR1 = [ # '409162', # '409162', # '2000-07-19' # ]; # # Quoter:4073 13097 Serialized: < 409162,409162,2000-07-19 > # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*checksum chunk*/ lower boundary: 237843 237843 1990-11-07 upper boundary: 409162 409162 2000-07-19 # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.495489120483398 # NibbleIterator:6408 13097 0 rows in nibble 3 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1328612 # WeightedAvgRate:8736 13097 Master op time: 674896 n / 0.495489120483398 s # WeightedAvgRate:8742 13097 Weighted avg rate: 1355153.53048277 n/s # WeightedAvgRate:8752 13097 Adjust n to 677576 # NibbleIterator:6505 13097 Set new chunk size (LIMIT): 677576 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # pt_table_checksum:11350 13097 EXPLAIN SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `from_date` FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) ORDER BY `emp_no`, `from_date` LIMIT ?, 2 /*next chunk boundary*/ params: 409162 409162 2001-07-19 677575 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where; Using index', # id => '1', # key => 'PRIMARY', # key_len => '7', # possible_keys => 'PRIMARY', # ref => undef, # rows => '1419215', # select_type => 'SIMPLE', # table => 'salaries', # type => 'range' # }; # # NibbleIterator:6790 13097 next_boundaries callback returned 1 # NibbleIterator:6799 13097 SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `from_date` FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) ORDER BY `emp_no`, `from_date` LIMIT ?, 2 /*next chunk boundary*/ params: 409162, 409162, 2001-07-19 677575 # NibbleIterator:6802 13097 Next boundary: $VAR1 = [ # [ # '480680', # '480680', # '1998-06-24' # ], # [ # '480680', # '480680', # '1999-06-24' # ] # ]; # # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*checksum chunk*/ params: 409162, 409162, 2001-07-19, 480680, 480680, 1998-06-24 # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*explain checksum chunk*/ params: 409162 409162 2001-07-19 480680 480680 1998-06-24 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where', # id => '1', # key => 'PRIMARY', # key_len => '7', # possible_keys => 'PRIMARY', # ref => undef, # rows => '1419225', # select_type => 'SIMPLE', # table => 'salaries', # type => 'range' # }; # # Quoter:4057 13097 Serializing $VAR1 = [ # '409162', # '409162', # '2001-07-19' # ]; # # Quoter:4073 13097 Serialized: < 409162,409162,2001-07-19 > # Quoter:4057 13097 Serializing $VAR1 = [ # '480680', # '480680', # '1998-06-24' # ]; # # Quoter:4073 13097 Serialized: < 480680,480680,1998-06-24 > # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*checksum chunk*/ lower boundary: 409162 409162 2001-07-19 upper boundary: 480680 480680 1998-06-24 # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.500411987304688 # NibbleIterator:6408 13097 0 rows in nibble 4 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1333765 # WeightedAvgRate:8736 13097 Master op time: 677576 n / 0.500411987304688 s # WeightedAvgRate:8742 13097 Weighted avg rate: 1354740.08770794 n/s # WeightedAvgRate:8752 13097 Adjust n to 677370 # NibbleIterator:6505 13097 Set new chunk size (LIMIT): 677370 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # pt_table_checksum:11350 13097 EXPLAIN SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `from_date` FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) ORDER BY `emp_no`, `from_date` LIMIT ?, 2 /*next chunk boundary*/ params: 480680 480680 1999-06-24 677369 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where; Using index', # id => '1', # key => 'PRIMARY', # key_len => '7', # possible_keys => 'PRIMARY', # ref => undef, # rows => '353232', # select_type => 'SIMPLE', # table => 'salaries', # type => 'range' # }; # # NibbleIterator:6790 13097 next_boundaries callback returned 1 # NibbleIterator:6799 13097 SELECT /*!40001 SQL_NO_CACHE */ `emp_no`, `emp_no`, `from_date` FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) ORDER BY `emp_no`, `from_date` LIMIT ?, 2 /*next chunk boundary*/ params: 480680, 480680, 1999-06-24 677369 # NibbleIterator:6802 13097 Next boundary: $VAR1 = []; # # NibbleIterator:6819 13097 Last upper boundary: $VAR1 = [ # '499999', # '499999', # '2001-11-29' # ]; # # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*checksum chunk*/ params: 480680, 480680, 1999-06-24, 499999, 499999, 2001-11-29 # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*explain checksum chunk*/ params: 480680 480680 1999-06-24 499999 499999 2001-11-29 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where', # id => '1', # key => 'PRIMARY', # key_len => '7', # possible_keys => 'PRIMARY', # ref => undef, # rows => '352769', # select_type => 'SIMPLE', # table => 'salaries', # type => 'range' # }; # # Quoter:4057 13097 Serializing $VAR1 = [ # '480680', # '480680', # '1999-06-24' # ]; # # Quoter:4073 13097 Serialized: < 480680,480680,1999-06-24 > # Quoter:4057 13097 Serializing $VAR1 = [ # '499999', # '499999', # '2001-11-29' # ]; # # Quoter:4073 13097 Serialized: < 499999,499999,2001-11-29 > # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `salary`, `from_date`, `to_date`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` >= ?)) AND ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` <= ?)) /*checksum chunk*/ lower boundary: 480680 480680 1999-06-24 upper boundary: 499999 499999 2001-11-29 # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.138144016265869 # NibbleIterator:6408 13097 0 rows in nibble 5 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1333219 # WeightedAvgRate:8736 13097 Master op time: 182830 n / 0.138144016265869 s # WeightedAvgRate:8742 13097 Weighted avg rate: 1350991.78940034 n/s # WeightedAvgRate:8752 13097 Adjust n to 675495 # NibbleIterator:6505 13097 Set new chunk size (LIMIT): 675495 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7010 13097 Nibbling values below lower boundary # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` < ?)) ORDER BY `emp_no`, `from_date` /*past lower chunk*/ params: 10001, 10001, 1986-06-26 # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*), '0' FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` < ?)) ORDER BY `emp_no`, `from_date` /*explain past lower chunk*/ params: 10001 10001 1986-06-26 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where; Using index', # id => '1', # key => 'PRIMARY', # key_len => '7', # possible_keys => 'PRIMARY', # ref => undef, # rows => '2', # select_type => 'SIMPLE', # table => 'salaries', # type => 'range' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = [ # '10001', # '10001', # '1986-06-26' # ]; # # Quoter:4073 13097 Serialized: < 10001,10001,1986-06-26 > # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` < ?) OR (`emp_no` = ? AND `from_date` < ?)) ORDER BY `emp_no`, `from_date` /*past lower chunk*/ lower boundary: upper boundary: 10001 10001 1986-06-26 # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00224995613098145 # NibbleIterator:6408 13097 0 rows in nibble 6 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7018 13097 Nibbling values above upper boundary # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` > ?)) ORDER BY `emp_no`, `from_date` /*past upper chunk*/ params: 499999, 499999, 2001-11-29 # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*), '0' FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` > ?)) ORDER BY `emp_no`, `from_date` /*explain past upper chunk*/ params: 499999 499999 2001-11-29 # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using where; Using index', # id => '1', # key => 'PRIMARY', # key_len => '7', # possible_keys => 'PRIMARY', # ref => undef, # rows => '2', # select_type => 'SIMPLE', # table => 'salaries', # type => 'range' # }; # # Quoter:4057 13097 Serializing $VAR1 = [ # '499999', # '499999', # '2001-11-29' # ]; # # Quoter:4073 13097 Serialized: < 499999,499999,2001-11-29 > # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*), '0' FROM `employees`.`salaries` FORCE INDEX(`PRIMARY`) WHERE ((`emp_no` > ?) OR (`emp_no` = ? AND `from_date` > ?)) ORDER BY `emp_no`, `from_date` /*past upper chunk*/ lower boundary: 499999 499999 2001-11-29 upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00283598899841309 # NibbleIterator:6408 13097 0 rows in nibble 7 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish explain_first_lb_sth # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish ub_sth # OobNibbleIterator:7039 13097 Finish past_lower_sth # OobNibbleIterator:7039 13097 Finish explain_past_lower_sth # OobNibbleIterator:7039 13097 Finish explain_past_upper_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # OobNibbleIterator:7039 13097 Finish explain_ub_sth # OobNibbleIterator:7039 13097 Finish past_upper_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `employees` # TableParser:4378 13097 SHOW CREATE TABLE `employees`.`titles` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: InnoDB # TableParser:4420 13097 Table cols: `emp_no`, `title`, `from_date`, `to_date` # TableParser:4572 13097 Storage engine: InnoDB # TableParser:4588 13097 Parsed key: PRIMARY KEY (`emp_no`,`title`,`from_date`), # TableParser:4608 13097 PRIMARY key cols: `emp_no`, `title`, `from_date` # TableParser:4630 13097 This key is the clustered key # SchemaIterator:7459 13097 Next schema object: employees titles # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `emp_no`, `title`, `from_date`, `to_date`, CONCAT(ISNULL(`to_date`)))) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `title`, `from_date`, `to_date`, CONCAT(ISNULL(`to_date`)))) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `employees`.`titles` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '442426', # select_type => 'SIMPLE', # table => 'titles', # type => 'ALL' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `title`, `from_date`, `to_date`, CONCAT(ISNULL(`to_date`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`titles` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `title`, `from_date`, `to_date`, CONCAT(ISNULL(`to_date`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`titles` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `employees` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `title`, `from_date`, `to_date`, CONCAT(ISNULL(`to_date`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`titles` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `title`, `from_date`, `to_date`, CONCAT(ISNULL(`to_date`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`titles` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '442426', # select_type => 'SIMPLE', # table => 'titles', # type => 'ALL' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `emp_no`, `title`, `from_date`, `to_date`, CONCAT(ISNULL(`to_date`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `employees`.`titles` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.344529867172241 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1327790 # WeightedAvgRate:8736 13097 Master op time: 443310 n / 0.344529867172241 s # WeightedAvgRate:8748 13097 Initial avg rate: 1286709.92630771 n/s # WeightedAvgRate:8752 13097 Adjust n to 643354 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # SchemaIterator:7600 13097 No more tables in database employees # SchemaIterator:7553 13097 Next database: mysql # SchemaIterator:7559 13097 SHOW /*!50002 FULL*/ TABLES FROM `mysql` # SchemaIterator:7570 13097 Found 24 tables in database mysql # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`column_stats` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `db_name`, `table_name`, `column_name`, `min_value`, `max_value`, `nulls_ratio`, `avg_length`, `avg_frequency`, `hist_size`, `hist_type`, `histogram` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`db_name`,`table_name`,`column_name`) # TableParser:4608 13097 PRIMARY key cols: `db_name`, `table_name`, `column_name` # SchemaIterator:7459 13097 Next schema object: mysql column_stats # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `db_name`, `table_name`, `column_name`, CRC32(`min_value`), CRC32(`max_value`), `nulls_ratio`, `avg_length`, `avg_frequency`, `hist_size`, `hist_type`, CRC32(`histogram`), CONCAT(ISNULL(`min_value`), ISNULL(`max_value`), ISNULL(`nulls_ratio`), ISNULL(`avg_length`), ISNULL(`avg_frequency`), ISNULL(`hist_size`), ISNULL(`hist_type`), ISNULL(`histogram`)))) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `column_name`, CRC32(`min_value`), CRC32(`max_value`), `nulls_ratio`, `avg_length`, `avg_frequency`, `hist_size`, `hist_type`, CRC32(`histogram`), CONCAT(ISNULL(`min_value`), ISNULL(`max_value`), ISNULL(`nulls_ratio`), ISNULL(`avg_length`), ISNULL(`avg_frequency`), ISNULL(`hist_size`), ISNULL(`hist_type`), ISNULL(`histogram`)))) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`column_stats` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'column_stats', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `column_name`, CRC32(`min_value`), CRC32(`max_value`), `nulls_ratio`, `avg_length`, `avg_frequency`, `hist_size`, `hist_type`, CRC32(`histogram`), CONCAT(ISNULL(`min_value`), ISNULL(`max_value`), ISNULL(`nulls_ratio`), ISNULL(`avg_length`), ISNULL(`avg_frequency`), ISNULL(`hist_size`), ISNULL(`hist_type`), ISNULL(`histogram`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`column_stats` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `column_name`, CRC32(`min_value`), CRC32(`max_value`), `nulls_ratio`, `avg_length`, `avg_frequency`, `hist_size`, `hist_type`, CRC32(`histogram`), CONCAT(ISNULL(`min_value`), ISNULL(`max_value`), ISNULL(`nulls_ratio`), ISNULL(`avg_length`), ISNULL(`avg_frequency`), ISNULL(`hist_size`), ISNULL(`hist_type`), ISNULL(`histogram`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`column_stats` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `column_name`, CRC32(`min_value`), CRC32(`max_value`), `nulls_ratio`, `avg_length`, `avg_frequency`, `hist_size`, `hist_type`, CRC32(`histogram`), CONCAT(ISNULL(`min_value`), ISNULL(`max_value`), ISNULL(`nulls_ratio`), ISNULL(`avg_length`), ISNULL(`avg_frequency`), ISNULL(`hist_size`), ISNULL(`hist_type`), ISNULL(`histogram`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`column_stats` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `column_name`, CRC32(`min_value`), CRC32(`max_value`), `nulls_ratio`, `avg_length`, `avg_frequency`, `hist_size`, `hist_type`, CRC32(`histogram`), CONCAT(ISNULL(`min_value`), ISNULL(`max_value`), ISNULL(`nulls_ratio`), ISNULL(`avg_length`), ISNULL(`avg_frequency`), ISNULL(`hist_size`), ISNULL(`hist_type`), ISNULL(`histogram`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`column_stats` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'column_stats', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `column_name`, CRC32(`min_value`), CRC32(`max_value`), `nulls_ratio`, `avg_length`, `avg_frequency`, `hist_size`, `hist_type`, CRC32(`histogram`), CONCAT(ISNULL(`min_value`), ISNULL(`max_value`), ISNULL(`nulls_ratio`), ISNULL(`avg_length`), ISNULL(`avg_frequency`), ISNULL(`hist_size`), ISNULL(`hist_type`), ISNULL(`histogram`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`column_stats` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00217795372009277 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`columns_priv` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `host`, `db`, `user`, `table_name`, `column_name`, `timestamp`, `column_priv` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`host`,`db`,`user`,`table_name`,`column_name`) # TableParser:4608 13097 PRIMARY key cols: `host`, `db`, `user`, `table_name`, `column_name` # SchemaIterator:7459 13097 Next schema object: mysql columns_priv # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `host`, `db`, `user`, `table_name`, `column_name`, UNIX_TIMESTAMP(`timestamp`), `column_priv`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `table_name`, `column_name`, UNIX_TIMESTAMP(`timestamp`), `column_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`columns_priv` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'columns_priv', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `table_name`, `column_name`, UNIX_TIMESTAMP(`timestamp`), `column_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`columns_priv` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `table_name`, `column_name`, UNIX_TIMESTAMP(`timestamp`), `column_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`columns_priv` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `table_name`, `column_name`, UNIX_TIMESTAMP(`timestamp`), `column_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`columns_priv` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `table_name`, `column_name`, UNIX_TIMESTAMP(`timestamp`), `column_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`columns_priv` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'columns_priv', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `table_name`, `column_name`, UNIX_TIMESTAMP(`timestamp`), `column_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`columns_priv` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00198912620544434 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`db` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `host`, `db`, `user`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `event_priv`, `trigger_priv` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`host`,`db`,`user`), # TableParser:4608 13097 PRIMARY key cols: `host`, `db`, `user` # TableParser:4588 13097 Parsed key: KEY `user` (`user`) # TableParser:4608 13097 user key cols: `user` # SchemaIterator:7459 13097 Next schema object: mysql db # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `host`, `db`, `user`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `event_priv`, `trigger_priv`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `event_priv`, `trigger_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`db` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '3', # select_type => 'SIMPLE', # table => 'db', # type => 'ALL' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY, user # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `event_priv`, `trigger_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`db` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `event_priv`, `trigger_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`db` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `event_priv`, `trigger_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`db` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `event_priv`, `trigger_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`db` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '3', # select_type => 'SIMPLE', # table => 'db', # type => 'ALL' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `event_priv`, `trigger_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`db` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00208091735839844 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1326856 # WeightedAvgRate:8736 13097 Master op time: 3 n / 0.00208091735839844 s # WeightedAvgRate:8748 13097 Initial avg rate: 1441.67186067828 n/s # WeightedAvgRate:8752 13097 Adjust n to 720 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`event` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `db`, `name`, `body`, `definer`, `execute_at`, `interval_value`, `interval_field`, `created`, `modified`, `last_executed`, `starts`, `ends`, `status`, `on_completion`, `sql_mode`, `comment`, `originator`, `time_zone`, `character_set_client`, `collation_connection`, `db_collation`, `body_utf8` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`db`,`name`) # TableParser:4608 13097 PRIMARY key cols: `db`, `name` # SchemaIterator:7459 13097 Next schema object: mysql event # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `db`, `name`, CRC32(`body`), `definer`, `execute_at`, `interval_value`, `interval_field`, UNIX_TIMESTAMP(`created`), UNIX_TIMESTAMP(`modified`), `last_executed`, `starts`, `ends`, `status`, `on_completion`, `sql_mode`, `comment`, `originator`, `time_zone`, `character_set_client`, `collation_connection`, `db_collation`, CRC32(`body_utf8`), CONCAT(ISNULL(`execute_at`), ISNULL(`interval_value`), ISNULL(`interval_field`), ISNULL(`last_executed`), ISNULL(`starts`), ISNULL(`ends`), ISNULL(`character_set_client`), ISNULL(`collation_connection`), ISNULL(`db_collation`), ISNULL(`body_utf8`)))) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db`, `name`, CRC32(`body`), `definer`, `execute_at`, `interval_value`, `interval_field`, UNIX_TIMESTAMP(`created`), UNIX_TIMESTAMP(`modified`), `last_executed`, `starts`, `ends`, `status`, `on_completion`, `sql_mode`, `comment`, `originator`, `time_zone`, `character_set_client`, `collation_connection`, `db_collation`, CRC32(`body_utf8`), CONCAT(ISNULL(`execute_at`), ISNULL(`interval_value`), ISNULL(`interval_field`), ISNULL(`last_executed`), ISNULL(`starts`), ISNULL(`ends`), ISNULL(`character_set_client`), ISNULL(`collation_connection`), ISNULL(`db_collation`), ISNULL(`body_utf8`)))) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`event` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'event', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db`, `name`, CRC32(`body`), `definer`, `execute_at`, `interval_value`, `interval_field`, UNIX_TIMESTAMP(`created`), UNIX_TIMESTAMP(`modified`), `last_executed`, `starts`, `ends`, `status`, `on_completion`, `sql_mode`, `comment`, `originator`, `time_zone`, `character_set_client`, `collation_connection`, `db_collation`, CRC32(`body_utf8`), CONCAT(ISNULL(`execute_at`), ISNULL(`interval_value`), ISNULL(`interval_field`), ISNULL(`last_executed`), ISNULL(`starts`), ISNULL(`ends`), ISNULL(`character_set_client`), ISNULL(`collation_connection`), ISNULL(`db_collation`), ISNULL(`body_utf8`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`event` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db`, `name`, CRC32(`body`), `definer`, `execute_at`, `interval_value`, `interval_field`, UNIX_TIMESTAMP(`created`), UNIX_TIMESTAMP(`modified`), `last_executed`, `starts`, `ends`, `status`, `on_completion`, `sql_mode`, `comment`, `originator`, `time_zone`, `character_set_client`, `collation_connection`, `db_collation`, CRC32(`body_utf8`), CONCAT(ISNULL(`execute_at`), ISNULL(`interval_value`), ISNULL(`interval_field`), ISNULL(`last_executed`), ISNULL(`starts`), ISNULL(`ends`), ISNULL(`character_set_client`), ISNULL(`collation_connection`), ISNULL(`db_collation`), ISNULL(`body_utf8`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`event` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db`, `name`, CRC32(`body`), `definer`, `execute_at`, `interval_value`, `interval_field`, UNIX_TIMESTAMP(`created`), UNIX_TIMESTAMP(`modified`), `last_executed`, `starts`, `ends`, `status`, `on_completion`, `sql_mode`, `comment`, `originator`, `time_zone`, `character_set_client`, `collation_connection`, `db_collation`, CRC32(`body_utf8`), CONCAT(ISNULL(`execute_at`), ISNULL(`interval_value`), ISNULL(`interval_field`), ISNULL(`last_executed`), ISNULL(`starts`), ISNULL(`ends`), ISNULL(`character_set_client`), ISNULL(`collation_connection`), ISNULL(`db_collation`), ISNULL(`body_utf8`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`event` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db`, `name`, CRC32(`body`), `definer`, `execute_at`, `interval_value`, `interval_field`, UNIX_TIMESTAMP(`created`), UNIX_TIMESTAMP(`modified`), `last_executed`, `starts`, `ends`, `status`, `on_completion`, `sql_mode`, `comment`, `originator`, `time_zone`, `character_set_client`, `collation_connection`, `db_collation`, CRC32(`body_utf8`), CONCAT(ISNULL(`execute_at`), ISNULL(`interval_value`), ISNULL(`interval_field`), ISNULL(`last_executed`), ISNULL(`starts`), ISNULL(`ends`), ISNULL(`character_set_client`), ISNULL(`collation_connection`), ISNULL(`db_collation`), ISNULL(`body_utf8`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`event` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'event', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db`, `name`, CRC32(`body`), `definer`, `execute_at`, `interval_value`, `interval_field`, UNIX_TIMESTAMP(`created`), UNIX_TIMESTAMP(`modified`), `last_executed`, `starts`, `ends`, `status`, `on_completion`, `sql_mode`, `comment`, `originator`, `time_zone`, `character_set_client`, `collation_connection`, `db_collation`, CRC32(`body_utf8`), CONCAT(ISNULL(`execute_at`), ISNULL(`interval_value`), ISNULL(`interval_field`), ISNULL(`last_executed`), ISNULL(`starts`), ISNULL(`ends`), ISNULL(`character_set_client`), ISNULL(`collation_connection`), ISNULL(`db_collation`), ISNULL(`body_utf8`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`event` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.0026099681854248 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`func` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `name`, `ret`, `dl`, `type` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`name`) # TableParser:4608 13097 PRIMARY key cols: `name` # SchemaIterator:7459 13097 Next schema object: mysql func # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `name`, `ret`, `dl`, `type`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `name`, `ret`, `dl`, `type`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`func` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'func', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `name`, `ret`, `dl`, `type`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`func` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `name`, `ret`, `dl`, `type`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`func` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `name`, `ret`, `dl`, `type`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`func` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `name`, `ret`, `dl`, `type`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`func` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'func', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `name`, `ret`, `dl`, `type`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`func` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00190210342407227 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`gtid_slave_pos` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: InnoDB # TableParser:4420 13097 Table cols: `domain_id`, `sub_id`, `server_id`, `seq_no` # TableParser:4572 13097 Storage engine: InnoDB # TableParser:4588 13097 Parsed key: PRIMARY KEY (`domain_id`,`sub_id`) # TableParser:4608 13097 PRIMARY key cols: `domain_id`, `sub_id` # TableParser:4630 13097 This key is the clustered key # SchemaIterator:7459 13097 Next schema object: mysql gtid_slave_pos # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `domain_id`, `sub_id`, `server_id`, `seq_no`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `domain_id`, `sub_id`, `server_id`, `seq_no`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`gtid_slave_pos` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '1', # select_type => 'SIMPLE', # table => 'gtid_slave_pos', # type => 'ALL' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `domain_id`, `sub_id`, `server_id`, `seq_no`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`gtid_slave_pos` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `domain_id`, `sub_id`, `server_id`, `seq_no`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`gtid_slave_pos` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `domain_id`, `sub_id`, `server_id`, `seq_no`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`gtid_slave_pos` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `domain_id`, `sub_id`, `server_id`, `seq_no`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`gtid_slave_pos` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '1', # select_type => 'SIMPLE', # table => 'gtid_slave_pos', # type => 'ALL' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `domain_id`, `sub_id`, `server_id`, `seq_no`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`gtid_slave_pos` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00198101997375488 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`help_category` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `help_category_id`, `name`, `parent_category_id`, `url` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`help_category_id`), # TableParser:4608 13097 PRIMARY key cols: `help_category_id` # TableParser:4588 13097 Parsed key: UNIQUE KEY `name` (`name`) # TableParser:4608 13097 name key cols: `name` # SchemaIterator:7459 13097 Next schema object: mysql help_category # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `help_category_id`, `name`, `parent_category_id`, CRC32(`url`), CONCAT(ISNULL(`parent_category_id`)))) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_category_id`, `name`, `parent_category_id`, CRC32(`url`), CONCAT(ISNULL(`parent_category_id`)))) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`help_category` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '39', # select_type => 'SIMPLE', # table => 'help_category', # type => 'ALL' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY, name # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_category_id`, `name`, `parent_category_id`, CRC32(`url`), CONCAT(ISNULL(`parent_category_id`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_category` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_category_id`, `name`, `parent_category_id`, CRC32(`url`), CONCAT(ISNULL(`parent_category_id`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_category` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_category_id`, `name`, `parent_category_id`, CRC32(`url`), CONCAT(ISNULL(`parent_category_id`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_category` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_category_id`, `name`, `parent_category_id`, CRC32(`url`), CONCAT(ISNULL(`parent_category_id`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_category` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '39', # select_type => 'SIMPLE', # table => 'help_category', # type => 'ALL' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_category_id`, `name`, `parent_category_id`, CRC32(`url`), CONCAT(ISNULL(`parent_category_id`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_category` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00248503684997559 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1325754 # WeightedAvgRate:8736 13097 Master op time: 39 n / 0.00248503684997559 s # WeightedAvgRate:8748 13097 Initial avg rate: 15693.9322651828 n/s # WeightedAvgRate:8752 13097 Adjust n to 7846 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`help_keyword` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `help_keyword_id`, `name` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`help_keyword_id`), # TableParser:4608 13097 PRIMARY key cols: `help_keyword_id` # TableParser:4588 13097 Parsed key: UNIQUE KEY `name` (`name`) # TableParser:4608 13097 name key cols: `name` # SchemaIterator:7459 13097 Next schema object: mysql help_keyword # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `help_keyword_id`, `name`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_keyword_id`, `name`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`help_keyword` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '464', # select_type => 'SIMPLE', # table => 'help_keyword', # type => 'ALL' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY, name # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_keyword_id`, `name`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_keyword` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_keyword_id`, `name`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_keyword` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_keyword_id`, `name`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_keyword` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_keyword_id`, `name`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_keyword` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '464', # select_type => 'SIMPLE', # table => 'help_keyword', # type => 'ALL' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_keyword_id`, `name`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_keyword` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.0021061897277832 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1324967 # WeightedAvgRate:8736 13097 Master op time: 464 n / 0.0021061897277832 s # WeightedAvgRate:8748 13097 Initial avg rate: 220303.040072447 n/s # WeightedAvgRate:8752 13097 Adjust n to 110151 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`help_relation` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `help_topic_id`, `help_keyword_id` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`help_keyword_id`,`help_topic_id`) # TableParser:4608 13097 PRIMARY key cols: `help_keyword_id`, `help_topic_id` # SchemaIterator:7459 13097 Next schema object: mysql help_relation # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `help_topic_id`, `help_keyword_id`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_topic_id`, `help_keyword_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`help_relation` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'Using index', # id => '1', # key => 'PRIMARY', # key_len => '8', # possible_keys => undef, # ref => undef, # rows => '1028', # select_type => 'SIMPLE', # table => 'help_relation', # type => 'index' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_topic_id`, `help_keyword_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_relation` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_topic_id`, `help_keyword_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_relation` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_topic_id`, `help_keyword_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_relation` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_topic_id`, `help_keyword_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_relation` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'Using index', # id => '1', # key => 'PRIMARY', # key_len => '8', # possible_keys => undef, # ref => undef, # rows => '1028', # select_type => 'SIMPLE', # table => 'help_relation', # type => 'index' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_topic_id`, `help_keyword_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_relation` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00206685066223145 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1324389 # WeightedAvgRate:8736 13097 Master op time: 1028 n / 0.00206685066223145 s # WeightedAvgRate:8748 13097 Initial avg rate: 497375.073480217 n/s # WeightedAvgRate:8752 13097 Adjust n to 248687 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`help_topic` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `help_topic_id`, `name`, `help_category_id`, `description`, `example`, `url` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`help_topic_id`), # TableParser:4608 13097 PRIMARY key cols: `help_topic_id` # TableParser:4588 13097 Parsed key: UNIQUE KEY `name` (`name`) # TableParser:4608 13097 name key cols: `name` # SchemaIterator:7459 13097 Next schema object: mysql help_topic # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `help_topic_id`, `name`, `help_category_id`, CRC32(`description`), CRC32(`example`), CRC32(`url`))) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_topic_id`, `name`, `help_category_id`, CRC32(`description`), CRC32(`example`), CRC32(`url`))) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`help_topic` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '508', # select_type => 'SIMPLE', # table => 'help_topic', # type => 'ALL' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY, name # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_topic_id`, `name`, `help_category_id`, CRC32(`description`), CRC32(`example`), CRC32(`url`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_topic` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_topic_id`, `name`, `help_category_id`, CRC32(`description`), CRC32(`example`), CRC32(`url`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_topic` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_topic_id`, `name`, `help_category_id`, CRC32(`description`), CRC32(`example`), CRC32(`url`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_topic` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_topic_id`, `name`, `help_category_id`, CRC32(`description`), CRC32(`example`), CRC32(`url`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_topic` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '508', # select_type => 'SIMPLE', # table => 'help_topic', # type => 'ALL' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `help_topic_id`, `name`, `help_category_id`, CRC32(`description`), CRC32(`example`), CRC32(`url`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`help_topic` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00278091430664062 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1323317 # WeightedAvgRate:8736 13097 Master op time: 508 n / 0.00278091430664062 s # WeightedAvgRate:8748 13097 Initial avg rate: 182673.73388203 n/s # WeightedAvgRate:8752 13097 Adjust n to 91336 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`host` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `host`, `db`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `trigger_priv` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`host`,`db`) # TableParser:4608 13097 PRIMARY key cols: `host`, `db` # SchemaIterator:7459 13097 Next schema object: mysql host # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `host`, `db`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `trigger_priv`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `trigger_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`host` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'host', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `trigger_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`host` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `trigger_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`host` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `trigger_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`host` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `trigger_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`host` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'host', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `execute_priv`, `trigger_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`host` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00209999084472656 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`index_stats` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `db_name`, `table_name`, `index_name`, `prefix_arity`, `avg_frequency` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`db_name`,`table_name`,`index_name`,`prefix_arity`) # TableParser:4608 13097 PRIMARY key cols: `db_name`, `table_name`, `index_name`, `prefix_arity` # SchemaIterator:7459 13097 Next schema object: mysql index_stats # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `db_name`, `table_name`, `index_name`, `prefix_arity`, `avg_frequency`, CONCAT(ISNULL(`avg_frequency`)))) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `index_name`, `prefix_arity`, `avg_frequency`, CONCAT(ISNULL(`avg_frequency`)))) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`index_stats` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'index_stats', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `index_name`, `prefix_arity`, `avg_frequency`, CONCAT(ISNULL(`avg_frequency`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`index_stats` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `index_name`, `prefix_arity`, `avg_frequency`, CONCAT(ISNULL(`avg_frequency`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`index_stats` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `index_name`, `prefix_arity`, `avg_frequency`, CONCAT(ISNULL(`avg_frequency`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`index_stats` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `index_name`, `prefix_arity`, `avg_frequency`, CONCAT(ISNULL(`avg_frequency`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`index_stats` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'index_stats', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `index_name`, `prefix_arity`, `avg_frequency`, CONCAT(ISNULL(`avg_frequency`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`index_stats` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00202298164367676 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`procs_priv` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `host`, `db`, `user`, `routine_name`, `routine_type`, `grantor`, `proc_priv`, `timestamp` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`host`,`db`,`user`,`routine_name`,`routine_type`), # TableParser:4608 13097 PRIMARY key cols: `host`, `db`, `user`, `routine_name`, `routine_type` # TableParser:4588 13097 Parsed key: KEY `grantor` (`grantor`) # TableParser:4608 13097 grantor key cols: `grantor` # SchemaIterator:7459 13097 Next schema object: mysql procs_priv # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `host`, `db`, `user`, `routine_name`, `routine_type`, `grantor`, `proc_priv`, UNIX_TIMESTAMP(`timestamp`))) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `routine_name`, `routine_type`, `grantor`, `proc_priv`, UNIX_TIMESTAMP(`timestamp`))) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`procs_priv` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'procs_priv', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY, grantor # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `routine_name`, `routine_type`, `grantor`, `proc_priv`, UNIX_TIMESTAMP(`timestamp`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`procs_priv` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `routine_name`, `routine_type`, `grantor`, `proc_priv`, UNIX_TIMESTAMP(`timestamp`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`procs_priv` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `routine_name`, `routine_type`, `grantor`, `proc_priv`, UNIX_TIMESTAMP(`timestamp`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`procs_priv` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `routine_name`, `routine_type`, `grantor`, `proc_priv`, UNIX_TIMESTAMP(`timestamp`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`procs_priv` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'procs_priv', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `routine_name`, `routine_type`, `grantor`, `proc_priv`, UNIX_TIMESTAMP(`timestamp`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`procs_priv` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00212001800537109 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`proxies_priv` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `host`, `user`, `proxied_host`, `proxied_user`, `with_grant`, `grantor`, `timestamp` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`host`,`user`,`proxied_host`,`proxied_user`), # TableParser:4608 13097 PRIMARY key cols: `host`, `user`, `proxied_host`, `proxied_user` # TableParser:4588 13097 Parsed key: KEY `grantor` (`grantor`) # TableParser:4608 13097 grantor key cols: `grantor` # SchemaIterator:7459 13097 Next schema object: mysql proxies_priv # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `host`, `user`, `proxied_host`, `proxied_user`, `with_grant`, `grantor`, UNIX_TIMESTAMP(`timestamp`))) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `proxied_host`, `proxied_user`, `with_grant`, `grantor`, UNIX_TIMESTAMP(`timestamp`))) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`proxies_priv` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '2', # select_type => 'SIMPLE', # table => 'proxies_priv', # type => 'ALL' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY, grantor # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `proxied_host`, `proxied_user`, `with_grant`, `grantor`, UNIX_TIMESTAMP(`timestamp`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`proxies_priv` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `proxied_host`, `proxied_user`, `with_grant`, `grantor`, UNIX_TIMESTAMP(`timestamp`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`proxies_priv` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `proxied_host`, `proxied_user`, `with_grant`, `grantor`, UNIX_TIMESTAMP(`timestamp`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`proxies_priv` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `proxied_host`, `proxied_user`, `with_grant`, `grantor`, UNIX_TIMESTAMP(`timestamp`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`proxies_priv` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '2', # select_type => 'SIMPLE', # table => 'proxies_priv', # type => 'ALL' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `proxied_host`, `proxied_user`, `with_grant`, `grantor`, UNIX_TIMESTAMP(`timestamp`))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`proxies_priv` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00196504592895508 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1322441 # WeightedAvgRate:8736 13097 Master op time: 2 n / 0.00196504592895508 s # WeightedAvgRate:8748 13097 Initial avg rate: 1017.78791555448 n/s # WeightedAvgRate:8752 13097 Adjust n to 508 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`roles_mapping` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `host`, `user`, `role`, `admin_option` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: UNIQUE KEY `host` (`host`,`user`,`role`) # TableParser:4608 13097 host key cols: `host`, `user`, `role` # SchemaIterator:7459 13097 Next schema object: mysql roles_mapping # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `host`, `user`, `role`, `admin_option`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `role`, `admin_option`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`roles_mapping` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'roles_mapping', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: host # NibbleIterator:6643 13097 Best index: host # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `role`, `admin_option`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`roles_mapping` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `role`, `admin_option`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`roles_mapping` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `role`, `admin_option`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`roles_mapping` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `role`, `admin_option`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`roles_mapping` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'roles_mapping', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `role`, `admin_option`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`roles_mapping` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00209522247314453 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`servers` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `server_name`, `host`, `db`, `username`, `password`, `port`, `socket`, `wrapper`, `owner` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`server_name`) # TableParser:4608 13097 PRIMARY key cols: `server_name` # SchemaIterator:7459 13097 Next schema object: mysql servers # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `server_name`, `host`, `db`, `username`, `password`, `port`, `socket`, `wrapper`, `owner`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `server_name`, `host`, `db`, `username`, `password`, `port`, `socket`, `wrapper`, `owner`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`servers` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'servers', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `server_name`, `host`, `db`, `username`, `password`, `port`, `socket`, `wrapper`, `owner`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`servers` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `server_name`, `host`, `db`, `username`, `password`, `port`, `socket`, `wrapper`, `owner`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`servers` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `server_name`, `host`, `db`, `username`, `password`, `port`, `socket`, `wrapper`, `owner`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`servers` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `server_name`, `host`, `db`, `username`, `password`, `port`, `socket`, `wrapper`, `owner`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`servers` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'servers', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `server_name`, `host`, `db`, `username`, `password`, `port`, `socket`, `wrapper`, `owner`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`servers` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00198698043823242 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`table_stats` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `db_name`, `table_name`, `cardinality` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`db_name`,`table_name`) # TableParser:4608 13097 PRIMARY key cols: `db_name`, `table_name` # SchemaIterator:7459 13097 Next schema object: mysql table_stats # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `db_name`, `table_name`, `cardinality`, CONCAT(ISNULL(`cardinality`)))) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `cardinality`, CONCAT(ISNULL(`cardinality`)))) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`table_stats` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'table_stats', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `cardinality`, CONCAT(ISNULL(`cardinality`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`table_stats` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `cardinality`, CONCAT(ISNULL(`cardinality`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`table_stats` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `cardinality`, CONCAT(ISNULL(`cardinality`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`table_stats` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `cardinality`, CONCAT(ISNULL(`cardinality`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`table_stats` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'table_stats', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `db_name`, `table_name`, `cardinality`, CONCAT(ISNULL(`cardinality`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`table_stats` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00232195854187012 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`tables_priv` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `host`, `db`, `user`, `table_name`, `grantor`, `timestamp`, `table_priv`, `column_priv` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`host`,`db`,`user`,`table_name`), # TableParser:4608 13097 PRIMARY key cols: `host`, `db`, `user`, `table_name` # TableParser:4588 13097 Parsed key: KEY `grantor` (`grantor`) # TableParser:4608 13097 grantor key cols: `grantor` # SchemaIterator:7459 13097 Next schema object: mysql tables_priv # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `host`, `db`, `user`, `table_name`, `grantor`, UNIX_TIMESTAMP(`timestamp`), `table_priv`, `column_priv`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `table_name`, `grantor`, UNIX_TIMESTAMP(`timestamp`), `table_priv`, `column_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`tables_priv` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'tables_priv', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY, grantor # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `table_name`, `grantor`, UNIX_TIMESTAMP(`timestamp`), `table_priv`, `column_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`tables_priv` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `table_name`, `grantor`, UNIX_TIMESTAMP(`timestamp`), `table_priv`, `column_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`tables_priv` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `table_name`, `grantor`, UNIX_TIMESTAMP(`timestamp`), `table_priv`, `column_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`tables_priv` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `table_name`, `grantor`, UNIX_TIMESTAMP(`timestamp`), `table_priv`, `column_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`tables_priv` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'tables_priv', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `db`, `user`, `table_name`, `grantor`, UNIX_TIMESTAMP(`timestamp`), `table_priv`, `column_priv`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`tables_priv` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00180602073669434 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`time_zone` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `time_zone_id`, `use_leap_seconds` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`time_zone_id`) # TableParser:4608 13097 PRIMARY key cols: `time_zone_id` # SchemaIterator:7459 13097 Next schema object: mysql time_zone # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `time_zone_id`, `use_leap_seconds`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `use_leap_seconds`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`time_zone` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'time_zone', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `use_leap_seconds`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `use_leap_seconds`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `use_leap_seconds`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `use_leap_seconds`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'time_zone', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `use_leap_seconds`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00233888626098633 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`time_zone_leap_second` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `transition_time`, `correction` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`transition_time`) # TableParser:4608 13097 PRIMARY key cols: `transition_time` # SchemaIterator:7459 13097 Next schema object: mysql time_zone_leap_second # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `transition_time`, `correction`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `transition_time`, `correction`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`time_zone_leap_second` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'time_zone_leap_second', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `transition_time`, `correction`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_leap_second` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `transition_time`, `correction`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_leap_second` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `transition_time`, `correction`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_leap_second` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `transition_time`, `correction`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_leap_second` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'time_zone_leap_second', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `transition_time`, `correction`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_leap_second` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00220394134521484 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`time_zone_name` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `name`, `time_zone_id` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`name`) # TableParser:4608 13097 PRIMARY key cols: `name` # SchemaIterator:7459 13097 Next schema object: mysql time_zone_name # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `name`, `time_zone_id`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `name`, `time_zone_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`time_zone_name` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'time_zone_name', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `name`, `time_zone_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_name` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `name`, `time_zone_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_name` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `name`, `time_zone_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_name` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `name`, `time_zone_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_name` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'time_zone_name', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `name`, `time_zone_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_name` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00217103958129883 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`time_zone_transition` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `time_zone_id`, `transition_time`, `transition_type_id` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`time_zone_id`,`transition_time`) # TableParser:4608 13097 PRIMARY key cols: `time_zone_id`, `transition_time` # SchemaIterator:7459 13097 Next schema object: mysql time_zone_transition # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `time_zone_id`, `transition_time`, `transition_type_id`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `transition_time`, `transition_type_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`time_zone_transition` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'time_zone_transition', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `transition_time`, `transition_type_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_transition` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `transition_time`, `transition_type_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_transition` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `transition_time`, `transition_type_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_transition` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `transition_time`, `transition_type_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_transition` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'time_zone_transition', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `transition_time`, `transition_type_id`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_transition` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00194883346557617 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`time_zone_transition_type` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `time_zone_id`, `transition_type_id`, `offset`, `is_dst`, `abbreviation` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`time_zone_id`,`transition_type_id`) # TableParser:4608 13097 PRIMARY key cols: `time_zone_id`, `transition_type_id` # SchemaIterator:7459 13097 Next schema object: mysql time_zone_transition_type # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `time_zone_id`, `transition_type_id`, `offset`, `is_dst`, `abbreviation`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `transition_type_id`, `offset`, `is_dst`, `abbreviation`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`time_zone_transition_type` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'time_zone_transition_type', # type => 'system' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `transition_type_id`, `offset`, `is_dst`, `abbreviation`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_transition_type` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `transition_type_id`, `offset`, `is_dst`, `abbreviation`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_transition_type` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `transition_type_id`, `offset`, `is_dst`, `abbreviation`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_transition_type` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `transition_type_id`, `offset`, `is_dst`, `abbreviation`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_transition_type` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => 'const row not found', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '0', # select_type => 'SIMPLE', # table => 'time_zone_transition_type', # type => 'system' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `time_zone_id`, `transition_type_id`, `offset`, `is_dst`, `abbreviation`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`time_zone_transition_type` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00230312347412109 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # TableParser:4369 13097 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := '', @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */ # TableParser:4374 13097 DBI::db=HASH(0x323cd20) USE `mysql` # TableParser:4378 13097 SHOW CREATE TABLE `mysql`.`user` # TableParser:4388 13097 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4420 13097 Table cols: `host`, `user`, `password`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `reload_priv`, `shutdown_priv`, `process_priv`, `file_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `show_db_priv`, `super_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `execute_priv`, `repl_slave_priv`, `repl_client_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `create_user_priv`, `event_priv`, `trigger_priv`, `create_tablespace_priv`, `ssl_type`, `ssl_cipher`, `x509_issuer`, `x509_subject`, `max_questions`, `max_updates`, `max_connections`, `max_user_connections`, `plugin`, `authentication_string`, `password_expired`, `is_role`, `default_role`, `max_statement_time` # TableParser:4572 13097 Storage engine: MyISAM # TableParser:4588 13097 Parsed key: PRIMARY KEY (`host`,`user`) # TableParser:4608 13097 PRIMARY key cols: `host`, `user` # SchemaIterator:7459 13097 Next schema object: mysql user # RowChecksum:5847 13097 Checksum strat: $VAR1 = { # crc_type => 'int', # crc_width => 16, # func => 'CRC32', # opt_slice => undef # }; # # RowChecksum:5829 13097 Row checksum: CRC32(CONCAT_WS('#', `host`, `user`, `password`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `reload_priv`, `shutdown_priv`, `process_priv`, `file_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `show_db_priv`, `super_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `execute_priv`, `repl_slave_priv`, `repl_client_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `create_user_priv`, `event_priv`, `trigger_priv`, `create_tablespace_priv`, `ssl_type`, CRC32(`ssl_cipher`), CRC32(`x509_issuer`), CRC32(`x509_subject`), `max_questions`, `max_updates`, `max_connections`, `max_user_connections`, `plugin`, CRC32(`authentication_string`), `password_expired`, `is_role`, `default_role`, `max_statement_time`)) # RowChecksum:5868 13097 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `password`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `reload_priv`, `shutdown_priv`, `process_priv`, `file_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `show_db_priv`, `super_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `execute_priv`, `repl_slave_priv`, `repl_client_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `create_user_priv`, `event_priv`, `trigger_priv`, `create_tablespace_priv`, `ssl_type`, CRC32(`ssl_cipher`), CRC32(`x509_issuer`), CRC32(`x509_subject`), `max_questions`, `max_updates`, `max_connections`, `max_user_connections`, `plugin`, CRC32(`authentication_string`), `password_expired`, `is_role`, `default_role`, `max_statement_time`)) AS UNSIGNED)), 10, 16)), 0) AS crc # NibbleIterator:6678 13097 EXPLAIN SELECT * FROM `mysql`.`user` WHERE 1=1 # NibbleIterator:6680 13097 $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '6', # select_type => 'SIMPLE', # table => 'user', # type => 'ALL' # }; # # NibbleIterator:6548 13097 One nibble: yes # NibbleIterator:6610 13097 Auto-selecting best index # TableParser:4484 13097 Indexes sorted best-first: PRIMARY # NibbleIterator:6643 13097 Best index: PRIMARY # NibbleIterator:6196 13097 One nibble statement: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `password`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `reload_priv`, `shutdown_priv`, `process_priv`, `file_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `show_db_priv`, `super_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `execute_priv`, `repl_slave_priv`, `repl_client_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `create_user_priv`, `event_priv`, `trigger_priv`, `create_tablespace_priv`, `ssl_type`, CRC32(`ssl_cipher`), CRC32(`x509_issuer`), CRC32(`x509_subject`), `max_questions`, `max_updates`, `max_connections`, `max_user_connections`, `plugin`, CRC32(`authentication_string`), `password_expired`, `is_role`, `default_role`, `max_statement_time`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`user` /*checksum table*/ # NibbleIterator:6206 13097 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `password`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `reload_priv`, `shutdown_priv`, `process_priv`, `file_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `show_db_priv`, `super_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `execute_priv`, `repl_slave_priv`, `repl_client_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `create_user_priv`, `event_priv`, `trigger_priv`, `create_tablespace_priv`, `ssl_type`, CRC32(`ssl_cipher`), CRC32(`x509_issuer`), CRC32(`x509_subject`), `max_questions`, `max_updates`, `max_connections`, `max_user_connections`, `plugin`, CRC32(`authentication_string`), `password_expired`, `is_role`, `default_role`, `max_statement_time`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`user` /*explain checksum table*/ # OobNibbleIterator:6990 13097 Preparing out-of-bound statement handles # NibbleIterator:6690 13097 Preparing statement handles # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `percona` # pt_table_checksum:10137 13097 DELETE FROM `percona`.`checksums` WHERE db = ? AND tbl = ? # pt_table_checksum:11264 13097 use_repl_db # pt_table_checksum:11285 13097 USE `mysql` # NibbleIterator:6364 13097 init callback returned 1 # NibbleIterator:6400 13097 Nibble: REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `password`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `reload_priv`, `shutdown_priv`, `process_priv`, `file_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `show_db_priv`, `super_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `execute_priv`, `repl_slave_priv`, `repl_client_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `create_user_priv`, `event_priv`, `trigger_priv`, `create_tablespace_priv`, `ssl_type`, CRC32(`ssl_cipher`), CRC32(`x509_issuer`), CRC32(`x509_subject`), `max_questions`, `max_updates`, `max_connections`, `max_user_connections`, `plugin`, CRC32(`authentication_string`), `password_expired`, `is_role`, `default_role`, `max_statement_time`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`user` /*checksum table*/ params: # pt_table_checksum:11350 13097 EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `password`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `reload_priv`, `shutdown_priv`, `process_priv`, `file_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `show_db_priv`, `super_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `execute_priv`, `repl_slave_priv`, `repl_client_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `create_user_priv`, `event_priv`, `trigger_priv`, `create_tablespace_priv`, `ssl_type`, CRC32(`ssl_cipher`), CRC32(`x509_issuer`), CRC32(`x509_subject`), `max_questions`, `max_updates`, `max_connections`, `max_user_connections`, `plugin`, CRC32(`authentication_string`), `password_expired`, `is_role`, `default_role`, `max_statement_time`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`user` /*explain checksum table*/ params: # pt_table_checksum:11360 13097 EXPLAIN plan: $VAR1 = { # extra => '', # id => '1', # key => undef, # key_len => undef, # possible_keys => undef, # ref => undef, # rows => '6', # select_type => 'SIMPLE', # table => 'user', # type => 'ALL' # }; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Quoter:4057 13097 Serializing $VAR1 = []; # # Retry:7831 13097 Try 1 of 2 # pt_table_checksum:10730 13097 REPLACE INTO `percona`.`checksums` (db, tbl, chunk, chunk_index, lower_boundary, upper_boundary, this_cnt, this_crc) SELECT ?, ?, ?, ?, ?, ?, COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `host`, `user`, `password`, `select_priv`, `insert_priv`, `update_priv`, `delete_priv`, `create_priv`, `drop_priv`, `reload_priv`, `shutdown_priv`, `process_priv`, `file_priv`, `grant_priv`, `references_priv`, `index_priv`, `alter_priv`, `show_db_priv`, `super_priv`, `create_tmp_table_priv`, `lock_tables_priv`, `execute_priv`, `repl_slave_priv`, `repl_client_priv`, `create_view_priv`, `show_view_priv`, `create_routine_priv`, `alter_routine_priv`, `create_user_priv`, `event_priv`, `trigger_priv`, `create_tablespace_priv`, `ssl_type`, CRC32(`ssl_cipher`), CRC32(`x509_issuer`), CRC32(`x509_subject`), `max_questions`, `max_updates`, `max_connections`, `max_user_connections`, `plugin`, CRC32(`authentication_string`), `password_expired`, `is_role`, `default_role`, `max_statement_time`)) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `mysql`.`user` /*checksum table*/ lower boundary: upper boundary: # pt_table_checksum:10751 13097 SHOW WARNINGS # pt_table_checksum:10757 13097 Ignoring warning: 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. REPLACE... SELECT is unsafe because the order in which rows are retrieved by the SELECT determines which (if any) rows are replaced. This order cannot be predicted and may differ on master and the slave. # Retry:7848 13097 Try code succeeded # pt_table_checksum:10252 13097 Nibble time: 0.00240588188171387 # NibbleIterator:6408 13097 0 rows in nibble 1 # NibbleIterator:6420 13097 No rows in nibble or nibble skipped # pt_table_checksum:10316 13097 Total avg rate: 1321371 # WeightedAvgRate:8736 13097 Master op time: 6 n / 0.00240588188171387 s # WeightedAvgRate:8748 13097 Initial avg rate: 2493.88801902686 n/s # WeightedAvgRate:8752 13097 Adjust n to 1246 # ReplicaLagWaiter:8483 13097 All slaves caught up # MySQLStatusWaiter:8625 13097 Checking status variables # pt_table_checksum:9821 13097 SHOW GLOBAL STATUS LIKE ? Threads_running # MySQLStatusWaiter:8628 13097 Threads_running = 2 # MySQLStatusWaiter:8655 13097 All var vals are low enough # OobNibbleIterator:7031 13097 Done nibbling past boundaries # NibbleIterator:6429 13097 Done nibbling # OobNibbleIterator:7039 13097 Finish nibble_sth # OobNibbleIterator:7039 13097 Finish explain_nibble_sth # SchemaIterator:7536 13097 Getting next schema object from dbh DBI::db=HASH(0x323cd20) # SchemaIterator:7600 13097 No more tables in database mysql # SchemaIterator:7605 13097 No more databases # pt_table_checksum:10602 13097 Exit status 8 oktorun 1 have time 1 # Cxn:3740 13097 Destroying cxn # Cxn:3749 13097 DBI::db=HASH(0x323cd20) Disconnecting dbh on base.master.localdomain h=localhost