pt-table-checksum - do slaves respect --where clause

Asked by Sean Chighizola

When using pt-table-checksum I receive a message about replicas having too may rows.

Command:
/usr/bin/pt-table-checksum --databases=database --tables=table --where="dateAdded > now() - interval 30 minute" --chunk-size=10000 --chunk-size-limit=10 h=db,u=xxx,p=xxx

Message:
Skipping table database.table because on the master it would be checksummed in one chunk but on these replicas it has too many rows:
  4423915 rows on db06.ash
  4410256 rows on db05.ash
  4418064 rows on db02.ash
  4413856 rows on db04.ash
  4424874 rows on db03.ash

I'm using the --where argument to limit the result set to the last X minutes. I can do this as the dataset has a uniform format. I confirmed on the master and replicas the number of records returned are less than a few thousand. This leads ask if pt-table-checksum respects the --where argument for replicas? Or I very well could be missing something.

Thanks,
Sean

Question information

Revision history for this message
Baron Schwartz (baron-xaprb) said :
#1

I'm pretty sure this is a bug. Please file a bug report and include excerpts from the output with PTDEBUG=1, as well as the relevant SHOW CREATE TABLE, min and max values of the primary key, and the range you're specifying with --where.

And anything else that seems relevant :)

Revision history for this message
Sean Chighizola (sean-chighizola) said :
#2

Thanks for the feedback. The requested information is listed below:

1. show create table definition is listed in the PTDEBUG output

2. Min value: 1; Max value: 4392836

3. --where clause; in this example I hardcoded it: "dateAdded > '2012-01-25 08:25:00'" however I typically use: "dateAdded > now() - INTERVAL 30 MINUTE"

4. Detailed output of PTDEBUG:

/usr/bin/pt-table-checksum --databases=main_database --tables=ecm_recurrence --where="dateAdded > '2012-01-25 08:25:00'" --lock-wait-time=10 --replicate=maatkit.checksum_monthly --chunk-size=40000 --chunk-size-limit=10 h=db01.ash,u=xxxx,p=xxx

# /usr/bin/perl 5.010001
# Arguments: _[--databases=main_database]_ _[--tables=ecm_recurrence]_ _[--where=dateAdded > '2012-01-25 08:25:00']_ _[--lock-wait-time=10]_ _[--replicate=maatkit.checksum_monthly]_ _[--chunk-size=40000]_ _[--chunk-size-limit=10]_ _[h=db01.ash,u=xxx,p=xxx]_

# OptionParser:548 16749 Option rule: This tool accepts additional command-line arguments. Refer to the SYNOPSIS and usage information for details.
# OptionParser:557 16749 =item --ask-pass
# OptionParser:584 16749 Short help: Prompt for a password when connecting to MySQL
# OptionParser:557 16749 =item --check-interval
# OptionParser:584 16749 Short help: Sleep time between checks for --max-lag
# OptionParser:557 16749 =item --[no]check-replication-filters
# OptionParser:584 16749 Short help: Do not checksum if any replication filters are set on any replicas
# OptionParser:557 16749 =item --check-slave-lag
# OptionParser:584 16749 Short help: Pause checksumming until this replica's lag is less than --max-lag
# OptionParser:557 16749 =item --chunk-index
# OptionParser:584 16749 Short help: Prefer this index for chunking tables
# OptionParser:557 16749 =item --chunk-size
# OptionParser:584 16749 Short help: Number of rows to select for each checksum query
# OptionParser:557 16749 =item --chunk-size-limit
# OptionParser:584 16749 Short help: Do not checksum chunks this much larger than the desired chunk size
# OptionParser:557 16749 =item --chunk-time
# OptionParser:584 16749 Short help: Adjust the chunk size dynamically so each checksum query takes this long to execute
# OptionParser:557 16749 =item --columns
# OptionParser:584 16749 Short help: Checksum only this comma-separated list of columns
# OptionParser:557 16749 =item --config
# OptionParser:584 16749 Short help: Read this comma-separated list of config files; if specified, this must be the first option on the command line
# OptionParser:557 16749 =item --[no]create-replicate-table
# OptionParser:584 16749 Short help: Create the --replicate database and table if they do not exist
# OptionParser:557 16749 =item --databases
# OptionParser:584 16749 Short help: Only checksum this comma-separated list of databases
# OptionParser:557 16749 =item --databases-regex
# OptionParser:584 16749 Short help: Only checksum databases whose names match this Perl regex
# OptionParser:557 16749 =item --defaults-file
# OptionParser:584 16749 Short help: Only read mysql options from the given file
# OptionParser:557 16749 =item --[no]empty-replicate-table
# OptionParser:584 16749 Short help: Delete previous checksums for each table before checksumming the table
# OptionParser:557 16749 =item --engines
# OptionParser:584 16749 Short help: Only checksum tables which use these storage engines
# OptionParser:557 16749 =item --explain
# OptionParser:584 16749 Short help: Show, but do not execute, checksum queries (disables --[no]empty-replicate-table)
# OptionParser:557 16749 =item --float-precision
# OptionParser:584 16749 Short help: Precision for FLOAT and DOUBLE number-to-string conversion
# OptionParser:557 16749 =item --function
# OptionParser:584 16749 Short help: Hash function for checksums (FNV1A_64, MURMUR_HASH, SHA1, MD5, CRC32, etc)
# OptionParser:557 16749 =item --help
# OptionParser:584 16749 Short help: Show help and exit
# OptionParser:557 16749 =item --host
# OptionParser:584 16749 Short help: Host to connect to
# OptionParser:557 16749 =item --ignore-columns
# OptionParser:584 16749 Short help: Ignore this comma-separated list of columns when calculating the checksum
# OptionParser:557 16749 =item --ignore-databases
# OptionParser:584 16749 Short help: Ignore this comma-separated list of databases
# OptionParser:557 16749 =item --ignore-databases-regex
# OptionParser:584 16749 Short help: Ignore databases whose names match this Perl regex
# OptionParser:557 16749 =item --ignore-engines
# OptionParser:584 16749 Short help: Ignore this comma-separated list of storage engines
# OptionParser:557 16749 =item --ignore-tables
# OptionParser:584 16749 Short help: Ignore this comma-separated list of tables
# OptionParser:557 16749 =item --ignore-tables-regex
# OptionParser:584 16749 Short help: Ignore tables whose names match the Perl regex
# OptionParser:557 16749 =item --lock-wait-timeout
# OptionParser:584 16749 Short help: Set the session value of the innodb_lock_wait_timeout variable on the master host
# OptionParser:557 16749 =item --max-lag
# OptionParser:584 16749 Short help: Pause checksumming until all replicas' lag is less than this value
# OptionParser:557 16749 =item --max-load
# OptionParser:584 16749 Short help: Examine SHOW GLOBAL STATUS after every chunk, and pause if any status variables are higher than the threshold
# OptionParser:557 16749 =item --password
# OptionParser:584 16749 Short help: Password to use when connecting
# OptionParser:557 16749 =item --pid
# OptionParser:584 16749 Short help: Create the given PID file
# OptionParser:557 16749 =item --port
# OptionParser:584 16749 Short help: Port number to use for connection
# OptionParser:557 16749 =item --progress
# OptionParser:584 16749 Short help: Print progress reports to STDERR
# OptionParser:557 16749 =item --quiet
# OptionParser:584 16749 Short help: Print only the most important information (disables --progress)
# OptionParser:557 16749 =item --recurse
# OptionParser:584 16749 Short help: Number of levels to recurse in the hierarchy when discovering replicas
# OptionParser:557 16749 =item --recursion-method
# OptionParser:584 16749 Short help: Preferred recursion method for discovering replicas
# OptionParser:557 16749 =item --replicate
# OptionParser:584 16749 Short help: Write checksum results to this table
# OptionParser:557 16749 =item --[no]replicate-check
# OptionParser:584 16749 Short help: Check replicas for data differences after finishing each table
# OptionParser:557 16749 =item --replicate-check-only
# OptionParser:576 16749 Option has no attributes
# OptionParser:584 16749 Short help: Check replicas for consistency without executing checksum queries
# OptionParser:557 16749 =item --replicate-database
# OptionParser:584 16749 Short help: USE only this database
# OptionParser:557 16749 =item --resume
# OptionParser:576 16749 Option has no attributes
# OptionParser:584 16749 Short help: Resume checksumming from the last completed chunk (disables --[no]empty-replicate-table)
# OptionParser:557 16749 =item --retries
# OptionParser:584 16749 Short help: Retry a chunk this many times when there is a nonfatal error
# OptionParser:557 16749 =item --separator
# OptionParser:584 16749 Short help: The separator character used for CONCAT_WS()
# OptionParser:557 16749 =item --set-vars
# OptionParser:584 16749 Short help: Set these MySQL variables
# OptionParser:557 16749 =item --socket
# OptionParser:584 16749 Short help: Socket file to use for connection
# OptionParser:557 16749 =item --tables
# OptionParser:584 16749 Short help: Checksum only this comma-separated list of tables
# OptionParser:557 16749 =item --tables-regex
# OptionParser:584 16749 Short help: Checksum only tables whose names match this Perl regex
# OptionParser:557 16749 =item --trim
# OptionParser:576 16749 Option has no attributes
# OptionParser:584 16749 Short help: Add TRIM() to VARCHAR columns (helps when comparing 4.1 to >= 5.0)
# OptionParser:557 16749 =item --user
# OptionParser:584 16749 Short help: User for login if not current user
# OptionParser:557 16749 =item --version
# OptionParser:584 16749 Short help: Show version and exit
# OptionParser:557 16749 =item --where
# OptionParser:584 16749 Short help: Do only rows matching this WHERE clause
# OptionParser:623 16749 Parsing opt spec: group => Connection spec => ask-pass desc => Prompt for a password when connecting to MySQL
# OptionParser:661 16749 ask-pass type: undef
# OptionParser:623 16749 Parsing opt spec: group => Throttle spec => check-interval=m desc => Sleep time between checks for --max-lag (default 1)
# OptionParser:661 16749 check-interval type: m
# OptionParser:668 16749 check-interval default: 1
# OptionParser:623 16749 Parsing opt spec: group => Safety spec => check-replication-filters! desc => Do not checksum if any replication filters are set on any replicas (default yes)
# OptionParser:661 16749 check-replication-filters type: undef
# OptionParser:668 16749 check-replication-filters default: yes
# OptionParser:623 16749 Parsing opt spec: group => Throttle spec => check-slave-lag=s desc => Pause checksumming until this replica's lag is less than --max-lag
# OptionParser:661 16749 check-slave-lag type: s
# OptionParser:623 16749 Parsing opt spec: group => default spec => chunk-index=s desc => Prefer this index for chunking tables
# OptionParser:661 16749 chunk-index type: s
# OptionParser:623 16749 Parsing opt spec: group => default spec => chunk-size=z desc => Number of rows to select for each checksum query (default 1000)
# OptionParser:661 16749 chunk-size type: z
# OptionParser:668 16749 chunk-size default: 1000
# OptionParser:623 16749 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)
# OptionParser:661 16749 chunk-size-limit type: f
# OptionParser:668 16749 chunk-size-limit default: 2.0
# OptionParser:623 16749 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)
# OptionParser:661 16749 chunk-time type: f
# OptionParser:668 16749 chunk-time default: 0.5
# OptionParser:623 16749 Parsing opt spec: group => Filter spec => columns|c=a desc => Checksum only this comma-separated list of columns
# OptionParser:661 16749 columns type: a
# OptionParser:623 16749 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
# OptionParser:661 16749 config type: A
# OptionParser:623 16749 Parsing opt spec: group => default spec => create-replicate-table! desc => Create the --replicate database and table if they do not exist (default yes)
# OptionParser:661 16749 create-replicate-table type: undef
# OptionParser:668 16749 create-replicate-table default: yes
# OptionParser:623 16749 Parsing opt spec: group => Filter spec => databases|d=h desc => Only checksum this comma-separated list of databases
# OptionParser:661 16749 databases type: h
# OptionParser:623 16749 Parsing opt spec: group => Filter spec => databases-regex=s desc => Only checksum databases whose names match this Perl regex
# OptionParser:661 16749 databases-regex type: s
# OptionParser:623 16749 Parsing opt spec: group => Connection spec => defaults-file|F=s desc => Only read mysql options from the given file
# OptionParser:661 16749 defaults-file type: s
# OptionParser:623 16749 Parsing opt spec: group => default spec => empty-replicate-table! desc => Delete previous checksums for each table before checksumming the table (default yes)
# OptionParser:661 16749 empty-replicate-table type: undef
# OptionParser:668 16749 empty-replicate-table default: yes
# OptionParser:623 16749 Parsing opt spec: group => Filter spec => engines|e=h desc => Only checksum tables which use these storage engines
# OptionParser:661 16749 engines type: h
# OptionParser:623 16749 Parsing opt spec: group => Output spec => explain+ desc => Show, but do not execute, checksum queries (disables --[no]empty-replicate-table) (default 0)
# OptionParser:661 16749 explain type: undef
# OptionParser:668 16749 explain default: 0
# OptionParser:677 16749 Deferring check of disables rule for HASH(0x19e5fd0) disables --[no]empty-replicate-table) (default 0)
# OptionParser:623 16749 Parsing opt spec: group => default spec => float-precision=i desc => Precision for FLOAT and DOUBLE number-to-string conversion
# OptionParser:661 16749 float-precision type: i
# OptionParser:623 16749 Parsing opt spec: group => default spec => function=s desc => Hash function for checksums (FNV1A_64, MURMUR_HASH, SHA1, MD5, CRC32, etc)
# OptionParser:661 16749 function type: s
# OptionParser:623 16749 Parsing opt spec: group => Help spec => help desc => Show help and exit
# OptionParser:661 16749 help type: undef
# OptionParser:623 16749 Parsing opt spec: group => Connection spec => host|h=s desc => Host to connect to (default localhost)
# OptionParser:661 16749 host type: s
# OptionParser:668 16749 host default: localhost
# OptionParser:623 16749 Parsing opt spec: group => Filter spec => ignore-columns=H desc => Ignore this comma-separated list of columns when calculating the checksum
# OptionParser:661 16749 ignore-columns type: H
# OptionParser:623 16749 Parsing opt spec: group => Filter spec => ignore-databases=H desc => Ignore this comma-separated list of databases
# OptionParser:661 16749 ignore-databases type: H
# OptionParser:623 16749 Parsing opt spec: group => Filter spec => ignore-databases-regex=s desc => Ignore databases whose names match this Perl regex
# OptionParser:661 16749 ignore-databases-regex type: s
# OptionParser:623 16749 Parsing opt spec: group => Filter spec => ignore-engines=H desc => Ignore this comma-separated list of storage engines (default FEDERATED,MRG_MyISAM)
# OptionParser:661 16749 ignore-engines type: H
# OptionParser:668 16749 ignore-engines default: FEDERATED,MRG_MyISAM
# OptionParser:623 16749 Parsing opt spec: group => Filter spec => ignore-tables=H desc => Ignore this comma-separated list of tables
# OptionParser:661 16749 ignore-tables type: H
# OptionParser:623 16749 Parsing opt spec: group => Filter spec => ignore-tables-regex=s desc => Ignore tables whose names match the Perl regex
# OptionParser:661 16749 ignore-tables-regex type: s
# OptionParser:623 16749 Parsing opt spec: group => default spec => lock-wait-timeout=i desc => Set the session value of the innodb_lock_wait_timeout variable on the master host (default 1)
# OptionParser:661 16749 lock-wait-timeout type: i
# OptionParser:668 16749 lock-wait-timeout default: 1
# OptionParser:623 16749 Parsing opt spec: group => Throttle spec => max-lag=m desc => Pause checksumming until all replicas' lag is less than this value (default 1s)
# OptionParser:661 16749 max-lag type: m
# OptionParser:668 16749 max-lag default: 1s
# OptionParser:623 16749 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)
# OptionParser:661 16749 max-load type: A
# OptionParser:668 16749 max-load default: Threads_running=25
# OptionParser:623 16749 Parsing opt spec: group => Connection spec => password|p=s desc => Password to use when connecting
# OptionParser:661 16749 password type: s
# OptionParser:623 16749 Parsing opt spec: group => default spec => pid=s desc => Create the given PID file
# OptionParser:661 16749 pid type: s
# OptionParser:623 16749 Parsing opt spec: group => Connection spec => port|P=i desc => Port number to use for connection
# OptionParser:661 16749 port type: i
# OptionParser:623 16749 Parsing opt spec: group => default spec => progress=a desc => Print progress reports to STDERR (default time,30)
# OptionParser:661 16749 progress type: a
# OptionParser:668 16749 progress default: time,30
# OptionParser:623 16749 Parsing opt spec: group => default spec => quiet|q+ desc => Print only the most important information (disables --progress) (default 0)
# OptionParser:661 16749 quiet type: undef
# OptionParser:668 16749 quiet default: 0
# OptionParser:677 16749 Deferring check of disables rule for HASH(0x19e5790) disables --progress) (default 0)
# OptionParser:623 16749 Parsing opt spec: group => default spec => recurse=i desc => Number of levels to recurse in the hierarchy when discovering replicas
# OptionParser:661 16749 recurse type: i
# OptionParser:623 16749 Parsing opt spec: group => default spec => recursion-method=s desc => Preferred recursion method for discovering replicas
# OptionParser:661 16749 recursion-method type: s
# OptionParser:623 16749 Parsing opt spec: group => default spec => replicate=s desc => Write checksum results to this table (default percona.checksums)
# OptionParser:661 16749 replicate type: s
# OptionParser:668 16749 replicate default: percona.checksums
# OptionParser:623 16749 Parsing opt spec: group => default spec => replicate-check! desc => Check replicas for data differences after finishing each table (default yes)
# OptionParser:661 16749 replicate-check type: undef
# OptionParser:668 16749 replicate-check default: yes
# OptionParser:623 16749 Parsing opt spec: group => default spec => replicate-check-only desc => Check replicas for consistency without executing checksum queries
# OptionParser:661 16749 replicate-check-only type: undef
# OptionParser:623 16749 Parsing opt spec: group => default spec => replicate-database=s desc => USE only this database
# OptionParser:661 16749 replicate-database type: s
# OptionParser:623 16749 Parsing opt spec: group => default spec => resume desc => Resume checksumming from the last completed chunk (disables --[no]empty-replicate-table)
# OptionParser:661 16749 resume type: undef
# OptionParser:677 16749 Deferring check of disables rule for HASH(0x19e53a0) disables --[no]empty-replicate-table)
# OptionParser:623 16749 Parsing opt spec: group => default spec => retries=i desc => Retry a chunk this many times when there is a nonfatal error (default 2)
# OptionParser:661 16749 retries type: i
# OptionParser:668 16749 retries default: 2
# OptionParser:623 16749 Parsing opt spec: group => default spec => separator=s desc => The separator character used for CONCAT_WS() (default #)
# OptionParser:661 16749 separator type: s
# OptionParser:668 16749 separator default: #
# OptionParser:623 16749 Parsing opt spec: group => Connection spec => set-vars=s desc => Set these MySQL variables (default wait_timeout=10000)
# OptionParser:661 16749 set-vars type: s
# OptionParser:668 16749 set-vars default: wait_timeout=10000
# OptionParser:623 16749 Parsing opt spec: group => Connection spec => socket|S=s desc => Socket file to use for connection
# OptionParser:661 16749 socket type: s
# OptionParser:623 16749 Parsing opt spec: group => Filter spec => tables|t=h desc => Checksum only this comma-separated list of tables
# OptionParser:661 16749 tables type: h
# OptionParser:623 16749 Parsing opt spec: group => Filter spec => tables-regex=s desc => Checksum only tables whose names match this Perl regex
# OptionParser:661 16749 tables-regex type: s
# OptionParser:623 16749 Parsing opt spec: group => default spec => trim desc => Add TRIM() to VARCHAR columns (helps when comparing 4.1 to >= 5.0)
# OptionParser:661 16749 trim type: undef
# OptionParser:623 16749 Parsing opt spec: group => Connection spec => user|u=s desc => User for login if not current user
# OptionParser:661 16749 user type: s
# OptionParser:623 16749 Parsing opt spec: group => Help spec => version desc => Show version and exit
# OptionParser:661 16749 version type: undef
# OptionParser:623 16749 Parsing opt spec: group => default spec => where=s desc => Do only rows matching this WHERE clause
# OptionParser:661 16749 where type: s
# OptionParser:683 16749 Parsing rule: This tool accepts additional command-line arguments. Refer to the SYNOPSIS and usage information for details.
# OptionParser:739 16749 Participants for This tool accepts additional command-line arguments. Refer to the SYNOPSIS and usage information for details. :
# OptionParser:715 16749 Strict mode disabled by rule
# OptionParser:739 16749 Participants for disables --[no]empty-replicate-table) : empty-replicate-table
# OptionParser:725 16749 Option resume disables empty-replicate-table
# OptionParser:739 16749 Participants for disables --progress) (default 0) : progress
# OptionParser:725 16749 Option quiet disables progress
# OptionParser:739 16749 Participants for disables --[no]empty-replicate-table) (default 0) : empty-replicate-table
# OptionParser:725 16749 Option explain disables empty-replicate-table
# OptionParser:467 16749 Parsing DSN OPTIONS
# OptionParser:557 16749 =item * A
# OptionParser:584 16749 Short help: Default character set
# OptionParser:557 16749 =item * D
# OptionParser:584 16749 Short help: DSN table database
# OptionParser:557 16749 =item * F
# OptionParser:584 16749 Short help: Only read default options from the given file
# OptionParser:557 16749 =item * h
# OptionParser:584 16749 Short help: Connect to host
# OptionParser:557 16749 =item * p
# OptionParser:584 16749 Short help: Password to use when connecting
# OptionParser:557 16749 =item * P
# OptionParser:584 16749 Short help: Port number to use for connection
# OptionParser:557 16749 =item * S
# OptionParser:584 16749 Short help: Socket file to use for connection
# OptionParser:557 16749 =item * t
# OptionParser:584 16749 Short help: DSN table table
# OptionParser:557 16749 =item * u
# OptionParser:584 16749 Short help: User for login if not current user
# DSNParser:50 16749 DSN option: copy=1, dsn=charset, desc=Default character set, key=A
# DSNParser:50 16749 DSN option: copy=, dsn=undef, desc=DSN table database, key=D
# DSNParser:50 16749 DSN option: copy=, dsn=mysql_read_default_file, desc=Only read default options from the given file, key=F
# DSNParser:50 16749 DSN option: copy=1, dsn=host, desc=Connect to host, key=h
# DSNParser:50 16749 DSN option: copy=1, dsn=password, desc=Password to use when connecting, key=p
# DSNParser:50 16749 DSN option: copy=1, dsn=port, desc=Port number to use for connection, key=P
# DSNParser:50 16749 DSN option: copy=, dsn=mysql_socket, desc=Socket file to use for connection, key=S
# DSNParser:50 16749 DSN option: copy=, dsn=undef, desc=DSN table table, key=t
# DSNParser:50 16749 DSN option: copy=1, dsn=user, desc=User for login if not current user, key=u
# OptionParser:511 16749 pt-table-checksum 2.0.2
# OptionParser:823 16749 Cannot open /etc/percona-toolkit/percona-toolkit.conf: No such file or directory
#
# OptionParser:823 16749 Cannot open /etc/percona-toolkit/pt-table-checksum.conf: No such file or directory
#
# OptionParser:823 16749 Cannot open /home/sean/.percona-toolkit.conf: No such file or directory
#
# OptionParser:823 16749 Cannot open /home/sean/.pt-table-checksum.conf: No such file or directory
#
# OptionParser:791 16749 Got option databases = main_database
# OptionParser:791 16749 Got option tables = ecm_recurrence
# OptionParser:791 16749 Got option where = dateAdded > '2012-01-25 08:25:00'
# OptionParser:791 16749 Got option lock-wait-timeout = 10
# OptionParser:791 16749 Got option replicate = maatkit.checksum_monthly
# OptionParser:791 16749 Got option chunk-size = 40000
# OptionParser:791 16749 Got option chunk-size-limit = 10
# OptionParser:1011 16749 Nothing to validate for option ignore-tables-regex type s value undef
# OptionParser:1001 16749 Parsing option chunk-size as a size value
# OptionParser:1011 16749 Nothing to validate for option recursion-method type s value undef
# OptionParser:1011 16749 Nothing to validate for option ignore-databases-regex type s value undef
# OptionParser:1011 16749 Nothing to validate for option check-slave-lag type s value undef
# OptionParser:1011 16749 Nothing to validate for option chunk-index type s value undef
# OptionParser:1011 16749 Nothing to validate for option password type s value undef
# OptionParser:1011 16749 Nothing to validate for option pid type s value undef
# OptionParser:1011 16749 Nothing to validate for option replicate type s value maatkit.checksum_monthly
# OptionParser:1011 16749 Nothing to validate for option float-precision type i value undef
# OptionParser:1011 16749 Nothing to validate for option user type s value undef
# OptionParser:1011 16749 Nothing to validate for option chunk-time type f value 0.5
# OptionParser:1011 16749 Nothing to validate for option set-vars type s value wait_timeout=10000
# OptionParser:1011 16749 Nothing to validate for option port type i value undef
# OptionParser:1011 16749 Nothing to validate for option socket type s value undef
# OptionParser:1011 16749 Nothing to validate for option lock-wait-timeout type i value 10
# OptionParser:962 16749 Parsing option check-interval as a time value
# OptionParser:967 16749 No suffix given; using s for check-interval (value: 1 )
# OptionParser:976 16749 Setting option check-interval to 1
# OptionParser:1011 16749 Nothing to validate for option recurse type i value undef
# OptionParser:1011 16749 Nothing to validate for option columns type a value undef
# OptionParser:962 16749 Parsing option max-lag as a time value
# OptionParser:976 16749 Setting option max-lag to 1
# OptionParser:1011 16749 Nothing to validate for option replicate-database type s value undef
# OptionParser:1011 16749 Nothing to validate for option engines type h value undef
# OptionParser:1011 16749 Nothing to validate for option retries type i value 2
# OptionParser:1011 16749 Nothing to validate for option function type s value undef
# OptionParser:1011 16749 Nothing to validate for option databases-regex type s value undef
# OptionParser:1011 16749 Nothing to validate for option tables-regex type s value undef
# OptionParser:1011 16749 Nothing to validate for option chunk-size-limit type f value 10
# OptionParser:1011 16749 Nothing to validate for option where type s value dateAdded > '2012-01-25 08:25:00'
# OptionParser:1011 16749 Nothing to validate for option defaults-file type s value undef
# OptionParser:1011 16749 Nothing to validate for option host type s value localhost
# OptionParser:1011 16749 Nothing to validate for option separator type s value #
# DSNParser:66 16749 Setting set-vars property
# OptionParser:1085 16749 Getting description and usage from SYNOPSIS in /usr/bin/pt-table-checksum
# OptionParser:1338 16749 Parsing SYNOPSIS in /usr/bin/pt-table-checksum
# OptionParser:1351 16749 Raw SYNOPSIS text: Usage: pt-table-checksum [OPTION...] [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 exit status is nonzero if any differences are found, or if any
# warnings or errors occur.
#
#
# OptionParser:1089 16749 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 exit status is nonzero if any differences are found, or if any warnings or errors occur.
# Usage: pt-table-checksum [OPTION...] [DSN]
# DSNParser:137 16749 DSN string made from options: h=localhost,t=HASH(0x1680a70)
# DSNParser:78 16749 Parsing h=localhost,t=HASH(0x1680a70)
# DSNParser:96 16749 Finding value for S
# DSNParser:106 16749 Copying value for S from defaults
# DSNParser:96 16749 Finding value for F
# DSNParser:106 16749 Copying value for F from defaults
# DSNParser:96 16749 Finding value for A
# DSNParser:106 16749 Copying value for A from defaults
# DSNParser:96 16749 Finding value for P
# DSNParser:106 16749 Copying value for P from defaults
# DSNParser:96 16749 Finding value for p
# DSNParser:106 16749 Copying value for p from defaults
# DSNParser:96 16749 Finding value for u
# DSNParser:106 16749 Copying value for u from defaults
# DSNParser:96 16749 Finding value for h
# DSNParser:96 16749 Finding value for D
# DSNParser:106 16749 Copying value for D from defaults
# DSNParser:96 16749 Finding value for t
# DSNParser:78 16749 Parsing h=db01.ash,u=xxx,p=xxx
# DSNParser:96 16749 Finding value for S
# DSNParser:106 16749 Copying value for S from defaults
# DSNParser:96 16749 Finding value for F
# DSNParser:106 16749 Copying value for F from defaults
# DSNParser:96 16749 Finding value for A
# DSNParser:106 16749 Copying value for A from defaults
# DSNParser:96 16749 Finding value for P
# DSNParser:106 16749 Copying value for P from defaults
# DSNParser:96 16749 Finding value for p
# DSNParser:96 16749 Finding value for u
# DSNParser:96 16749 Finding value for h
# DSNParser:96 16749 Finding value for D
# DSNParser:106 16749 Copying value for D from defaults
# DSNParser:96 16749 Finding value for t
# DSNParser:106 16749 Copying value for t from defaults
# DSNParser:189 16749 DBI:mysql:;host=db01.ash;mysql_read_default_group=client
# DSNParser:235 16749 DBI:mysql:;host=db01.ash;mysql_read_default_group=client xxx xxx mysql_enable_utf8=>0, ShowErrorStatement=>1, AutoCommit=>1, RaiseError=>1, PrintError=>0
# DSNParser:244 16749 DBI::db=HASH(0x1b32d80) SELECT @@SQL_MODE
# DSNParser:251 16749 DBI::db=HASH(0x1b32d80) SET @@SQL_QUOTE_SHOW_CREATE = 1/*!40101, @@SQL_MODE='NO_AUTO_VALUE_ON_ZERO'*/
# DSNParser:270 16749 DBI::db=HASH(0x1b32d80) : SET wait_timeout=10000
# DSNParser:296 16749 DBH info: DBI::db=HASH(0x1b32d80) $VAR1 = {
# '@@hostname' => 'db01.ash',
# 'CONNECTION_ID()' => '1957969',
# 'DATABASE()' => undef,
# 'VERSION()' => '5.1.38-log'
# };
# Connection info: db01.ash via TCP/IP 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/local/mysql-5.1.38-linux-x86_64-glibc23/share/charsets/',
# Variable_name => 'character_sets_dir'
# }
# ];
# $DBD::mysql::VERSION: 4.012 $DBI::VERSION: 1.609
# Cxn:1461 16749 DBI::db=HASH(0x1b32d80) Connected dbh to undef
# Cxn:1474 16749 DBI::db=HASH(0x1b32d80) Setting dbh
# Cxn:1479 16749 DBI::db=HASH(0x1b32d80) SELECT @@hostname, @@server_id
# Cxn:1481 16749 DBI::db=HASH(0x1b32d80) hostname: db01.ash 60016121
# pt_table_checksum:5886 16749 DBI::db=HASH(0x1b32d80) /*!50108 SET @@binlog_format := "STATEMENT"*/
# pt_table_checksum:5900 16749 DBI::db=HASH(0x1b32d80) SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
# pt_table_checksum:5918 16749 DBI::db=HASH(0x1b32d80) SHOW SESSION VARIABLES LIKE "innodb_lock_wait_timeout"
# pt_table_checksum:5920 16749 innodb_lock_wait_timeout 10
# MasterSlave:2456 16749 Slave recursion method: undef
# MasterSlave:2504 16749 Connected to h=db01.ash,p=...,t=HASH(0x1680a70),u=xxx
# MasterSlave:2513 16749 SELECT @@SERVER_ID
# MasterSlave:2515 16749 Working on server ID 60016121
# MasterSlave:2559 16749 Looking for slaves on h=db01.ash,p=...,t=HASH(0x1680a70),u=xxx using methods processlist hosts
# MasterSlave:2566 16749 Finding slaves with _find_slaves_by_processlist
# VersionParser:1677 16749 5.1.38-log parses to 005001038
# VersionParser:1677 16749 4.1.2 parses to 004001002
# VersionParser:1688 16749 005001038 ge 4.1.2 : 1
# MasterSlave:2633 16749 DBI::db=HASH(0x1b32d80) SHOW GRANTS FOR CURRENT_USER()
# MasterSlave:2663 16749 DBI::db=HASH(0x1b32d80) SHOW PROCESSLIST
# DSNParser:78 16749 Parsing h=10.60.20.126
# DSNParser:96 16749 Finding value for S
# DSNParser:106 16749 Copying value for S from defaults
# DSNParser:96 16749 Finding value for F
# DSNParser:106 16749 Copying value for F from defaults
# DSNParser:96 16749 Finding value for A
# DSNParser:106 16749 Copying value for A from defaults
# DSNParser:96 16749 Finding value for P
# DSNParser:106 16749 Copying value for P from defaults
# DSNParser:96 16749 Finding value for p
# DSNParser:102 16749 Copying value for p from previous DSN
# DSNParser:96 16749 Finding value for u
# DSNParser:102 16749 Copying value for u from previous DSN
# DSNParser:96 16749 Finding value for h
# DSNParser:96 16749 Finding value for D
# DSNParser:106 16749 Copying value for D from defaults
# DSNParser:96 16749 Finding value for t
# DSNParser:106 16749 Copying value for t from defaults
# DSNParser:78 16749 Parsing h=10.60.20.125
# DSNParser:96 16749 Finding value for S
# DSNParser:106 16749 Copying value for S from defaults
# DSNParser:96 16749 Finding value for F
# DSNParser:106 16749 Copying value for F from defaults
# DSNParser:96 16749 Finding value for A
# DSNParser:106 16749 Copying value for A from defaults
# DSNParser:96 16749 Finding value for P
# DSNParser:106 16749 Copying value for P from defaults
# DSNParser:96 16749 Finding value for p
# DSNParser:102 16749 Copying value for p from previous DSN
# DSNParser:96 16749 Finding value for u
# DSNParser:102 16749 Copying value for u from previous DSN
# DSNParser:96 16749 Finding value for h
# DSNParser:96 16749 Finding value for D
# DSNParser:106 16749 Copying value for D from defaults
# DSNParser:96 16749 Finding value for t
# DSNParser:106 16749 Copying value for t from defaults
# DSNParser:78 16749 Parsing h=10.60.20.122
# DSNParser:96 16749 Finding value for S
# DSNParser:106 16749 Copying value for S from defaults
# DSNParser:96 16749 Finding value for F
# DSNParser:106 16749 Copying value for F from defaults
# DSNParser:96 16749 Finding value for A
# DSNParser:106 16749 Copying value for A from defaults
# DSNParser:96 16749 Finding value for P
# DSNParser:106 16749 Copying value for P from defaults
# DSNParser:96 16749 Finding value for p
# DSNParser:102 16749 Copying value for p from previous DSN
# DSNParser:96 16749 Finding value for u
# DSNParser:102 16749 Copying value for u from previous DSN
# DSNParser:96 16749 Finding value for h
# DSNParser:96 16749 Finding value for D
# DSNParser:106 16749 Copying value for D from defaults
# DSNParser:96 16749 Finding value for t
# DSNParser:106 16749 Copying value for t from defaults
# DSNParser:78 16749 Parsing h=10.60.20.124
# DSNParser:96 16749 Finding value for S
# DSNParser:106 16749 Copying value for S from defaults
# DSNParser:96 16749 Finding value for F
# DSNParser:106 16749 Copying value for F from defaults
# DSNParser:96 16749 Finding value for A
# DSNParser:106 16749 Copying value for A from defaults
# DSNParser:96 16749 Finding value for P
# DSNParser:106 16749 Copying value for P from defaults
# DSNParser:96 16749 Finding value for p
# DSNParser:102 16749 Copying value for p from previous DSN
# DSNParser:96 16749 Finding value for u
# DSNParser:102 16749 Copying value for u from previous DSN
# DSNParser:96 16749 Finding value for h
# DSNParser:96 16749 Finding value for D
# DSNParser:106 16749 Copying value for D from defaults
# DSNParser:96 16749 Finding value for t
# DSNParser:106 16749 Copying value for t from defaults
# DSNParser:78 16749 Parsing h=10.60.20.123
# DSNParser:96 16749 Finding value for S
# DSNParser:106 16749 Copying value for S from defaults
# DSNParser:96 16749 Finding value for F
# DSNParser:106 16749 Copying value for F from defaults
# DSNParser:96 16749 Finding value for A
# DSNParser:106 16749 Copying value for A from defaults
# DSNParser:96 16749 Finding value for P
# DSNParser:106 16749 Copying value for P from defaults
# DSNParser:96 16749 Finding value for p
# DSNParser:102 16749 Copying value for p from previous DSN
# DSNParser:96 16749 Finding value for u
# DSNParser:102 16749 Copying value for u from previous DSN
# DSNParser:96 16749 Finding value for h
# DSNParser:96 16749 Finding value for D
# DSNParser:106 16749 Copying value for D from defaults
# DSNParser:96 16749 Finding value for t
# DSNParser:106 16749 Copying value for t from defaults
# MasterSlave:2571 16749 Found 5 slaves
# MasterSlave:2537 16749 Recursing from h=db01.ash,p=...,t=HASH(0x1680a70),u=xxx to h=10.60.20.126,p=...,u=xxx
# DSNParser:189 16749 DBI:mysql:;host=10.60.20.126;mysql_read_default_group=client
# DSNParser:235 16749 DBI:mysql:;host=10.60.20.126;mysql_read_default_group=client xxx xxx mysql_enable_utf8=>0, ShowErrorStatement=>1, AutoCommit=>1, RaiseError=>1, PrintError=>0
# DSNParser:244 16749 DBI::db=HASH(0x1b01778) SELECT @@SQL_MODE
# DSNParser:251 16749 DBI::db=HASH(0x1b01778) SET @@SQL_QUOTE_SHOW_CREATE = 1/*!40101, @@SQL_MODE='NO_AUTO_VALUE_ON_ZERO'*/
# DSNParser:270 16749 DBI::db=HASH(0x1b01778) : SET wait_timeout=10000
# DSNParser:296 16749 DBH info: DBI::db=HASH(0x1b01778) $VAR1 = {
# '@@hostname' => 'db06.ash',
# 'CONNECTION_ID()' => '2167586',
# 'DATABASE()' => undef,
# 'VERSION()' => '5.1.38-log'
# };
# Connection info: 10.60.20.126 via TCP/IP 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/local/mysql-5.1.38-linux-x86_64-glibc23/share/charsets/',
# Variable_name => 'character_sets_dir'
# }
# ];
# $DBD::mysql::VERSION: 4.012 $DBI::VERSION: 1.609
# MasterSlave:2504 16749 Connected to h=10.60.20.126,p=...,u=xxx
# MasterSlave:2513 16749 SELECT @@SERVER_ID
# MasterSlave:2515 16749 Working on server ID 600200126
# MasterSlave:2472 16749 Found slave: h=10.60.20.126,p=...,u=xxx
# DSNParser:137 16749 DSN string made from options: h=localhost,t=HASH(0x1680a70)
# DSNParser:78 16749 Parsing h=localhost,t=HASH(0x1680a70)
# DSNParser:96 16749 Finding value for S
# DSNParser:106 16749 Copying value for S from defaults
# DSNParser:96 16749 Finding value for F
# DSNParser:106 16749 Copying value for F from defaults
# DSNParser:96 16749 Finding value for A
# DSNParser:106 16749 Copying value for A from defaults
# DSNParser:96 16749 Finding value for P
# DSNParser:106 16749 Copying value for P from defaults
# DSNParser:96 16749 Finding value for p
# DSNParser:106 16749 Copying value for p from defaults
# DSNParser:96 16749 Finding value for u
# DSNParser:106 16749 Copying value for u from defaults
# DSNParser:96 16749 Finding value for h
# DSNParser:96 16749 Finding value for D
# DSNParser:106 16749 Copying value for D from defaults
# DSNParser:96 16749 Finding value for t
# Cxn:1461 16749 DBI::db=HASH(0x1b01778) Connected dbh to undef
# Cxn:1474 16749 DBI::db=HASH(0x1b01778) Setting dbh
# Cxn:1479 16749 DBI::db=HASH(0x1b01778) SELECT @@hostname, @@server_id
# Cxn:1481 16749 DBI::db=HASH(0x1b01778) hostname: db06.ash 600200126
# MasterSlave:2559 16749 Looking for slaves on h=10.60.20.126,p=...,u=xxx using methods processlist hosts
# MasterSlave:2566 16749 Finding slaves with _find_slaves_by_processlist
# VersionParser:1677 16749 5.1.38-log parses to 005001038
# VersionParser:1677 16749 4.1.2 parses to 004001002
# VersionParser:1688 16749 005001038 ge 4.1.2 : 1
# MasterSlave:2633 16749 DBI::db=HASH(0x1b01778) SHOW GRANTS FOR CURRENT_USER()
# MasterSlave:2663 16749 DBI::db=HASH(0x1b01778) SHOW PROCESSLIST
# MasterSlave:2566 16749 Finding slaves with _find_slaves_by_hosts
# MasterSlave:2600 16749 DBI::db=HASH(0x1b01778) SHOW SLAVE HOSTS
# MasterSlave:2571 16749 Found 0 slaves
# MasterSlave:2537 16749 Recursing from h=db01.ash,p=...,t=HASH(0x1680a70),u=xxx to h=10.60.20.125,p=...,u=xxx
# DSNParser:189 16749 DBI:mysql:;host=10.60.20.125;mysql_read_default_group=client
# DSNParser:235 16749 DBI:mysql:;host=10.60.20.125;mysql_read_default_group=client xxx xxx mysql_enable_utf8=>0, ShowErrorStatement=>1, AutoCommit=>1, RaiseError=>1, PrintError=>0
# DSNParser:244 16749 DBI::db=HASH(0x1afeaf0) SELECT @@SQL_MODE
# DSNParser:251 16749 DBI::db=HASH(0x1afeaf0) SET @@SQL_QUOTE_SHOW_CREATE = 1/*!40101, @@SQL_MODE='NO_AUTO_VALUE_ON_ZERO'*/
# DSNParser:270 16749 DBI::db=HASH(0x1afeaf0) : SET wait_timeout=10000
# DSNParser:296 16749 DBH info: DBI::db=HASH(0x1afeaf0) $VAR1 = {
# '@@hostname' => 'db05.ash',
# 'CONNECTION_ID()' => '2164244',
# 'DATABASE()' => undef,
# 'VERSION()' => '5.1.38-log'
# };
# Connection info: 10.60.20.125 via TCP/IP 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/local/mysql-5.1.38-linux-x86_64-glibc23/share/charsets/',
# Variable_name => 'character_sets_dir'
# }
# ];
# $DBD::mysql::VERSION: 4.012 $DBI::VERSION: 1.609
# MasterSlave:2504 16749 Connected to h=10.60.20.125,p=...,u=xxx
# MasterSlave:2513 16749 SELECT @@SERVER_ID
# MasterSlave:2515 16749 Working on server ID 600200125
# MasterSlave:2472 16749 Found slave: h=10.60.20.125,p=...,u=xxx
# DSNParser:137 16749 DSN string made from options: h=localhost,t=HASH(0x1680a70)
# DSNParser:78 16749 Parsing h=localhost,t=HASH(0x1680a70)
# DSNParser:96 16749 Finding value for S
# DSNParser:106 16749 Copying value for S from defaults
# DSNParser:96 16749 Finding value for F
# DSNParser:106 16749 Copying value for F from defaults
# DSNParser:96 16749 Finding value for A
# DSNParser:106 16749 Copying value for A from defaults
# DSNParser:96 16749 Finding value for P
# DSNParser:106 16749 Copying value for P from defaults
# DSNParser:96 16749 Finding value for p
# DSNParser:106 16749 Copying value for p from defaults
# DSNParser:96 16749 Finding value for u
# DSNParser:106 16749 Copying value for u from defaults
# DSNParser:96 16749 Finding value for h
# DSNParser:96 16749 Finding value for D
# DSNParser:106 16749 Copying value for D from defaults
# DSNParser:96 16749 Finding value for t
# Cxn:1461 16749 DBI::db=HASH(0x1afeaf0) Connected dbh to undef
# Cxn:1474 16749 DBI::db=HASH(0x1afeaf0) Setting dbh
# Cxn:1479 16749 DBI::db=HASH(0x1afeaf0) SELECT @@hostname, @@server_id
# Cxn:1481 16749 DBI::db=HASH(0x1afeaf0) hostname: db05.ash 600200125
# MasterSlave:2559 16749 Looking for slaves on h=10.60.20.125,p=...,u=xxx using methods processlist hosts
# MasterSlave:2566 16749 Finding slaves with _find_slaves_by_processlist
# VersionParser:1677 16749 5.1.38-log parses to 005001038
# VersionParser:1677 16749 4.1.2 parses to 004001002
# VersionParser:1688 16749 005001038 ge 4.1.2 : 1
# MasterSlave:2633 16749 DBI::db=HASH(0x1afeaf0) SHOW GRANTS FOR CURRENT_USER()
# MasterSlave:2663 16749 DBI::db=HASH(0x1afeaf0) SHOW PROCESSLIST
# MasterSlave:2566 16749 Finding slaves with _find_slaves_by_hosts
# MasterSlave:2600 16749 DBI::db=HASH(0x1afeaf0) SHOW SLAVE HOSTS
# MasterSlave:2571 16749 Found 0 slaves
# MasterSlave:2537 16749 Recursing from h=db01.ash,p=...,t=HASH(0x1680a70),u=xxx to h=10.60.20.122,p=...,u=xxx
# DSNParser:189 16749 DBI:mysql:;host=10.60.20.122;mysql_read_default_group=client
# DSNParser:235 16749 DBI:mysql:;host=10.60.20.122;mysql_read_default_group=client xxx xxx mysql_enable_utf8=>0, ShowErrorStatement=>1, AutoCommit=>1, RaiseError=>1, PrintError=>0
# DSNParser:244 16749 DBI::db=HASH(0x1b5a710) SELECT @@SQL_MODE
# DSNParser:251 16749 DBI::db=HASH(0x1b5a710) SET @@SQL_QUOTE_SHOW_CREATE = 1/*!40101, @@SQL_MODE='NO_AUTO_VALUE_ON_ZERO'*/
# DSNParser:270 16749 DBI::db=HASH(0x1b5a710) : SET wait_timeout=10000
# DSNParser:296 16749 DBH info: DBI::db=HASH(0x1b5a710) $VAR1 = {
# '@@hostname' => 'db02.ash',
# 'CONNECTION_ID()' => '2153910',
# 'DATABASE()' => undef,
# 'VERSION()' => '5.1.38-log'
# };
# Connection info: 10.60.20.122 via TCP/IP 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/local/mysql-5.1.38-linux-x86_64-glibc23/share/charsets/',
# Variable_name => 'character_sets_dir'
# }
# ];
# $DBD::mysql::VERSION: 4.012 $DBI::VERSION: 1.609
# MasterSlave:2504 16749 Connected to h=10.60.20.122,p=...,u=xxx
# MasterSlave:2513 16749 SELECT @@SERVER_ID
# MasterSlave:2515 16749 Working on server ID 600200122
# MasterSlave:2472 16749 Found slave: h=10.60.20.122,p=...,u=xxx
# DSNParser:137 16749 DSN string made from options: h=localhost,t=HASH(0x1680a70)
# DSNParser:78 16749 Parsing h=localhost,t=HASH(0x1680a70)
# DSNParser:96 16749 Finding value for S
# DSNParser:106 16749 Copying value for S from defaults
# DSNParser:96 16749 Finding value for F
# DSNParser:106 16749 Copying value for F from defaults
# DSNParser:96 16749 Finding value for A
# DSNParser:106 16749 Copying value for A from defaults
# DSNParser:96 16749 Finding value for P
# DSNParser:106 16749 Copying value for P from defaults
# DSNParser:96 16749 Finding value for p
# DSNParser:106 16749 Copying value for p from defaults
# DSNParser:96 16749 Finding value for u
# DSNParser:106 16749 Copying value for u from defaults
# DSNParser:96 16749 Finding value for h
# DSNParser:96 16749 Finding value for D
# DSNParser:106 16749 Copying value for D from defaults
# DSNParser:96 16749 Finding value for t
# Cxn:1461 16749 DBI::db=HASH(0x1b5a710) Connected dbh to undef
# Cxn:1474 16749 DBI::db=HASH(0x1b5a710) Setting dbh
# Cxn:1479 16749 DBI::db=HASH(0x1b5a710) SELECT @@hostname, @@server_id
# Cxn:1481 16749 DBI::db=HASH(0x1b5a710) hostname: db02.ash 600200122
# MasterSlave:2559 16749 Looking for slaves on h=10.60.20.122,p=...,u=xxx using methods processlist hosts
# MasterSlave:2566 16749 Finding slaves with _find_slaves_by_processlist
# VersionParser:1677 16749 5.1.38-log parses to 005001038
# VersionParser:1677 16749 4.1.2 parses to 004001002
# VersionParser:1688 16749 005001038 ge 4.1.2 : 1
# MasterSlave:2633 16749 DBI::db=HASH(0x1b5a710) SHOW GRANTS FOR CURRENT_USER()
# MasterSlave:2663 16749 DBI::db=HASH(0x1b5a710) SHOW PROCESSLIST
# MasterSlave:2566 16749 Finding slaves with _find_slaves_by_hosts
# MasterSlave:2600 16749 DBI::db=HASH(0x1b5a710) SHOW SLAVE HOSTS
# MasterSlave:2571 16749 Found 0 slaves
# MasterSlave:2537 16749 Recursing from h=db01.ash,p=...,t=HASH(0x1680a70),u=xxx to h=10.60.20.124,p=...,u=xxx
# DSNParser:189 16749 DBI:mysql:;host=10.60.20.124;mysql_read_default_group=client
# DSNParser:235 16749 DBI:mysql:;host=10.60.20.124;mysql_read_default_group=client xxx xxx mysql_enable_utf8=>0, ShowErrorStatement=>1, AutoCommit=>1, RaiseError=>1, PrintError=>0
# DSNParser:244 16749 DBI::db=HASH(0x1bbd870) SELECT @@SQL_MODE
# DSNParser:251 16749 DBI::db=HASH(0x1bbd870) SET @@SQL_QUOTE_SHOW_CREATE = 1/*!40101, @@SQL_MODE='NO_AUTO_VALUE_ON_ZERO'*/
# DSNParser:270 16749 DBI::db=HASH(0x1bbd870) : SET wait_timeout=10000
# DSNParser:296 16749 DBH info: DBI::db=HASH(0x1bbd870) $VAR1 = {
# '@@hostname' => 'db04.ash',
# 'CONNECTION_ID()' => '1316898',
# 'DATABASE()' => undef,
# 'VERSION()' => '5.1.38-log'
# };
# Connection info: 10.60.20.124 via TCP/IP 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/local/mysql-5.1.38-linux-x86_64-glibc23/share/charsets/',
# Variable_name => 'character_sets_dir'
# }
# ];
# $DBD::mysql::VERSION: 4.012 $DBI::VERSION: 1.609
# MasterSlave:2504 16749 Connected to h=10.60.20.124,p=...,u=xxx
# MasterSlave:2513 16749 SELECT @@SERVER_ID
# MasterSlave:2515 16749 Working on server ID 600200124
# MasterSlave:2472 16749 Found slave: h=10.60.20.124,p=...,u=xxx
# DSNParser:137 16749 DSN string made from options: h=localhost,t=HASH(0x1680a70)
# DSNParser:78 16749 Parsing h=localhost,t=HASH(0x1680a70)
# DSNParser:96 16749 Finding value for S
# DSNParser:106 16749 Copying value for S from defaults
# DSNParser:96 16749 Finding value for F
# DSNParser:106 16749 Copying value for F from defaults
# DSNParser:96 16749 Finding value for A
# DSNParser:106 16749 Copying value for A from defaults
# DSNParser:96 16749 Finding value for P
# DSNParser:106 16749 Copying value for P from defaults
# DSNParser:96 16749 Finding value for p
# DSNParser:106 16749 Copying value for p from defaults
# DSNParser:96 16749 Finding value for u
# DSNParser:106 16749 Copying value for u from defaults
# DSNParser:96 16749 Finding value for h
# DSNParser:96 16749 Finding value for D
# DSNParser:106 16749 Copying value for D from defaults
# DSNParser:96 16749 Finding value for t
# Cxn:1461 16749 DBI::db=HASH(0x1bbd870) Connected dbh to undef
# Cxn:1474 16749 DBI::db=HASH(0x1bbd870) Setting dbh
# Cxn:1479 16749 DBI::db=HASH(0x1bbd870) SELECT @@hostname, @@server_id
# Cxn:1481 16749 DBI::db=HASH(0x1bbd870) hostname: db04.ash 600200124
# MasterSlave:2559 16749 Looking for slaves on h=10.60.20.124,p=...,u=xxx using methods processlist hosts
# MasterSlave:2566 16749 Finding slaves with _find_slaves_by_processlist
# VersionParser:1677 16749 5.1.38-log parses to 005001038
# VersionParser:1677 16749 4.1.2 parses to 004001002
# VersionParser:1688 16749 005001038 ge 4.1.2 : 1
# MasterSlave:2633 16749 DBI::db=HASH(0x1bbd870) SHOW GRANTS FOR CURRENT_USER()
# MasterSlave:2663 16749 DBI::db=HASH(0x1bbd870) SHOW PROCESSLIST
# MasterSlave:2566 16749 Finding slaves with _find_slaves_by_hosts
# MasterSlave:2600 16749 DBI::db=HASH(0x1bbd870) SHOW SLAVE HOSTS
# MasterSlave:2571 16749 Found 0 slaves
# MasterSlave:2537 16749 Recursing from h=db01.ash,p=...,t=HASH(0x1680a70),u=xxx to h=10.60.20.123,p=...,u=xxx
# DSNParser:189 16749 DBI:mysql:;host=10.60.20.123;mysql_read_default_group=client
# DSNParser:235 16749 DBI:mysql:;host=10.60.20.123;mysql_read_default_group=client xxx xxx mysql_enable_utf8=>0, ShowErrorStatement=>1, AutoCommit=>1, RaiseError=>1, PrintError=>0
# DSNParser:244 16749 DBI::db=HASH(0x1bc5098) SELECT @@SQL_MODE
# DSNParser:251 16749 DBI::db=HASH(0x1bc5098) SET @@SQL_QUOTE_SHOW_CREATE = 1/*!40101, @@SQL_MODE='NO_AUTO_VALUE_ON_ZERO'*/
# DSNParser:270 16749 DBI::db=HASH(0x1bc5098) : SET wait_timeout=10000
# DSNParser:296 16749 DBH info: DBI::db=HASH(0x1bc5098) $VAR1 = {
# '@@hostname' => 'db03.ash',
# 'CONNECTION_ID()' => '1316942',
# 'DATABASE()' => undef,
# 'VERSION()' => '5.1.38-log'
# };
# Connection info: 10.60.20.123 via TCP/IP 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/local/mysql-5.1.38-linux-x86_64-glibc23/share/charsets/',
# Variable_name => 'character_sets_dir'
# }
# ];
# $DBD::mysql::VERSION: 4.012 $DBI::VERSION: 1.609
# MasterSlave:2504 16749 Connected to h=10.60.20.123,p=...,u=xxx
# MasterSlave:2513 16749 SELECT @@SERVER_ID
# MasterSlave:2515 16749 Working on server ID 600200123
# MasterSlave:2472 16749 Found slave: h=10.60.20.123,p=...,u=xxx
# DSNParser:137 16749 DSN string made from options: h=localhost,t=HASH(0x1680a70)
# DSNParser:78 16749 Parsing h=localhost,t=HASH(0x1680a70)
# DSNParser:96 16749 Finding value for S
# DSNParser:106 16749 Copying value for S from defaults
# DSNParser:96 16749 Finding value for F
# DSNParser:106 16749 Copying value for F from defaults
# DSNParser:96 16749 Finding value for A
# DSNParser:106 16749 Copying value for A from defaults
# DSNParser:96 16749 Finding value for P
# DSNParser:106 16749 Copying value for P from defaults
# DSNParser:96 16749 Finding value for p
# DSNParser:106 16749 Copying value for p from defaults
# DSNParser:96 16749 Finding value for u
# DSNParser:106 16749 Copying value for u from defaults
# DSNParser:96 16749 Finding value for h
# DSNParser:96 16749 Finding value for D
# DSNParser:106 16749 Copying value for D from defaults
# DSNParser:96 16749 Finding value for t
# Cxn:1461 16749 DBI::db=HASH(0x1bc5098) Connected dbh to undef
# Cxn:1474 16749 DBI::db=HASH(0x1bc5098) Setting dbh
# Cxn:1479 16749 DBI::db=HASH(0x1bc5098) SELECT @@hostname, @@server_id
# Cxn:1481 16749 DBI::db=HASH(0x1bc5098) hostname: db03.ash 600200123
# MasterSlave:2559 16749 Looking for slaves on h=10.60.20.123,p=...,u=xxx using methods processlist hosts
# MasterSlave:2566 16749 Finding slaves with _find_slaves_by_processlist
# VersionParser:1677 16749 5.1.38-log parses to 005001038
# VersionParser:1677 16749 4.1.2 parses to 004001002
# VersionParser:1688 16749 005001038 ge 4.1.2 : 1
# MasterSlave:2633 16749 DBI::db=HASH(0x1bc5098) SHOW GRANTS FOR CURRENT_USER()
# MasterSlave:2663 16749 DBI::db=HASH(0x1bc5098) SHOW PROCESSLIST
# MasterSlave:2566 16749 Finding slaves with _find_slaves_by_hosts
# MasterSlave:2600 16749 DBI::db=HASH(0x1bc5098) SHOW SLAVE HOSTS
# MasterSlave:2571 16749 Found 0 slaves
# pt_table_checksum:6005 16749 5 slaves found
# pt_table_checksum:6016 16749 Will check slave lag on all slaves
# pt_table_checksum:6052 16749 Checking slave replication filters
# MasterSlave:2747 16749 DBI::db=HASH(0x1b01778) SHOW MASTER STATUS
# MasterSlave:2751 16749 binlog_do_db= position=658337460 file=mysql-bin.000310 binlog_ignore_db=
# MasterSlave:2723 16749 DBI::db=HASH(0x1b01778) SHOW SLAVE STATUS
# MasterSlave:3049 16749 DBI::db=HASH(0x1b01778) SHOW VARIABLES LIKE 'slave_skip_errors'
# MasterSlave:2747 16749 DBI::db=HASH(0x1afeaf0) SHOW MASTER STATUS
# MasterSlave:2751 16749 binlog_do_db= position=658604665 file=mysql-bin.000559 binlog_ignore_db=
# MasterSlave:2723 16749 DBI::db=HASH(0x1afeaf0) SHOW SLAVE STATUS
# MasterSlave:3049 16749 DBI::db=HASH(0x1afeaf0) SHOW VARIABLES LIKE 'slave_skip_errors'
# MasterSlave:2747 16749 DBI::db=HASH(0x1b5a710) SHOW MASTER STATUS
# MasterSlave:2751 16749 binlog_do_db= position=660104274 file=mysql-bin.000556 binlog_ignore_db=
# MasterSlave:2723 16749 DBI::db=HASH(0x1b5a710) SHOW SLAVE STATUS
# MasterSlave:3049 16749 DBI::db=HASH(0x1b5a710) SHOW VARIABLES LIKE 'slave_skip_errors'
# MasterSlave:2747 16749 DBI::db=HASH(0x1bbd870) SHOW MASTER STATUS
# MasterSlave:2751 16749 binlog_do_db= position=659049800 file=mysql-bin.000224 binlog_ignore_db=
# MasterSlave:2723 16749 DBI::db=HASH(0x1bbd870) SHOW SLAVE STATUS
# MasterSlave:3049 16749 DBI::db=HASH(0x1bbd870) SHOW VARIABLES LIKE 'slave_skip_errors'
# MasterSlave:2747 16749 DBI::db=HASH(0x1bc5098) SHOW MASTER STATUS
# MasterSlave:2751 16749 binlog_do_db= position=659571731 file=mysql-bin.000241 binlog_ignore_db=
# MasterSlave:2723 16749 DBI::db=HASH(0x1bc5098) SHOW SLAVE STATUS
# MasterSlave:3049 16749 DBI::db=HASH(0x1bc5098) SHOW VARIABLES LIKE 'slave_skip_errors'
# pt_table_checksum:6995 16749 Checking --replicate table `maatkit`.`checksum_monthly`
# pt_table_checksum:7000 16749 SHOW DATABASES LIKE 'maatkit'
# pt_table_checksum:7098 16749 use_repl_db
# pt_table_checksum:7119 16749 USE `maatkit`
# TableParser:1952 16749 Checking `maatkit`.`checksum_monthly`
# TableParser:1956 16749 SHOW TABLES FROM `maatkit` LIKE 'checksum\_monthly'
# TableParser:1970 16749 Table exists; no privs to check
# pt_table_checksum:7033 16749 --replicate table `maatkit`.`checksum_monthly` already exists
# TableParser:1952 16749 Checking `maatkit`.`checksum_monthly`
# TableParser:1956 16749 SHOW TABLES FROM `maatkit` LIKE 'checksum\_monthly'
# TableParser:1970 16749 Table exists; no privs to check
# TableParser:1974 16749 SHOW FULL COLUMNS FROM `maatkit`.`checksum_monthly`
# TableParser:1989 16749 DELETE FROM `maatkit`.`checksum_monthly` LIMIT 0
# TableParser:1995 16749 User privs on `maatkit`.`checksum_monthly` : select,insert,update,references delete
# TableParser:2004 16749 User has all privs
# MySQLStatusWaiter:5631 16749 Wait if Threads_running >= 25
# RowChecksum:3329 16749 SELECT CRC32('test-string')
# RowChecksum:3336 16749 Chosen hash func: undef
# RowChecksum:3376 16749 SELECT CRC32('a') bigint 10
# RowChecksum:3382 16749 crc_type: int length: 10
# SchemaIterator:4598 16749 Filter databases value: main_database
# SchemaIterator:4594 16749 Filter tables value: * ecm_recurrence
# SchemaIterator:4594 16749 Filter ignore-tables value: maatkit checksum_monthly
# SchemaIterator:4598 16749 Filter ignore-engines value: mrg_myisam
# SchemaIterator:4598 16749 Filter ignore-engines value: federated
# SchemaIterator:4618 16749 Schema object filters: $VAR1 = {
# databases => {
# main_database => 1
# },
# 'ignore-engines' => {
# federated => 1,
# mrg_myisam => 1
# },
# 'ignore-tables' => {
# checksum_monthly => 'maatkit'
# },
# tables => {
# ecm_recurrence => '*'
# }
# };
#
# SchemaIterator:4730 16749 Getting next schema object from dbh DBI::db=HASH(0x1b32d80)
# SchemaIterator:4734 16749 SHOW DATABASES
# SchemaIterator:4811 16749 Database information_schema is a system database, ignoring
# SchemaIterator:4828 16749 Database admin is not in --databases list, ignoring
# SchemaIterator:4828 16749 Database ecommerce is not in --databases list, ignoring
# SchemaIterator:4828 16749 Database maatkit is not in --databases list, ignoring
# SchemaIterator:4828 16749 Database mysql is not in --databases list, ignoring
# SchemaIterator:4828 16749 Database test is not in --databases list, ignoring
# SchemaIterator:4737 16749 Found 1 databases
# SchemaIterator:4745 16749 Next database: main_database
# SchemaIterator:4751 16749 SHOW /*!50002 FULL*/ TABLES FROM `main_database`
####
#### < snip ... Removed the table names listed in our database > ####
####
# SchemaIterator:4762 16749 Found 1 tables in database main_database
# SchemaIterator:4774 16749 SHOW TABLE STATUS FROM `main_database` LIKE 'ecm_recurrence'
# SchemaIterator:4776 16749 $VAR1 = {
# auto_increment => '4392796',
# avg_row_length => '123',
# check_time => undef,
# checksum => undef,
# collation => 'utf8_general_ci',
# comment => '',
# create_options => '',
# create_time => '2011-03-29 21:51:33',
# data_free => '6291456',
# data_length => '551501824',
# engine => 'InnoDB',
# index_length => '754335744',
# max_data_length => '0',
# name => 'ecm_recurrence',
# row_format => 'Compact',
# rows => '4450661',
# update_time => undef,
# version => '10'
# };
#
# TableParser:1778 16749 /*!40101 SET @OLD_SQL_MODE := @@SQL_MODE, @@SQL_MODE := REPLACE(REPLACE(@@SQL_MODE, 'ANSI_QUOTES', ''), ',,', ','), @OLD_QUOTE := @@SQL_QUOTE_SHOW_CREATE, @@SQL_QUOTE_SHOW_CREATE := 1 */
# TableParser:1783 16749 DBI::db=HASH(0x1b32d80) USE `main_database`
# TableParser:1787 16749 SHOW CREATE TABLE `main_database`.`ecm_recurrence`
# TableParser:1797 16749 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */
# TableParser:1802 16749 This table is a base table
# TableParser:2011 16749 Storage engine: InnoDB
# TableParser:1832 16749 Table cols: `rowid`, `recurtypeid`, `status`, `attempts`, `hold`, `amount`, `tax`, `taxtype`, `currencyid`, `paidfromdate`, `paidtodate`, `nextattemptdate`, `abandondate`, `lastpaymentdate`, `vendorchannel`, `dateadded`, `datemodified`
# TableParser:2011 16749 Storage engine: InnoDB
# TableParser:2027 16749 Parsed key: PRIMARY KEY (`rowid`),
# TableParser:2053 16749 PRIMARY key cols: `rowid`
# TableParser:2075 16749 This key is the clustered key
# TableParser:2027 16749 Parsed key: KEY `nextattemptdate` (`nextattemptdate`),
# TableParser:2053 16749 nextattemptdate key cols: `nextattemptdate`
# TableParser:2027 16749 Parsed key: KEY `paidtodate` (`paidtodate`),
# TableParser:2053 16749 paidtodate key cols: `paidtodate`
# TableParser:2027 16749 Parsed key: KEY `abandondate` (`abandondate`),
# TableParser:2053 16749 abandondate key cols: `abandondate`
# TableParser:2027 16749 Parsed key: KEY `dateadded` (`dateadded`),
# TableParser:2053 16749 dateadded key cols: `dateadded`
# TableParser:2027 16749 Parsed key: KEY `status` (`status`),
# TableParser:2053 16749 status key cols: `status`
# TableParser:2027 16749 Parsed key: KEY `fk_recurrence_currency` (`currencyid`),
# TableParser:2053 16749 fk_recurrence_currency key cols: `currencyid`
# TableParser:2027 16749 Parsed key: KEY `fk_recurrence_type` (`recurtypeid`),
# TableParser:2053 16749 fk_recurrence_type key cols: `recurtypeid`
# SchemaIterator:4655 16749 Next schema object: main_database ecm_recurrence
# RowChecksum:3224 16749 Checksum strat: $VAR1 = {
# crc_type => 'int',
# crc_width => 16,
# func => 'CRC32',
# opt_slice => undef
# };
#
# RowChecksum:3206 16749 Row checksum: CRC32(CONCAT_WS('#', `rowid`, `recurtypeid`, `status`, `attempts`, `hold`, `amount`, `tax`, `taxtype`, `currencyid`, `paidfromdate`, `paidtodate`, `nextattemptdate`, `abandondate`, `lastpaymentdate`, `vendorchannel`, `dateadded`, `datemodified` + 0, CONCAT(ISNULL(`lastpaymentdate`), ISNULL(`vendorchannel`))))
# RowChecksum:3245 16749 Chunk checksum: COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `rowid`, `recurtypeid`, `status`, `attempts`, `hold`, `amount`, `tax`, `taxtype`, `currencyid`, `paidfromdate`, `paidtodate`, `nextattemptdate`, `abandondate`, `lastpaymentdate`, `vendorchannel`, `dateadded`, `datemodified` + 0, CONCAT(ISNULL(`lastpaymentdate`), ISNULL(`vendorchannel`)))) AS UNSIGNED)), 10, 16)), 0) AS crc
# NibbleIterator:3946 16749 WHERE clause, using explain plan for row estimate
# NibbleIterator:3949 16749 EXPLAIN SELECT * FROM `main_database`.`ecm_recurrence` WHERE dateAdded > '2012-01-25 08:25:00'
# NibbleIterator:3951 16749 $VAR1 = {
# extra => 'Using where',
# id => '1',
# key => 'dateAdded',
# key_len => '8',
# possible_keys => 'dateAdded',
# ref => undef,
# rows => '96',
# select_type => 'SIMPLE',
# table => 'ecm_recurrence',
# type => 'range'
# };
#
# NibbleIterator:3534 16749 One nibble: yes
# NibbleIterator:3869 16749 MySQL wants to use index dateAdded
# NibbleIterator:3881 16749 Wanted index is a possible index
# NibbleIterator:3899 16749 No PRIMARY or unique indexes; will use index with highest cardinality
# NibbleIterator:3930 16749 SHOW INDEXES FROM `main_database`.`ecm_recurrence` WHERE Key_name = 'dateAdded'
# NibbleIterator:3936 16749 Index dateAdded cardinality: 4450661
# NibbleIterator:3919 16749 Best index: dateAdded
# NibbleIterator:3561 16749 One nibble statement: REPLACE INTO `maatkit`.`checksum_monthly` (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('#', `rowid`, `recurtypeid`, `status`, `attempts`, `hold`, `amount`, `tax`, `taxtype`, `currencyid`, `paidfromdate`, `paidtodate`, `nextattemptdate`, `abandondate`, `lastpaymentdate`, `vendorchannel`, `dateadded`, `datemodified` + 0, CONCAT(ISNULL(`lastpaymentdate`), ISNULL(`vendorchannel`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `main_database`.`ecm_recurrence` WHERE dateAdded > '2012-01-25 08:25:00' /*checksum table*/
# NibbleIterator:3570 16749 Explain one nibble statement: EXPLAIN SELECT COUNT(*) AS cnt, COALESCE(LOWER(CONV(BIT_XOR(CAST(CRC32(CONCAT_WS('#', `rowid`, `recurtypeid`, `status`, `attempts`, `hold`, `amount`, `tax`, `taxtype`, `currencyid`, `paidfromdate`, `paidtodate`, `nextattemptdate`, `abandondate`, `lastpaymentdate`, `vendorchannel`, `dateadded`, `datemodified` + 0, CONCAT(ISNULL(`lastpaymentdate`), ISNULL(`vendorchannel`)))) AS UNSIGNED)), 10, 16)), 0) AS crc FROM `main_database`.`ecm_recurrence` WHERE dateAdded > '2012-01-25 08:25:00' /*explain checksum table*/
# OobNibbleIterator:4251 16749 Preparing out-of-bound statement handles
# NibbleIterator:3962 16749 Preparing statement handles
# pt_table_checksum:6293 16749 Getting table row estimate on replicas
# NibbleIterator:3946 16749 WHERE clause, using explain plan for row estimate
# NibbleIterator:3949 16749 EXPLAIN SELECT * FROM `main_database`.`ecm_recurrence` WHERE 1=1
# NibbleIterator:3951 16749 $VAR1 = {
# extra => '',
# id => '1',
# key => undef,
# key_len => undef,
# possible_keys => undef,
# ref => undef,
# rows => '4429566',
# select_type => 'SIMPLE',
# table => 'ecm_recurrence',
# type => 'ALL'
# };
#
# pt_table_checksum:6305 16749 Table on db06.ash has 4429566 rows
# pt_table_checksum:6310 16749 Table too large on db06.ash
# NibbleIterator:3946 16749 WHERE clause, using explain plan for row estimate
# NibbleIterator:3949 16749 EXPLAIN SELECT * FROM `main_database`.`ecm_recurrence` WHERE 1=1
# NibbleIterator:3951 16749 $VAR1 = {
# extra => '',
# id => '1',
# key => undef,
# key_len => undef,
# possible_keys => undef,
# ref => undef,
# rows => '4419216',
# select_type => 'SIMPLE',
# table => 'ecm_recurrence',
# type => 'ALL'
# };
#
# pt_table_checksum:6305 16749 Table on db05.ash has 4419216 rows
# pt_table_checksum:6310 16749 Table too large on db05.ash
# NibbleIterator:3946 16749 WHERE clause, using explain plan for row estimate
# NibbleIterator:3949 16749 EXPLAIN SELECT * FROM `main_database`.`ecm_recurrence` WHERE 1=1
# NibbleIterator:3951 16749 $VAR1 = {
# extra => '',
# id => '1',
# key => undef,
# key_len => undef,
# possible_keys => undef,
# ref => undef,
# rows => '4420826',
# select_type => 'SIMPLE',
# table => 'ecm_recurrence',
# type => 'ALL'
# };
#
# pt_table_checksum:6305 16749 Table on db02.ash has 4420826 rows
# pt_table_checksum:6310 16749 Table too large on db02.ash
# NibbleIterator:3946 16749 WHERE clause, using explain plan for row estimate
# NibbleIterator:3949 16749 EXPLAIN SELECT * FROM `main_database`.`ecm_recurrence` WHERE 1=1
# NibbleIterator:3951 16749 $VAR1 = {
# extra => '',
# id => '1',
# key => undef,
# key_len => undef,
# possible_keys => undef,
# ref => undef,
# rows => '4416618',
# select_type => 'SIMPLE',
# table => 'ecm_recurrence',
# type => 'ALL'
# };
#
# pt_table_checksum:6305 16749 Table on db04.ash has 4416618 rows
# pt_table_checksum:6310 16749 Table too large on db04.ash
# NibbleIterator:3946 16749 WHERE clause, using explain plan for row estimate
# NibbleIterator:3949 16749 EXPLAIN SELECT * FROM `main_database`.`ecm_recurrence` WHERE 1=1
# NibbleIterator:3951 16749 $VAR1 = {
# extra => '',
# id => '1',
# key => undef,
# key_len => undef,
# possible_keys => undef,
# ref => undef,
# rows => '4427636',
# select_type => 'SIMPLE',
# table => 'ecm_recurrence',
# type => 'ALL'
# };
#
# pt_table_checksum:6305 16749 Table on db03.ash has 4427636 rows
# pt_table_checksum:6310 16749 Table too large on db03.ash
01-25T09:00:44 Skipping table main_database.ecm_recurrence because on the master it would be checksummed in one chunk but on these replicas it has too many rows:
  4429566 rows on db06.ash
  4419216 rows on db05.ash
  4420826 rows on db02.ash
  4416618 rows on db04.ash
  4427636 rows on db03.ash
The current chunk size limit is 400000 rows (chunk size=40000 * chunk size limit=10).
# pt_table_checksum:7098 16749 use_repl_db
# pt_table_checksum:7119 16749 USE `main_database`
# NibbleIterator:3717 16749 init callback returned 0
# OobNibbleIterator:4300 16749 Finish nibble_sth
# OobNibbleIterator:4300 16749 Finish explain_nibble_sth
# SchemaIterator:4730 16749 Getting next schema object from dbh DBI::db=HASH(0x1b32d80)
# SchemaIterator:4795 16749 No more tables in database main_database
# SchemaIterator:4730 16749 Getting next schema object from dbh DBI::db=HASH(0x1b32d80)
# SchemaIterator:4745 16749 Next database: undef
# pt_table_checksum:6756 16749 Exit status 1 oktorun 1
# Cxn:1514 16749 Disconnecting dbh DBI::db=HASH(0x1bc5098) undef
# Cxn:1514 16749 Disconnecting dbh DBI::db=HASH(0x1bbd870) undef
# Cxn:1514 16749 Disconnecting dbh DBI::db=HASH(0x1b5a710) undef
# Cxn:1514 16749 Disconnecting dbh DBI::db=HASH(0x1afeaf0) undef
# Cxn:1514 16749 Disconnecting dbh DBI::db=HASH(0x1b01778) undef
# Cxn:1514 16749 Disconnecting dbh DBI::db=HASH(0x1b32d80) undef

Revision history for this message
Baron Schwartz (baron-xaprb) said :
#3

This is definitely a bug. I've filed bug 921700 about this.

Revision history for this message
Baron Schwartz (baron-xaprb) said :
#4