# /usr/bin/perl 5.008008 # Linux server 2.6.18-274.17.1.el5 #1 SMP Tue Jan 10 17:25:58 EST 2012 x86_64 x86_64 x86_64 GNU/Linux # Arguments: _[--execute]_ _[h=localhost,P=3306,u=test,p=test,D=db1,t=table1]_ _[D=db2]_ # OptionParser:190 7807 Option rule: Specify at least one of --print, --execute, or --dry-run. # OptionParser:190 7807 Option rule: --where and --replicate are mutually exclusive. # OptionParser:190 7807 Option rule: This tool accepts additional command-line arguments. Refer to the SYNOPSIS and usage information for details. # OptionParser:199 7807 =item --algorithms # OptionParser:226 7807 Short help: Algorithm to use when comparing the tables, in order of preference # OptionParser:199 7807 =item --ask-pass # OptionParser:218 7807 Option has no attributes # OptionParser:226 7807 Short help: Prompt for a password when connecting to MySQL # OptionParser:199 7807 =item --bidirectional # OptionParser:218 7807 Option has no attributes # OptionParser:226 7807 Short help: Enable bidirectional sync between first and subsequent hosts # OptionParser:199 7807 =item --[no]bin-log # OptionParser:226 7807 Short help: Log to the binary log (SET SQL_LOG_BIN=1) # OptionParser:199 7807 =item --buffer-in-mysql # OptionParser:218 7807 Option has no attributes # OptionParser:226 7807 Short help: Instruct MySQL to buffer queries in its memory # OptionParser:199 7807 =item --[no]buffer-to-client # OptionParser:226 7807 Short help: Fetch rows one-by-one from MySQL while comparing # OptionParser:199 7807 =item --charset # OptionParser:226 7807 Short help: Default character set # OptionParser:199 7807 =item --[no]check-master # OptionParser:226 7807 Short help: With --sync-to-master, try to verify that the detected master is the real master # OptionParser:199 7807 =item --[no]check-privileges # OptionParser:226 7807 Short help: Check that user has all necessary privileges on source and destination table # OptionParser:199 7807 =item --[no]check-slave # OptionParser:226 7807 Short help: Check whether the destination server is a slave # OptionParser:199 7807 =item --[no]check-triggers # OptionParser:226 7807 Short help: Check that no triggers are defined on the destination table # OptionParser:199 7807 =item --chunk-column # OptionParser:226 7807 Short help: Chunk the table on this column # OptionParser:199 7807 =item --chunk-index # OptionParser:226 7807 Short help: Chunk the table using this index # OptionParser:199 7807 =item --chunk-size # OptionParser:226 7807 Short help: Number of rows or data size per chunk # OptionParser:199 7807 =item --columns # OptionParser:226 7807 Short help: Compare this comma-separated list of columns # OptionParser:199 7807 =item --config # OptionParser:226 7807 Short help: Read this comma-separated list of config files; if specified, this must be the first option on the command line # OptionParser:199 7807 =item --conflict-column # OptionParser:226 7807 Short help: Compare this column when rows conflict during a --bidirectional sync # OptionParser:199 7807 =item --conflict-comparison # OptionParser:226 7807 Short help: Choose the --conflict-column with this property as the source # OptionParser:199 7807 =item --conflict-error # OptionParser:226 7807 Short help: How to report unresolvable conflicts and conflict errors # OptionParser:199 7807 =item --conflict-threshold # OptionParser:226 7807 Short help: Amount by which one --conflict-column must exceed the other # OptionParser:199 7807 =item --conflict-value # OptionParser:226 7807 Short help: Use this value for certain --conflict-comparison # OptionParser:199 7807 =item --databases # OptionParser:226 7807 Short help: Sync only this comma-separated list of databases # OptionParser:199 7807 =item --defaults-file # OptionParser:226 7807 Short help: Only read mysql options from the given file # OptionParser:199 7807 =item --dry-run # OptionParser:218 7807 Option has no attributes # OptionParser:226 7807 Short help: Analyze, decide the sync algorithm to use, print and exit # OptionParser:199 7807 =item --engines # OptionParser:226 7807 Short help: Sync only this comma-separated list of storage engines # OptionParser:199 7807 =item --execute # OptionParser:218 7807 Option has no attributes # OptionParser:226 7807 Short help: Execute queries to make the tables have identical data # OptionParser:199 7807 =item --explain-hosts # OptionParser:218 7807 Option has no attributes # OptionParser:226 7807 Short help: Print connection information and exit # OptionParser:199 7807 =item --float-precision # OptionParser:226 7807 Short help: Precision for FLOAT and DOUBLE number-to-string conversion # OptionParser:199 7807 =item --[no]foreign-key-checks # OptionParser:226 7807 Short help: Enable foreign key checks (SET FOREIGN_KEY_CHECKS=1) # OptionParser:199 7807 =item --function # OptionParser:226 7807 Short help: Which hash function you'd like to use for checksums # OptionParser:199 7807 =item --help # OptionParser:218 7807 Option has no attributes # OptionParser:226 7807 Short help: Show help and exit # OptionParser:199 7807 =item --[no]hex-blob # OptionParser:226 7807 Short help: HEX() BLOB, TEXT and BINARY columns # OptionParser:199 7807 =item --host # OptionParser:226 7807 Short help: Connect to host # OptionParser:199 7807 =item --ignore-columns # OptionParser:226 7807 Short help: Ignore this comma-separated list of column names in comparisons # OptionParser:199 7807 =item --ignore-databases # OptionParser:226 7807 Short help: Ignore this comma-separated list of databases # OptionParser:199 7807 =item --ignore-engines # OptionParser:226 7807 Short help: Ignore this comma-separated list of storage engines # OptionParser:199 7807 =item --ignore-tables # OptionParser:226 7807 Short help: Ignore this comma-separated list of tables # OptionParser:199 7807 =item --[no]index-hint # OptionParser:226 7807 Short help: Add FORCE/USE INDEX hints to the chunk and row queries # OptionParser:199 7807 =item --lock # OptionParser:226 7807 Short help: Lock tables: 0=none, 1=per sync cycle, 2=per table, or 3=globally # OptionParser:199 7807 =item --lock-and-rename # OptionParser:218 7807 Option has no attributes # OptionParser:226 7807 Short help: Lock the source and destination table, sync, then swap names # OptionParser:199 7807 =item --password # OptionParser:226 7807 Short help: Password to use when connecting # OptionParser:199 7807 =item --pid # OptionParser:226 7807 Short help: Create the given PID file # OptionParser:199 7807 =item --port # OptionParser:226 7807 Short help: Port number to use for connection # OptionParser:199 7807 =item --print # OptionParser:218 7807 Option has no attributes # OptionParser:226 7807 Short help: Print queries that will resolve differences # OptionParser:199 7807 =item --recursion-method # OptionParser:226 7807 Short help: Preferred recursion method used to find slaves # OptionParser:199 7807 =item --replace # OptionParser:218 7807 Option has no attributes # OptionParser:226 7807 Short help: Write all INSERT and UPDATE statements as REPLACE # OptionParser:199 7807 =item --replicate # OptionParser:226 7807 Short help: Sync tables listed as different in this table # OptionParser:199 7807 =item --set-vars # OptionParser:226 7807 Short help: Set these MySQL variables # OptionParser:199 7807 =item --socket # OptionParser:226 7807 Short help: Socket file to use for connection # OptionParser:199 7807 =item --sync-to-master # OptionParser:218 7807 Option has no attributes # OptionParser:226 7807 Short help: Treat the DSN as a slave and sync it to its master # OptionParser:199 7807 =item --tables # OptionParser:226 7807 Short help: Sync only this comma-separated list of tables # OptionParser:199 7807 =item --timeout-ok # OptionParser:218 7807 Option has no attributes # OptionParser:226 7807 Short help: Keep going if --wait fails # OptionParser:199 7807 =item --[no]transaction # OptionParser:218 7807 Option has no attributes # OptionParser:226 7807 Short help: Use transactions instead of LOCK TABLES # OptionParser:199 7807 =item --trim # OptionParser:218 7807 Option has no attributes # OptionParser:226 7807 Short help: TRIM() VARCHAR columns in BIT_XOR and ACCUM modes # OptionParser:199 7807 =item --[no]unique-checks # OptionParser:226 7807 Short help: Enable unique key checks (SET UNIQUE_CHECKS=1) # OptionParser:199 7807 =item --user # OptionParser:226 7807 Short help: User for login if not current user # OptionParser:199 7807 =item --verbose # OptionParser:226 7807 Short help: Print results of sync operations # OptionParser:199 7807 =item --version # OptionParser:218 7807 Option has no attributes # OptionParser:226 7807 Short help: Show version and exit # OptionParser:199 7807 =item --wait # OptionParser:226 7807 Short help: How long to wait for slaves to catch up to their master # OptionParser:199 7807 =item --where # OptionParser:226 7807 Short help: WHERE clause to restrict syncing to part of the table # OptionParser:199 7807 =item --[no]zero-chunk # OptionParser:226 7807 Short help: Add a chunk for rows with zero or zero-equivalent values # OptionParser:265 7807 Parsing opt spec: group => default spec => algorithms=s desc => Algorithm to use when comparing the tables, in order of preference (default Chunk,Nibble,GroupBy,Stream) # OptionParser:303 7807 algorithms type: s # OptionParser:310 7807 algorithms default: Chunk,Nibble,GroupBy,Stream # OptionParser:265 7807 Parsing opt spec: group => default spec => ask-pass desc => Prompt for a password when connecting to MySQL # OptionParser:303 7807 ask-pass type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => bidirectional desc => Enable bidirectional sync between first and subsequent hosts # OptionParser:303 7807 bidirectional type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => bin-log! desc => Log to the binary log (SET SQL_LOG_BIN=1) (default yes) # OptionParser:303 7807 bin-log type: undef # OptionParser:310 7807 bin-log default: yes # OptionParser:265 7807 Parsing opt spec: group => default spec => buffer-in-mysql desc => Instruct MySQL to buffer queries in its memory # OptionParser:303 7807 buffer-in-mysql type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => buffer-to-client! desc => Fetch rows one-by-one from MySQL while comparing (default yes) # OptionParser:303 7807 buffer-to-client type: undef # OptionParser:310 7807 buffer-to-client default: yes # OptionParser:265 7807 Parsing opt spec: group => default spec => charset|A=s desc => Default character set # OptionParser:303 7807 charset type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => check-master! desc => With --sync-to-master, try to verify that the detected master is the real master (default yes) # OptionParser:303 7807 check-master type: undef # OptionParser:310 7807 check-master default: yes # OptionParser:265 7807 Parsing opt spec: group => default spec => check-privileges! desc => Check that user has all necessary privileges on source and destination table (default yes) # OptionParser:303 7807 check-privileges type: undef # OptionParser:310 7807 check-privileges default: yes # OptionParser:265 7807 Parsing opt spec: group => default spec => check-slave! desc => Check whether the destination server is a slave (default yes) # OptionParser:303 7807 check-slave type: undef # OptionParser:310 7807 check-slave default: yes # OptionParser:265 7807 Parsing opt spec: group => default spec => check-triggers! desc => Check that no triggers are defined on the destination table (default yes) # OptionParser:303 7807 check-triggers type: undef # OptionParser:310 7807 check-triggers default: yes # OptionParser:265 7807 Parsing opt spec: group => default spec => chunk-column=s desc => Chunk the table on this column # OptionParser:303 7807 chunk-column type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => chunk-index=s desc => Chunk the table using this index # OptionParser:303 7807 chunk-index type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => chunk-size=s desc => Number of rows or data size per chunk (default 1000) # OptionParser:303 7807 chunk-size type: s # OptionParser:310 7807 chunk-size default: 1000 # OptionParser:265 7807 Parsing opt spec: group => default spec => columns|c=a desc => Compare this comma-separated list of columns # OptionParser:303 7807 columns type: a # OptionParser:265 7807 Parsing opt spec: group => default 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:303 7807 config type: A # OptionParser:265 7807 Parsing opt spec: group => default spec => conflict-column=s desc => Compare this column when rows conflict during a --bidirectional sync # OptionParser:303 7807 conflict-column type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => conflict-comparison=s desc => Choose the --conflict-column with this property as the source # OptionParser:303 7807 conflict-comparison type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => conflict-error=s desc => How to report unresolvable conflicts and conflict errors (default warn) # OptionParser:303 7807 conflict-error type: s # OptionParser:310 7807 conflict-error default: warn # OptionParser:265 7807 Parsing opt spec: group => default spec => conflict-threshold=s desc => Amount by which one --conflict-column must exceed the other # OptionParser:303 7807 conflict-threshold type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => conflict-value=s desc => Use this value for certain --conflict-comparison # OptionParser:303 7807 conflict-value type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => databases|d=h desc => Sync only this comma-separated list of databases # OptionParser:303 7807 databases type: h # OptionParser:265 7807 Parsing opt spec: group => default spec => defaults-file|F=s desc => Only read mysql options from the given file # OptionParser:303 7807 defaults-file type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => dry-run desc => Analyze, decide the sync algorithm to use, print and exit # OptionParser:303 7807 dry-run type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => engines|e=h desc => Sync only this comma-separated list of storage engines # OptionParser:303 7807 engines type: h # OptionParser:265 7807 Parsing opt spec: group => default spec => execute desc => Execute queries to make the tables have identical data # OptionParser:303 7807 execute type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => explain-hosts desc => Print connection information and exit # OptionParser:303 7807 explain-hosts type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => float-precision=i desc => Precision for FLOAT and DOUBLE number-to-string conversion # OptionParser:303 7807 float-precision type: i # OptionParser:265 7807 Parsing opt spec: group => default spec => foreign-key-checks! desc => Enable foreign key checks (SET FOREIGN_KEY_CHECKS=1) (default yes) # OptionParser:303 7807 foreign-key-checks type: undef # OptionParser:310 7807 foreign-key-checks default: yes # OptionParser:265 7807 Parsing opt spec: group => default spec => function=s desc => Which hash function you'd like to use for checksums # OptionParser:303 7807 function type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => help desc => Show help and exit # OptionParser:303 7807 help type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => hex-blob! desc => HEX() BLOB, TEXT and BINARY columns (default yes) # OptionParser:303 7807 hex-blob type: undef # OptionParser:310 7807 hex-blob default: yes # OptionParser:265 7807 Parsing opt spec: group => default spec => host|h=s desc => Connect to host # OptionParser:303 7807 host type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => ignore-columns=H desc => Ignore this comma-separated list of column names in comparisons # OptionParser:303 7807 ignore-columns type: H # OptionParser:265 7807 Parsing opt spec: group => default spec => ignore-databases=H desc => Ignore this comma-separated list of databases # OptionParser:303 7807 ignore-databases type: H # OptionParser:265 7807 Parsing opt spec: group => default spec => ignore-engines=H desc => Ignore this comma-separated list of storage engines (default FEDERATED,MRG_MyISAM) # OptionParser:303 7807 ignore-engines type: H # OptionParser:310 7807 ignore-engines default: FEDERATED,MRG_MyISAM # OptionParser:265 7807 Parsing opt spec: group => default spec => ignore-tables=H desc => Ignore this comma-separated list of tables # OptionParser:303 7807 ignore-tables type: H # OptionParser:265 7807 Parsing opt spec: group => default spec => index-hint! desc => Add FORCE/USE INDEX hints to the chunk and row queries (default yes) # OptionParser:303 7807 index-hint type: undef # OptionParser:310 7807 index-hint default: yes # OptionParser:265 7807 Parsing opt spec: group => default spec => lock=i desc => Lock tables: 0=none, 1=per sync cycle, 2=per table, or 3=globally # OptionParser:303 7807 lock type: i # OptionParser:265 7807 Parsing opt spec: group => default spec => lock-and-rename desc => Lock the source and destination table, sync, then swap names # OptionParser:303 7807 lock-and-rename type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => password|p=s desc => Password to use when connecting # OptionParser:303 7807 password type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => pid=s desc => Create the given PID file # OptionParser:303 7807 pid type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => port|P=i desc => Port number to use for connection # OptionParser:303 7807 port type: i # OptionParser:265 7807 Parsing opt spec: group => default spec => print desc => Print queries that will resolve differences # OptionParser:303 7807 print type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => recursion-method=s desc => Preferred recursion method used to find slaves # OptionParser:303 7807 recursion-method type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => replace desc => Write all INSERT and UPDATE statements as REPLACE # OptionParser:303 7807 replace type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => replicate=s desc => Sync tables listed as different in this table # OptionParser:303 7807 replicate type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => set-vars=s desc => Set these MySQL variables (default wait_timeout=10000) # OptionParser:303 7807 set-vars type: s # OptionParser:310 7807 set-vars default: wait_timeout=10000 # OptionParser:265 7807 Parsing opt spec: group => default spec => socket|S=s desc => Socket file to use for connection # OptionParser:303 7807 socket type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => sync-to-master desc => Treat the DSN as a slave and sync it to its master # OptionParser:303 7807 sync-to-master type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => tables|t=h desc => Sync only this comma-separated list of tables # OptionParser:303 7807 tables type: h # OptionParser:265 7807 Parsing opt spec: group => default spec => timeout-ok desc => Keep going if --wait fails # OptionParser:303 7807 timeout-ok type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => transaction! desc => Use transactions instead of LOCK TABLES # OptionParser:303 7807 transaction type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => trim desc => TRIM() VARCHAR columns in BIT_XOR and ACCUM modes # OptionParser:303 7807 trim type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => unique-checks! desc => Enable unique key checks (SET UNIQUE_CHECKS=1) (default yes) # OptionParser:303 7807 unique-checks type: undef # OptionParser:310 7807 unique-checks default: yes # OptionParser:265 7807 Parsing opt spec: group => default spec => user|u=s desc => User for login if not current user # OptionParser:303 7807 user type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => verbose|v+ desc => Print results of sync operations # OptionParser:303 7807 verbose type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => version desc => Show version and exit # OptionParser:303 7807 version type: undef # OptionParser:265 7807 Parsing opt spec: group => default spec => wait|w=m desc => How long to wait for slaves to catch up to their master # OptionParser:303 7807 wait type: m # OptionParser:265 7807 Parsing opt spec: group => default spec => where=s desc => WHERE clause to restrict syncing to part of the table # OptionParser:303 7807 where type: s # OptionParser:265 7807 Parsing opt spec: group => default spec => zero-chunk! desc => Add a chunk for rows with zero or zero-equivalent values (default yes) # OptionParser:303 7807 zero-chunk type: undef # OptionParser:310 7807 zero-chunk default: yes # OptionParser:325 7807 Parsing rule: Specify at least one of --print, --execute, or --dry-run. # OptionParser:381 7807 Participants for Specify at least one of --print, --execute, or --dry-run. : print execute dry-run # OptionParser:338 7807 print execute dry-run require at least one # OptionParser:325 7807 Parsing rule: --where and --replicate are mutually exclusive. # OptionParser:381 7807 Participants for --where and --replicate are mutually exclusive. : where replicate # OptionParser:333 7807 where replicate are mutually exclusive # OptionParser:325 7807 Parsing rule: This tool accepts additional command-line arguments. Refer to the SYNOPSIS and usage information for details. # OptionParser:381 7807 Participants for This tool accepts additional command-line arguments. Refer to the SYNOPSIS and usage information for details. : # OptionParser:357 7807 Strict mode disabled by rule # OptionParser:109 7807 Parsing DSN OPTIONS # OptionParser:199 7807 =item * A # OptionParser:226 7807 Short help: Default character set # OptionParser:199 7807 =item * D # OptionParser:226 7807 Short help: Database containing the table to be synced # OptionParser:199 7807 =item * F # OptionParser:226 7807 Short help: Only read default options from the given file # OptionParser:199 7807 =item * h # OptionParser:226 7807 Short help: Connect to host # OptionParser:199 7807 =item * p # OptionParser:226 7807 Short help: Password to use when connecting # OptionParser:199 7807 =item * P # OptionParser:226 7807 Short help: Port number to use for connection # OptionParser:199 7807 =item * S # OptionParser:226 7807 Short help: Socket file to use for connection # OptionParser:199 7807 =item * t # OptionParser:226 7807 Short help: Table to be synced # OptionParser:199 7807 =item * u # OptionParser:226 7807 Short help: User for login if not current user # DSNParser:1196 7807 DSN option: copy=1, dsn=charset, desc=Default character set, key=A # DSNParser:1196 7807 DSN option: copy=1, dsn=database, desc=Database containing the table to be synced, key=D # DSNParser:1196 7807 DSN option: copy=1, dsn=mysql_read_default_file, desc=Only read default options from the given file, key=F # DSNParser:1196 7807 DSN option: copy=1, dsn=host, desc=Connect to host, key=h # DSNParser:1196 7807 DSN option: copy=1, dsn=password, desc=Password to use when connecting, key=p # DSNParser:1196 7807 DSN option: copy=1, dsn=port, desc=Port number to use for connection, key=P # DSNParser:1196 7807 DSN option: copy=1, dsn=mysql_socket, desc=Socket file to use for connection, key=S # DSNParser:1196 7807 DSN option: copy=1, dsn=undef, desc=Table to be synced, key=t # DSNParser:1196 7807 DSN option: copy=1, dsn=user, desc=User for login if not current user, key=u # OptionParser:153 7807 pt-table-sync 2.1.2 # OptionParser:465 7807 Cannot open /etc/percona-toolkit/percona-toolkit.conf: No such file or directory # # OptionParser:465 7807 Cannot open /etc/percona-toolkit/pt-table-sync.conf: No such file or directory # # OptionParser:465 7807 Cannot open /home/ryan/.percona-toolkit.conf: No such file or directory # # OptionParser:465 7807 Cannot open /home/ryan/.pt-table-sync.conf: No such file or directory # # OptionParser:433 7807 Got option execute = 1 # OptionParser:653 7807 Nothing to validate for option chunk-size type s value 1000 # OptionParser:653 7807 Nothing to validate for option recursion-method type s value undef # OptionParser:653 7807 Nothing to validate for option lock type i value undef # OptionParser:653 7807 Nothing to validate for option conflict-value type s value undef # OptionParser:653 7807 Nothing to validate for option conflict-error type s value warn # OptionParser:653 7807 Nothing to validate for option chunk-index type s value undef # OptionParser:653 7807 Nothing to validate for option tables type h value undef # OptionParser:653 7807 Nothing to validate for option password type s value undef # OptionParser:653 7807 Nothing to validate for option pid type s value undef # OptionParser:653 7807 Nothing to validate for option replicate type s value undef # OptionParser:653 7807 Nothing to validate for option float-precision type i value undef # OptionParser:653 7807 Nothing to validate for option user type s value undef # OptionParser:653 7807 Nothing to validate for option conflict-column type s value undef # OptionParser:653 7807 Nothing to validate for option conflict-threshold type s value undef # OptionParser:653 7807 Nothing to validate for option charset type s value undef # OptionParser:653 7807 Nothing to validate for option set-vars type s value wait_timeout=10000 # OptionParser:653 7807 Nothing to validate for option port type i value undef # OptionParser:653 7807 Nothing to validate for option socket type s value undef # OptionParser:653 7807 Nothing to validate for option columns type a value undef # OptionParser:653 7807 Nothing to validate for option engines type h value undef # OptionParser:653 7807 Nothing to validate for option algorithms type s value Chunk,Nibble,GroupBy,Stream # OptionParser:653 7807 Nothing to validate for option function type s value undef # OptionParser:653 7807 Nothing to validate for option chunk-column type s value undef # OptionParser:653 7807 Nothing to validate for option databases type h value undef # OptionParser:653 7807 Nothing to validate for option where type s value undef # OptionParser:653 7807 Nothing to validate for option host type s value undef # OptionParser:653 7807 Nothing to validate for option defaults-file type s value undef # OptionParser:653 7807 Nothing to validate for option wait type m value undef # OptionParser:653 7807 Nothing to validate for option conflict-comparison type s value undef # DSNParser:1212 7807 Setting set-vars property # DSNParser:1284 7807 DSN string made from options: # DSNParser:1221 7807 No DSN to parse # DSNParser:1224 7807 Parsing h=localhost,P=3306,u=test,p=test,D=db1,t=table1 # DSNParser:1243 7807 Finding value for S # DSNParser:1253 7807 Copying value for S from defaults # DSNParser:1243 7807 Finding value for F # DSNParser:1253 7807 Copying value for F from defaults # DSNParser:1243 7807 Finding value for A # DSNParser:1253 7807 Copying value for A from defaults # DSNParser:1243 7807 Finding value for P # DSNParser:1243 7807 Finding value for p # DSNParser:1243 7807 Finding value for u # DSNParser:1243 7807 Finding value for h # DSNParser:1243 7807 Finding value for D # DSNParser:1243 7807 Finding value for t # DSNParser:1224 7807 Parsing D=db2 # DSNParser:1243 7807 Finding value for S # DSNParser:1253 7807 Copying value for S from defaults # DSNParser:1243 7807 Finding value for F # DSNParser:1253 7807 Copying value for F from defaults # DSNParser:1243 7807 Finding value for A # DSNParser:1253 7807 Copying value for A from defaults # DSNParser:1243 7807 Finding value for P # DSNParser:1249 7807 Copying value for P from previous DSN # DSNParser:1243 7807 Finding value for p # DSNParser:1249 7807 Copying value for p from previous DSN # DSNParser:1243 7807 Finding value for u # DSNParser:1249 7807 Copying value for u from previous DSN # DSNParser:1243 7807 Finding value for h # DSNParser:1249 7807 Copying value for h from previous DSN # DSNParser:1243 7807 Finding value for D # DSNParser:1243 7807 Finding value for t # DSNParser:1249 7807 Copying value for t from previous DSN # OptionParser:727 7807 Getting description and usage from SYNOPSIS in /usr/bin/pt-table-sync # OptionParser:980 7807 Parsing SYNOPSIS in /usr/bin/pt-table-sync # OptionParser:993 7807 Raw SYNOPSIS text: Usage: pt-table-sync [OPTION...] DSN [DSN...] # # pt-table-sync synchronizes data efficiently between MySQL tables. # # # OptionParser:731 7807 Description: pt-table-sync synchronizes data efficiently between MySQL tables. # Usage: pt-table-sync [OPTION...] DSN [DSN...] # pt_table_sync:7890 7807 Loading TableSyncChunk # pt_table_sync:7890 7807 Loading TableSyncNibble # pt_table_sync:7890 7807 Loading TableSyncGroupBy # pt_table_sync:7890 7807 Loading TableSyncStream # pt_table_sync:8084 7807 DSN has t part; syncing ONE TABLE between servers # DSNParser:1336 7807 DBI:mysql:db1;host=localhost;port=3306;mysql_read_default_group=client # DSNParser:1382 7807 DBI:mysql:db1;host=localhost;port=3306;mysql_read_default_group=client test test mysql_enable_utf8=>0, ShowErrorStatement=>1, AutoCommit=>0, RaiseError=>1, PrintError=>0 # DSNParser:1391 7807 DBI::db=HASH(0xb8d3e80) SELECT @@SQL_MODE # DSNParser:1398 7807 DBI::db=HASH(0xb8d3e80) SET @@SQL_QUOTE_SHOW_CREATE = 1/*!40101, @@SQL_MODE='NO_AUTO_VALUE_ON_ZERO'*/ # DSNParser:1417 7807 DBI::db=HASH(0xb8d3e80) : SET wait_timeout=10000 # DSNParser:1443 7807 DBH info: DBI::db=HASH(0xb8d3e80) $VAR1 = { # '@@hostname' => 'server', # 'CONNECTION_ID()' => '16', # 'DATABASE()' => 'db1', # 'VERSION()' => '5.5.25a-log' # }; # 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: 3.0007 $DBI::VERSION: 1.52 # pt_table_sync:8882 7807 DBI::db=HASH(0xb8d3e80) /*!40101 SET @@SQL_MODE := CONCAT(@@SQL_MODE, ',NO_AUTO_VALUE_ON_ZERO')*/ # VersionParser:1542 7807 5.5.25a-log parses to 005005025 # VersionParser:1542 7807 5.1.5 parses to 005001005 # VersionParser:1573 7807 005005025 ge 5.1.5 : 1 # pt_table_sync:8895 7807 DBI::db=HASH(0xb8d3e80) SELECT @@binlog_format # pt_table_sync:8897 7807 Original binlog_format: STATEMENT # pt_table_sync:8928 7807 Opened dbh DBI::db=HASH(0xb8d3e80) # DSNParser:1336 7807 DBI:mysql:db1;host=localhost;port=3306;mysql_read_default_group=client # DSNParser:1382 7807 DBI:mysql:db1;host=localhost;port=3306;mysql_read_default_group=client test test mysql_enable_utf8=>0, ShowErrorStatement=>1, AutoCommit=>0, RaiseError=>1, PrintError=>0 # DSNParser:1391 7807 DBI::db=HASH(0xb948bb0) SELECT @@SQL_MODE # DSNParser:1398 7807 DBI::db=HASH(0xb948bb0) SET @@SQL_QUOTE_SHOW_CREATE = 1/*!40101, @@SQL_MODE='NO_AUTO_VALUE_ON_ZERO'*/ # DSNParser:1417 7807 DBI::db=HASH(0xb948bb0) : SET wait_timeout=10000 # DSNParser:1443 7807 DBH info: DBI::db=HASH(0xb948bb0) $VAR1 = { # '@@hostname' => 'server', # 'CONNECTION_ID()' => '17', # 'DATABASE()' => 'db1', # 'VERSION()' => '5.5.25a-log' # }; # 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: 3.0007 $DBI::VERSION: 1.52 # pt_table_sync:8882 7807 DBI::db=HASH(0xb948bb0) /*!40101 SET @@SQL_MODE := CONCAT(@@SQL_MODE, ',NO_AUTO_VALUE_ON_ZERO')*/ # VersionParser:1542 7807 5.5.25a-log parses to 005005025 # VersionParser:1542 7807 5.1.5 parses to 005001005 # VersionParser:1573 7807 005005025 ge 5.1.5 : 1 # pt_table_sync:8895 7807 DBI::db=HASH(0xb948bb0) SELECT @@binlog_format # pt_table_sync:8897 7807 Original binlog_format: STATEMENT # pt_table_sync:8928 7807 Opened dbh DBI::db=HASH(0xb948bb0) # DSNParser:1336 7807 DBI:mysql:db2;host=localhost;port=3306;mysql_read_default_group=client # DSNParser:1382 7807 DBI:mysql:db2;host=localhost;port=3306;mysql_read_default_group=client test test mysql_enable_utf8=>0, ShowErrorStatement=>1, AutoCommit=>0, RaiseError=>1, PrintError=>0 # DSNParser:1391 7807 DBI::db=HASH(0xb94f9b0) SELECT @@SQL_MODE # DSNParser:1398 7807 DBI::db=HASH(0xb94f9b0) SET @@SQL_QUOTE_SHOW_CREATE = 1/*!40101, @@SQL_MODE='NO_AUTO_VALUE_ON_ZERO'*/ # DSNParser:1417 7807 DBI::db=HASH(0xb94f9b0) : SET wait_timeout=10000 # DSNParser:1443 7807 DBH info: DBI::db=HASH(0xb94f9b0) $VAR1 = { # '@@hostname' => 'server', # 'CONNECTION_ID()' => '18', # 'DATABASE()' => 'db2', # 'VERSION()' => '5.5.25a-log' # }; # 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: 3.0007 $DBI::VERSION: 1.52 # pt_table_sync:8882 7807 DBI::db=HASH(0xb94f9b0) /*!40101 SET @@SQL_MODE := CONCAT(@@SQL_MODE, ',NO_AUTO_VALUE_ON_ZERO')*/ # VersionParser:1542 7807 5.5.25a-log parses to 005005025 # VersionParser:1542 7807 5.1.5 parses to 005001005 # VersionParser:1573 7807 005005025 ge 5.1.5 : 1 # pt_table_sync:8895 7807 DBI::db=HASH(0xb94f9b0) SELECT @@binlog_format # pt_table_sync:8897 7807 Original binlog_format: STATEMENT # pt_table_sync:8928 7807 Opened dbh DBI::db=HASH(0xb94f9b0) # DSNParser:1336 7807 DBI:mysql:db2;host=localhost;port=3306;mysql_read_default_group=client # DSNParser:1382 7807 DBI:mysql:db2;host=localhost;port=3306;mysql_read_default_group=client test test mysql_enable_utf8=>0, ShowErrorStatement=>1, AutoCommit=>0, RaiseError=>1, PrintError=>0 # DSNParser:1391 7807 DBI::db=HASH(0xb94fea0) SELECT @@SQL_MODE # DSNParser:1398 7807 DBI::db=HASH(0xb94fea0) SET @@SQL_QUOTE_SHOW_CREATE = 1/*!40101, @@SQL_MODE='NO_AUTO_VALUE_ON_ZERO'*/ # DSNParser:1417 7807 DBI::db=HASH(0xb94fea0) : SET wait_timeout=10000 # DSNParser:1443 7807 DBH info: DBI::db=HASH(0xb94fea0) $VAR1 = { # '@@hostname' => 'server', # 'CONNECTION_ID()' => '19', # 'DATABASE()' => 'db2', # 'VERSION()' => '5.5.25a-log' # }; # 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: 3.0007 $DBI::VERSION: 1.52 # pt_table_sync:8882 7807 DBI::db=HASH(0xb94fea0) /*!40101 SET @@SQL_MODE := CONCAT(@@SQL_MODE, ',NO_AUTO_VALUE_ON_ZERO')*/ # VersionParser:1542 7807 5.5.25a-log parses to 005005025 # VersionParser:1542 7807 5.1.5 parses to 005001005 # VersionParser:1573 7807 005005025 ge 5.1.5 : 1 # pt_table_sync:8895 7807 DBI::db=HASH(0xb94fea0) SELECT @@binlog_format # pt_table_sync:8897 7807 Original binlog_format: STATEMENT # pt_table_sync:8928 7807 Opened dbh DBI::db=HASH(0xb94fea0) # TableParser:1826 7807 /*!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:1831 7807 DBI::db=HASH(0xb8d3e80) USE `db1` # TableParser:1835 7807 SHOW CREATE TABLE `db1`.`table1` # TableParser:1847 7807 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # TableParser:2058 7807 Storage engine: InnoDB # TableParser:1879 7807 Table cols: `field1` # TableParser:2058 7807 Storage engine: InnoDB # TableParser:2074 7807 Parsed key: PRIMARY KEY (`field1`) # TableParser:2100 7807 PRIMARY key cols: `field1` # TableParser:2122 7807 This key is the clustered key # TableParser:1999 7807 Checking `db2`.`table1` # TableParser:2003 7807 SHOW TABLES FROM `db2` LIKE 'table1' # TableParser:2017 7807 Table exists; no privs to check # pt_table_sync:8991 7807 Checking privileges # TableSyncer:5651 7807 Permissions check: SHOW FULL COLUMNS FROM `db1`.`table1` # TableSyncer:5656 7807 Permissions check: DELETE FROM `db1`.`table1` LIMIT 0 # TableSyncer:5660 7807 User privs on `db1`.`table1` : select,insert,update,references delete # TableSyncer:5664 7807 User has all privs # TableSyncer:5651 7807 Permissions check: SHOW FULL COLUMNS FROM `db2`.`table1` # TableSyncer:5656 7807 Permissions check: DELETE FROM `db2`.`table1` LIMIT 0 # TableSyncer:5660 7807 User privs on `db2`.`table1` : select,insert,update,references delete # TableSyncer:5664 7807 User has all privs # pt_table_sync:9006 7807 Checking for triggers # VersionParser:1542 7807 5.5.25a-log parses to 005005025 # VersionParser:1542 7807 5.0.2 parses to 005000002 # VersionParser:1573 7807 005005025 ge 5.0.2 : 1 # MySQLDump:2606 7807 /*!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 */ # MySQLDump:2610 7807 SHOW TRIGGERS FROM `db2` # MySQLDump:2623 7807 /*!40101 SET @@SQL_MODE := @OLD_SQL_MODE, @@SQL_QUOTE_SHOW_CREATE := @OLD_QUOTE */ # pt_table_sync:9015 7807 Destination does not support triggers D=db2,P=3306,h=localhost,p=...,t=table1,u=test # MasterSlave:6257 7807 DBI::db=HASH(0xb94f9b0) SHOW SLAVE STATUS # MasterSlave:6266 7807 This server returns nothing for SHOW SLAVE STATUS # pt_table_sync:8740 7807 Variables on destination: log_bin= ON @@SQL_LOG_BIN= 1 # pt_table_sync:8748 7807 Will make changes on destination DBI::db=HASH(0xb94f9b0) # TableSyncer:5228 7807 Syncing table with args: plugins: $VAR1 = [ # bless( { # DSNParser => bless( { # opts => { # A => { # copy => 1, # desc => 'Default character set', # dsn => 'charset' # }, # D => { # copy => 1, # desc => 'Database containing the table to be synced', # dsn => 'database' # }, # F => { # copy => 1, # desc => 'Only read default options from the given file', # dsn => 'mysql_read_default_file' # }, # P => { # copy => 1, # desc => 'Port number to use for connection', # dsn => 'port' # }, # S => { # copy => 1, # desc => 'Socket file to use for connection', # dsn => 'mysql_socket' # }, # h => { # copy => 1, # desc => 'Connect to host', # dsn => 'host' # }, # p => { # copy => 1, # desc => 'Password to use when connecting', # dsn => 'password' # }, # t => { # copy => 1, # desc => 'Table to be synced', # dsn => undef # }, # u => { # copy => 1, # desc => 'User for login if not current user', # dsn => 'user' # } # }, # 'set-vars' => 'wait_timeout=10000' # }, 'DSNParser' ), # MasterSlave => bless( { # VersionParser => bless( { # 'DBI::db=HASH(0xb94f9b0)' => '005005025' # }, 'VersionParser' ), # not_a_slave => { # 'DBI::db=HASH(0xb94f9b0)' => 1 # }, # replication_thread => {}, # sths => { # 'DBI::db=HASH(0xb94f9b0)' => { # SLAVE_STATUS => bless( {}, 'DBI::st' ) # } # } # }, 'MasterSlave' ), # MySQLDump => bless( { # cache => 0, # triggers => { # db2 => {} # } # }, 'MySQLDump' ), # OptionParser => bless( { # DSNParser => $VAR1->[0]{DSNParser}, # allowed_groups => {}, # atleast1 => [ # [ # 'print', # 'execute', # 'dry-run' # ] # ], # attributes => { # cumulative => 1, # default => 1, # group => 1, # negatable => 1, # 'short form' => 1, # type => 1 # }, # default_files => [ # '/etc/percona-toolkit/percona-toolkit.conf', # '/etc/percona-toolkit/pt-table-sync.conf', # '/home/ryan/.percona-toolkit.conf', # '/home/ryan/.pt-table-sync.conf' # ], # defaults => { # algorithms => 'Chunk,Nibble,GroupBy,Stream', # 'bin-log' => 'yes', # 'buffer-to-client' => 'yes', # 'check-master' => 'yes', # 'check-privileges' => 'yes', # 'check-slave' => 'yes', # 'check-triggers' => 'yes', # 'chunk-size' => '1000', # config => '/etc/percona-toolkit/percona-toolkit.conf,/etc/percona-toolkit/pt-table-sync.conf,/home/ryan/.percona-toolkit.conf,/home/ryan/.pt-table-sync.conf', # 'conflict-error' => 'warn', # 'foreign-key-checks' => 'yes', # 'hex-blob' => 'yes', # 'ignore-engines' => 'FEDERATED,MRG_MyISAM', # 'index-hint' => 'yes', # 'set-vars' => 'wait_timeout=10000', # 'unique-checks' => 'yes', # 'zero-chunk' => 'yes' # }, # defaults_to => {}, # description => 'pt-table-sync synchronizes data efficiently between MySQL tables.', # disables => {}, # errors => [], # got_opts => 1, # groups => { # default => { # algorithms => 1, # 'ask-pass' => 1, # bidirectional => 1, # 'bin-log' => 1, # 'buffer-in-mysql' => 1, # 'buffer-to-client' => 1, # charset => 1, # 'check-master' => 1, # 'check-privileges' => 1, # 'check-slave' => 1, # 'check-triggers' => 1, # 'chunk-column' => 1, # 'chunk-index' => 1, # 'chunk-size' => 1, # columns => 1, # config => 1, # 'conflict-column' => 1, # 'conflict-comparison' => 1, # 'conflict-error' => 1, # 'conflict-threshold' => 1, # 'conflict-value' => 1, # databases => 1, # 'defaults-file' => 1, # 'dry-run' => 1, # engines => 1, # execute => 1, # 'explain-hosts' => 1, # 'float-precision' => 1, # 'foreign-key-checks' => 1, # function => 1, # help => 1, # 'hex-blob' => 1, # host => 1, # 'ignore-columns' => 1, # 'ignore-databases' => 1, # 'ignore-engines' => 1, # 'ignore-tables' => 1, # 'index-hint' => 1, # lock => 1, # 'lock-and-rename' => 1, # password => 1, # pid => 1, # port => 1, # print => 1, # 'recursion-method' => 1, # replace => 1, # replicate => 1, # 'set-vars' => 1, # socket => 1, # 'sync-to-master' => 1, # tables => 1, # 'timeout-ok' => 1, # transaction => 1, # trim => 1, # 'unique-checks' => 1, # user => 1, # verbose => 1, # version => 1, # wait => 1, # where => 1, # 'zero-chunk' => 1 # } # }, # head1 => 'OPTIONS', # item => '--(.*)', # mutex => [ # [ # 'where', # 'replicate' # ] # ], # opts => { # algorithms => { # desc => 'Algorithm to use when comparing the tables, in order of preference (default Chunk,Nibble,GroupBy,Stream)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'algorithms', # parsed => 1, # short => undef, # spec => 'algorithms=s', # type => 's', # value => 'Chunk,Nibble,GroupBy,Stream' # }, # 'ask-pass' => { # desc => 'Prompt for a password when connecting to MySQL', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'ask-pass', # parsed => 1, # short => undef, # spec => 'ask-pass', # type => undef, # value => undef # }, # bidirectional => { # desc => 'Enable bidirectional sync between first and subsequent hosts', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'bidirectional', # parsed => 1, # short => undef, # spec => 'bidirectional', # type => undef, # value => undef # }, # 'bin-log' => { # desc => 'Log to the binary log (SET SQL_LOG_BIN=1) (default yes)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 1, # is_required => 0, # long => 'bin-log', # parsed => 1, # short => undef, # spec => 'bin-log!', # type => undef, # value => 'yes' # }, # 'buffer-in-mysql' => { # desc => 'Instruct MySQL to buffer queries in its memory', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'buffer-in-mysql', # parsed => 1, # short => undef, # spec => 'buffer-in-mysql', # type => undef, # value => undef # }, # 'buffer-to-client' => { # desc => 'Fetch rows one-by-one from MySQL while comparing (default yes)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 1, # is_required => 0, # long => 'buffer-to-client', # parsed => 1, # short => undef, # spec => 'buffer-to-client!', # type => undef, # value => 'yes' # }, # charset => { # desc => 'Default character set', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'charset', # parsed => 1, # short => 'A', # spec => 'charset|A=s', # type => 's', # value => undef # }, # 'check-master' => { # desc => 'With --sync-to-master, try to verify that the detected master is the real master (default yes)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 1, # is_required => 0, # long => 'check-master', # parsed => 1, # short => undef, # spec => 'check-master!', # type => undef, # value => 'yes' # }, # 'check-privileges' => { # desc => 'Check that user has all necessary privileges on source and destination table (default yes)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 1, # is_required => 0, # long => 'check-privileges', # parsed => 1, # short => undef, # spec => 'check-privileges!', # type => undef, # value => 'yes' # }, # 'check-slave' => { # desc => 'Check whether the destination server is a slave (default yes)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 1, # is_required => 0, # long => 'check-slave', # parsed => 1, # short => undef, # spec => 'check-slave!', # type => undef, # value => 'yes' # }, # 'check-triggers' => { # desc => 'Check that no triggers are defined on the destination table (default yes)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 1, # is_required => 0, # long => 'check-triggers', # parsed => 1, # short => undef, # spec => 'check-triggers!', # type => undef, # value => 'yes' # }, # 'chunk-column' => { # desc => 'Chunk the table on this column', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'chunk-column', # parsed => 1, # short => undef, # spec => 'chunk-column=s', # type => 's', # value => undef # }, # 'chunk-index' => { # desc => 'Chunk the table using this index', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'chunk-index', # parsed => 1, # short => undef, # spec => 'chunk-index=s', # type => 's', # value => undef # }, # 'chunk-size' => { # desc => 'Number of rows or data size per chunk (default 1000)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'chunk-size', # parsed => 1, # short => undef, # spec => 'chunk-size=s', # type => 's', # value => '1000' # }, # columns => { # desc => 'Compare this comma-separated list of columns', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'columns', # parsed => 1, # short => 'c', # spec => 'columns|c=s', # type => 'a', # value => undef # }, # config => { # desc => 'Read this comma-separated list of config files; if specified, this must be the first option on the command line', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'config', # parsed => 1, # short => undef, # spec => 'config=s', # type => 'A', # value => [ # '/etc/percona-toolkit/percona-toolkit.conf', # '/etc/percona-toolkit/pt-table-sync.conf', # '/home/ryan/.percona-toolkit.conf', # '/home/ryan/.pt-table-sync.conf' # ] # }, # 'conflict-column' => { # desc => 'Compare this column when rows conflict during a --bidirectional sync', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'conflict-column', # parsed => 1, # short => undef, # spec => 'conflict-column=s', # type => 's', # value => undef # }, # 'conflict-comparison' => { # desc => 'Choose the --conflict-column with this property as the source', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'conflict-comparison', # parsed => 1, # short => undef, # spec => 'conflict-comparison=s', # type => 's', # value => undef # }, # 'conflict-error' => { # desc => 'How to report unresolvable conflicts and conflict errors (default warn)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'conflict-error', # parsed => 1, # short => undef, # spec => 'conflict-error=s', # type => 's', # value => 'warn' # }, # 'conflict-threshold' => { # desc => 'Amount by which one --conflict-column must exceed the other', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'conflict-threshold', # parsed => 1, # short => undef, # spec => 'conflict-threshold=s', # type => 's', # value => undef # }, # 'conflict-value' => { # desc => 'Use this value for certain --conflict-comparison', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'conflict-value', # parsed => 1, # short => undef, # spec => 'conflict-value=s', # type => 's', # value => undef # }, # databases => { # desc => 'Sync only this comma-separated list of databases', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'databases', # parsed => 1, # short => 'd', # spec => 'databases|d=s', # type => 'h', # value => undef # }, # 'defaults-file' => { # desc => 'Only read mysql options from the given file', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'defaults-file', # parsed => 1, # short => 'F', # spec => 'defaults-file|F=s', # type => 's', # value => undef # }, # 'dry-run' => { # desc => 'Analyze, decide the sync algorithm to use, print and exit', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'dry-run', # parsed => 1, # short => undef, # spec => 'dry-run', # type => undef, # value => undef # }, # engines => { # desc => 'Sync only this comma-separated list of storage engines', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'engines', # parsed => 1, # short => 'e', # spec => 'engines|e=s', # type => 'h', # value => undef # }, # execute => { # desc => 'Execute queries to make the tables have identical data', # got => 1, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'execute', # parsed => 1, # short => undef, # spec => 'execute', # type => undef, # value => 1 # }, # 'explain-hosts' => { # desc => 'Print connection information and exit', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'explain-hosts', # parsed => 1, # short => undef, # spec => 'explain-hosts', # type => undef, # value => undef # }, # 'float-precision' => { # desc => 'Precision for FLOAT and DOUBLE number-to-string conversion', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'float-precision', # parsed => 1, # short => undef, # spec => 'float-precision=i', # type => 'i', # value => undef # }, # 'foreign-key-checks' => { # desc => 'Enable foreign key checks (SET FOREIGN_KEY_CHECKS=1) (default yes)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 1, # is_required => 0, # long => 'foreign-key-checks', # parsed => 1, # short => undef, # spec => 'foreign-key-checks!', # type => undef, # value => 'yes' # }, # function => { # desc => 'Which hash function you\'d like to use for checksums', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'function', # parsed => 1, # short => undef, # spec => 'function=s', # type => 's', # value => undef # }, # help => { # desc => 'Show help and exit', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'help', # parsed => 1, # short => undef, # spec => 'help', # type => undef, # value => undef # }, # 'hex-blob' => { # desc => 'HEX() BLOB, TEXT and BINARY columns (default yes)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 1, # is_required => 0, # long => 'hex-blob', # parsed => 1, # short => undef, # spec => 'hex-blob!', # type => undef, # value => 'yes' # }, # host => { # desc => 'Connect to host', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'host', # parsed => 1, # short => 'h', # spec => 'host|h=s', # type => 's', # value => undef # }, # 'ignore-columns' => { # desc => 'Ignore this comma-separated list of column names in comparisons', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'ignore-columns', # parsed => 1, # short => undef, # spec => 'ignore-columns=s', # type => 'H', # value => {} # }, # 'ignore-databases' => { # desc => 'Ignore this comma-separated list of databases', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'ignore-databases', # parsed => 1, # short => undef, # spec => 'ignore-databases=s', # type => 'H', # value => {} # }, # 'ignore-engines' => { # desc => 'Ignore this comma-separated list of storage engines (default FEDERATED,MRG_MyISAM)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'ignore-engines', # parsed => 1, # short => undef, # spec => 'ignore-engines=s', # type => 'H', # value => { # FEDERATED => 1, # MRG_MyISAM => 1 # } # }, # 'ignore-tables' => { # desc => 'Ignore this comma-separated list of tables', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'ignore-tables', # parsed => 1, # short => undef, # spec => 'ignore-tables=s', # type => 'H', # value => {} # }, # 'index-hint' => { # desc => 'Add FORCE/USE INDEX hints to the chunk and row queries (default yes)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 1, # is_required => 0, # long => 'index-hint', # parsed => 1, # short => undef, # spec => 'index-hint!', # type => undef, # value => 'yes' # }, # lock => { # desc => 'Lock tables: 0=none, 1=per sync cycle, 2=per table, or 3=globally', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'lock', # parsed => 1, # short => undef, # spec => 'lock=i', # type => 'i', # value => undef # }, # 'lock-and-rename' => { # desc => 'Lock the source and destination table, sync, then swap names', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'lock-and-rename', # parsed => 1, # short => undef, # spec => 'lock-and-rename', # type => undef, # value => undef # }, # password => { # desc => 'Password to use when connecting', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'password', # parsed => 1, # short => 'p', # spec => 'password|p=s', # type => 's', # value => undef # }, # pid => { # desc => 'Create the given PID file', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'pid', # parsed => 1, # short => undef, # spec => 'pid=s', # type => 's', # value => undef # }, # port => { # desc => 'Port number to use for connection', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'port', # parsed => 1, # short => 'P', # spec => 'port|P=i', # type => 'i', # value => undef # }, # print => { # desc => 'Print queries that will resolve differences', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'print', # parsed => 1, # short => undef, # spec => 'print', # type => undef, # value => undef # }, # 'recursion-method' => { # desc => 'Preferred recursion method used to find slaves', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'recursion-method', # parsed => 1, # short => undef, # spec => 'recursion-method=s', # type => 's', # value => undef # }, # replace => { # desc => 'Write all INSERT and UPDATE statements as REPLACE', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'replace', # parsed => 1, # short => undef, # spec => 'replace', # type => undef, # value => undef # }, # replicate => { # desc => 'Sync tables listed as different in this table', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'replicate', # parsed => 1, # short => undef, # spec => 'replicate=s', # type => 's', # value => undef # }, # 'set-vars' => { # desc => 'Set these MySQL variables (default wait_timeout=10000)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'set-vars', # parsed => 1, # short => undef, # spec => 'set-vars=s', # type => 's', # value => 'wait_timeout=10000' # }, # socket => { # desc => 'Socket file to use for connection', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'socket', # parsed => 1, # short => 'S', # spec => 'socket|S=s', # type => 's', # value => undef # }, # 'sync-to-master' => { # desc => 'Treat the DSN as a slave and sync it to its master', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'sync-to-master', # parsed => 1, # short => undef, # spec => 'sync-to-master', # type => undef, # value => undef # }, # tables => { # desc => 'Sync only this comma-separated list of tables', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'tables', # parsed => 1, # short => 't', # spec => 'tables|t=s', # type => 'h', # value => undef # }, # 'timeout-ok' => { # desc => 'Keep going if --wait fails', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'timeout-ok', # parsed => 1, # short => undef, # spec => 'timeout-ok', # type => undef, # value => undef # }, # transaction => { # desc => 'Use transactions instead of LOCK TABLES', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 1, # is_required => 0, # long => 'transaction', # parsed => 1, # short => undef, # spec => 'transaction!', # type => undef, # value => undef # }, # trim => { # desc => 'TRIM() VARCHAR columns in BIT_XOR and ACCUM modes', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'trim', # parsed => 1, # short => undef, # spec => 'trim', # type => undef, # value => undef # }, # 'unique-checks' => { # desc => 'Enable unique key checks (SET UNIQUE_CHECKS=1) (default yes)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 1, # is_required => 0, # long => 'unique-checks', # parsed => 1, # short => undef, # spec => 'unique-checks!', # type => undef, # value => 'yes' # }, # user => { # desc => 'User for login if not current user', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'user', # parsed => 1, # short => 'u', # spec => 'user|u=s', # type => 's', # value => undef # }, # verbose => { # desc => 'Print results of sync operations', # got => 0, # group => 'default', # is_cumulative => 1, # is_negatable => 0, # is_required => 0, # long => 'verbose', # parsed => 1, # short => 'v', # spec => 'verbose|v+', # type => undef, # value => 0 # }, # version => { # desc => 'Show version and exit', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'version', # parsed => 1, # short => undef, # spec => 'version', # type => undef, # value => undef # }, # wait => { # desc => 'How long to wait for slaves to catch up to their master', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'wait', # parsed => 1, # short => 'w', # spec => 'wait|w=s', # type => 'm', # value => undef # }, # where => { # desc => 'WHERE clause to restrict syncing to part of the table', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 0, # is_required => 0, # long => 'where', # parsed => 1, # short => undef, # spec => 'where=s', # type => 's', # value => undef # }, # 'zero-chunk' => { # desc => 'Add a chunk for rows with zero or zero-equivalent values (default yes)', # got => 0, # group => 'default', # is_cumulative => 0, # is_negatable => 1, # is_required => 0, # long => 'zero-chunk', # parsed => 1, # short => undef, # spec => 'zero-chunk!', # type => undef, # value => 'yes' # } # }, # parse_attributes => sub { "DUMMY" }, # program_name => 'pt-table-sync', # rules => [ # 'Specify at least one of --print, --execute, or --dry-run.', # '--where and --replicate are mutually exclusive.', # 'This tool accepts additional command-line arguments. Refer to the SYNOPSIS and usage information for details.' # ], # short_opts => { # A => 'charset', # F => 'defaults-file', # P => 'port', # S => 'socket', # c => 'columns', # d => 'databases', # e => 'engines', # h => 'host', # p => 'password', # t => 'tables', # u => 'user', # v => 'verbose', # w => 'wait' # }, # skip_rules => 0, # strict => 0, # types => { # Array => 'A', # DSN => 'd', # Hash => 'H', # array => 'a', # float => 'f', # hash => 'h', # int => 'i', # size => 'z', # string => 's', # time => 'm' # }, # usage => 'pt-table-sync [OPTION...] DSN [DSN...]', # version => 'pt-table-sync 2.1.2' # }, 'OptionParser' ), # Quoter => bless( {}, 'Quoter' ), # TableChecksum => bless( { # Quoter => $VAR1->[0]{Quoter}, # VersionParser => $VAR1->[0]{MasterSlave}{VersionParser} # }, 'TableChecksum' ), # TableChunker => bless( { # EPOCH => '1970-01-01', # Quoter => $VAR1->[0]{Quoter}, # TableParser => bless( { # Quoter => $VAR1->[0]{Quoter} # }, 'TableParser' ), # int_types => { # bigint => 1, # date => 1, # datetime => 1, # int => 1, # mediumint => 1, # smallint => 1, # time => 1, # timestamp => 1, # tinyint => 1, # year => 1 # }, # real_types => { # decimal => 1, # double => 1, # float => 1 # } # }, 'TableChunker' ), # TableNibbler => bless( { # Quoter => $VAR1->[0]{Quoter}, # TableParser => $VAR1->[0]{TableChunker}{TableParser} # }, 'TableNibbler' ), # TableParser => $VAR1->[0]{TableChunker}{TableParser}, # TableSyncer => bless( { # DSNParser => $VAR1->[0]{DSNParser}, # MasterSlave => $VAR1->[0]{MasterSlave}, # Quoter => $VAR1->[0]{Quoter}, # Retry => bless( {}, 'Retry' ), # TableChecksum => $VAR1->[0]{TableChecksum}, # VersionParser => $VAR1->[0]{MasterSlave}{VersionParser} # }, 'TableSyncer' ), # VersionParser => $VAR1->[0]{MasterSlave}{VersionParser} # }, 'TableSyncChunk' ), # bless( { # DSNParser => $VAR1->[0]{DSNParser}, # MasterSlave => $VAR1->[0]{MasterSlave}, # MySQLDump => $VAR1->[0]{MySQLDump}, # OptionParser => $VAR1->[0]{OptionParser}, # Quoter => $VAR1->[0]{Quoter}, # TableChecksum => $VAR1->[0]{TableChecksum}, # TableChunker => $VAR1->[0]{TableChunker}, # TableNibbler => $VAR1->[0]{TableNibbler}, # TableParser => $VAR1->[0]{TableChunker}{TableParser}, # TableSyncer => $VAR1->[0]{TableSyncer}, # VersionParser => $VAR1->[0]{MasterSlave}{VersionParser} # }, 'TableSyncNibble' ), # bless( { # DSNParser => $VAR1->[0]{DSNParser}, # MasterSlave => $VAR1->[0]{MasterSlave}, # MySQLDump => $VAR1->[0]{MySQLDump}, # OptionParser => $VAR1->[0]{OptionParser}, # Quoter => $VAR1->[0]{Quoter}, # TableChecksum => $VAR1->[0]{TableChecksum}, # TableChunker => $VAR1->[0]{TableChunker}, # TableNibbler => $VAR1->[0]{TableNibbler}, # TableParser => $VAR1->[0]{TableChunker}{TableParser}, # TableSyncer => $VAR1->[0]{TableSyncer}, # VersionParser => $VAR1->[0]{MasterSlave}{VersionParser} # }, 'TableSyncGroupBy' ), # bless( { # DSNParser => $VAR1->[0]{DSNParser}, # MasterSlave => $VAR1->[0]{MasterSlave}, # MySQLDump => $VAR1->[0]{MySQLDump}, # OptionParser => $VAR1->[0]{OptionParser}, # Quoter => $VAR1->[0]{Quoter}, # TableChecksum => $VAR1->[0]{TableChecksum}, # TableChunker => $VAR1->[0]{TableChunker}, # TableNibbler => $VAR1->[0]{TableNibbler}, # TableParser => $VAR1->[0]{TableChunker}{TableParser}, # TableSyncer => $VAR1->[0]{TableSyncer}, # VersionParser => $VAR1->[0]{MasterSlave}{VersionParser} # }, 'TableSyncStream' ) # ]; # src: $VAR1 = { # db => 'db1', # dbh => bless( {}, 'DBI::db' ), # ddl => 'CREATE TABLE `table1` ( # `field1` varchar(5) NOT NULL DEFAULT \'\', # PRIMARY KEY (`field1`) # ) ENGINE=InnoDB DEFAULT CHARSET=latin1', # dsn => { # A => undef, # D => 'db1', # F => undef, # P => '3306', # S => undef, # h => 'localhost', # p => 'test', # t => 'table1', # u => 'test' # }, # misc_dbh => bless( {}, 'DBI::db' ), # tbl => 'table1', # tbl_struct => { # charset => 'latin1', # clustered_key => 'PRIMARY', # col_posn => { # field1 => 0 # }, # cols => [ # 'field1' # ], # defs => { # field1 => ' `field1` varchar(5) NOT NULL DEFAULT \'\'' # }, # engine => 'InnoDB', # is_autoinc => { # field1 => 0 # }, # is_col => { # field1 => 1 # }, # is_nullable => {}, # is_numeric => {}, # keys => { # PRIMARY => { # col_prefixes => [ # undef # ], # colnames => '`field1`', # cols => [ # 'field1' # ], # ddl => 'PRIMARY KEY (`field1`)', # is_col => { # field1 => 1 # }, # is_nullable => 0, # is_unique => 1, # name => 'PRIMARY', # type => 'BTREE' # } # }, # name => 'table1', # null_cols => [], # numeric_cols => [], # type_for => { # field1 => 'varchar' # } # } # }; # dst: $VAR1 = { # db => 'db2', # dbh => bless( {}, 'DBI::db' ), # dsn => { # A => undef, # D => 'db2', # F => undef, # P => '3306', # S => undef, # h => 'localhost', # p => 'test', # t => 'table1', # u => 'test' # }, # misc_dbh => bless( {}, 'DBI::db' ), # supports_triggers => 1, # tbl => 'table1' # }; # tbl_struct: $VAR1 = { # charset => 'latin1', # clustered_key => 'PRIMARY', # col_posn => { # field1 => 0 # }, # cols => [ # 'field1' # ], # defs => { # field1 => ' `field1` varchar(5) NOT NULL DEFAULT \'\'' # }, # engine => 'InnoDB', # is_autoinc => { # field1 => 0 # }, # is_col => { # field1 => 1 # }, # is_nullable => {}, # is_numeric => {}, # keys => { # PRIMARY => { # col_prefixes => [ # undef # ], # colnames => '`field1`', # cols => [ # 'field1' # ], # ddl => 'PRIMARY KEY (`field1`)', # is_col => { # field1 => 1 # }, # is_nullable => 0, # is_unique => 1, # name => 'PRIMARY', # type => 'BTREE' # } # }, # name => 'table1', # null_cols => [], # numeric_cols => [], # type_for => { # field1 => 'varchar' # } # }; # cols: $VAR1 = [ # 'field1' # ]; # chunk_size: $VAR1 = '1000'; # # TableSyncer:5207 7807 Getting best plugin # TableSyncer:5209 7807 Trying plugin Chunk # TableChunker:3103 7807 Possible chunk indexes in order: PRIMARY # TableChunker:3123 7807 Exact chunkable: field1 on PRIMARY # TableChunker:3127 7807 Ordering columns by order in tbl, PK first # TableChunker:3140 7807 Chunkable columns: field1 on PRIMARY # TableChunker:3141 7807 Can chunk exactly: 1 # TableSyncChunk:4428 7807 Can chunk on column field1 using index PRIMARY # TableSyncer:5212 7807 Can sync with Chunk $VAR1 = { # chunk_col => 'field1', # chunk_index => 'PRIMARY' # }; # # TableSyncer:5256 7807 CRC column: __crc # VersionParser:1542 7807 5.5.25a-log parses to 005005025 # VersionParser:1542 7807 4.0.9 parses to 004000009 # VersionParser:1573 7807 005005025 ge 4.0.9 : 1 # VersionParser:1542 7807 4.0.9 parses to 004000009 # VersionParser:1573 7807 005005025 ge 4.0.9 : 1 # TableSyncer:5267 7807 Using chunk index chosen by plugin for index hint # TableSyncer:5270 7807 Index hint: FORCE INDEX (`PRIMARY`) # ChangeHandler:2763 7807 Set fetch back dbh DBI::db=HASH(0xb8d3e80) # TableChunker:3574 7807 DBI::db=HASH(0xb8d3e80) SELECT MIN(`field1`), MAX(`field1`) FROM `db1`.`table1` FORCE INDEX (`PRIMARY`) # TableChunker:3576 7807 Actual end points: 00501 27920 # TableChunker:3766 7807 Validating min end point: 00501 # TableChunker:3808 7807 No validator for varchar values # TableChunker:3779 7807 Validating max end point: 00501 # TableChunker:3808 7807 No validator for varchar values # TableChunker:3587 7807 Valid end points: 00501 27920 # TableChunker:3597 7807 EXPLAIN SELECT * FROM `db1`.`table1` FORCE INDEX (`PRIMARY`) # TableChunker:3154 7807 Calculate chunks for db=db1, tbl=table1, chunk_col=field1, min=00501, max=27920, rows_in_range=1017, chunk_size=1000, zero_chunk=yes, exact=undef # TableChunker:3173 7807 chunk col type: varchar # TableChunker:3356 7807 DBI::db=HASH(0xb8d3e80) SELECT ORD(?) AS min_col_ord, ORD(?) AS max_col_ord # TableChunker:3361 7807 Min/max col char code: 48 50 # TableChunker:3365 7807 Table charset: latin1 # TableChunker:3422 7807 Base 3 chars: 0 1 2 # TableChunker:3428 7807 DBI::db=HASH(0xb8d3e80) SELECT MAX(LENGTH(`field1`)) FROM `db1`.`table1` ORDER BY `field1` # TableChunker:3431 7807 Max column value: 27920 5 # TableChunker:3185 7807 Chunker: $VAR1 = { # col => '`field1`', # end_point => 243, # interval => '238', # range_func => sub { "DUMMY" }, # start_point => 0 # }; # Failed to prepare TableSyncChunk plugin: Use of uninitialized value in join or string at /usr/bin/pt-table-sync line 3954. while doing db2.table1 on localhost # pt_table_sync:9068 7807 Disconnected dbh DBI::db=HASH(0xb94f9b0) # pt_table_sync:9068 7807 Disconnected dbh DBI::db=HASH(0xb94fea0) # pt_table_sync:9068 7807 Disconnected dbh DBI::db=HASH(0xb8d3e80) # pt_table_sync:9068 7807 Disconnected dbh DBI::db=HASH(0xb948bb0)