LP #1602858: Additional automatic exclusions for checksum and sync

Description

**Reported in Launchpad by Ceri WIlliams last update 13-07-2016 22:02:00

There are a number of automatic exclusions on a schema and table level in both pt-table-checksum (line numbers below) and pt-table-sync (line numbers differ):

sub database_is_allowed

7571 if ( $db =~ m/information_schema|performance_schema|lost+found/ ) {
7572 PTDEBUG && _d('Database', $db, 'is a system database, ignoring');
7573 return 0;
7574 }

sub table_is_allowed

7612 return 0 if $db eq 'mysql' && $tbl =~ m/^(?:
7613 general_log
7614 |slow_log
7615 |innodb_index_stats
7616 |innodb_table_stats
7617 |slave_master_info
7618 |slave_relay_log_info
7619 |slave_worker_info
7620 )$/x;

There are some additional ones that should not be touched, even if writes are not replicated to them:

  • sys (can be completely ignored)

  • mysql.inventory (from MEM)

  • mysql.gtid_execution

  • mysql.plugin

  • mysql.engine_cost

  • mysql.server_cost

In addition, using pt-table-sync with --sync-to-master and --replicate may cause undesirable changes:

  • a master with fast disks, a slave with slow disks and an engine_cost change being altered

  • sys configuration differences being applied on a slave of different hardward specification, etc

Whilst these can be manually excluded, it leaves a default risk for the user and means that they should always apply exclusions. This becomes more important if differences from the checksum were to be automatically resolved using the --sync-to-master and --replicate.

Tested with v2.2.18.

Environment

None

Smart Checklist

Activity

Show:

Lalit Choudhary March 8, 2019 at 12:03 PM

Details

Assignee

Reporter

Priority

Components

Smart Checklist

Created January 24, 2018 at 9:14 PM
Updated March 4, 2024 at 4:40 PM