MySQL 5.6 allows you to execute replicated events in parallel as
long as data is split across several databases. This feature is
named “Multi-Threaded Slave” (MTS) and it is easy to enable by
setting slave_parallel_workers
to a > 1 value.
However if you decide to use MTS without GTIDs, you may run into
annoying issues. Let’s look at two of them.
Skipping replication errors
When replication stops with an error, a frequent approach is to
“ignore now and fix later.” This means you will run SET
GLOBAL sql_slave_skip_counter=1
to be able to restart
replication as quickly as possible and later use
pt-table-checksum/pt-table-sync to resync data on the slave.
Then the day when I hit:
mysql> show slave status; [...] Last_SQL_Error: Worker 0 failed executing transaction '' at master log mysql-bin.000017, end_log_pos 1216451; Error 'Duplicate entry '1001' for key 'PRIMARY'' on query. …[Read more]