Bug #76023 | CLUSTER CIRCULAR REPLICATION WITH IGNORE_SERVER_IDS() BROKEN BY ANONYMOUS_GTIDS | ||
---|---|---|---|
Submitted: | 24 Feb 2015 11:23 | Modified: | 9 Jul 2015 9:38 |
Reporter: | Magnus Blåudd | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Replication | Severity: | S2 (Serious) |
Version: | 5.7.6 | OS: | Any |
Assigned to: | Magnus Blåudd | CPU Architecture: | Any |
[24 Feb 2015 11:23]
Magnus Blåudd
[26 Feb 2015 8:59]
Sven Sandberg
Posted by developer: From the output you paste it looks like the following happens: 1. master issues DROP TABLE and writes to its binlog. 2. slave replicates DROP TABLE. 3. slave1 writes DROP TABLE to binlog. 4. master1 receives DROP TABLE but discards it before writing to the relay log, because both Anonymous_log_event and Query_log_event(DROP) use server_id=1, and IGNORE_SERVER_IDS=(1) on master1. master1 does update the position of the receiver thread (aka IO thread), since Read_master_log_pos=20607 and on slave1's binlog the Query_log_event ends at position 20607. The applier thread (aka SQL thread) has not update the position, but this should not be a problem. There is currently no mechanism for the receiver thread to update the position of the receiver thread when events have been ignored by IGNORE_SERVER_IDS. So far all looks ok. Since master1's receiver thread is past the Query_log_event(DROP), and the Query_log_event is not in the relay log, the next event that master1 should receive is the one after the Query_log_event(DROP). So the question is what happens next. Why does master1 receive the Query_log_event(DROP), when it was positioned after the event? I guess at some point your test case starts a slave thread that receives the event. What positions does SHOW SLAVE STATUS report just before this START SLAVE command?
[9 Jul 2015 9:38]
Jon Stephens
Fixed in the NDB-next branch, currently tagged mysql-5.7.8-ndb-7.5.0. This issue occurs only when using NDB storage engine with 5.7 Server but is not reported in any supported release. Since the fix merely restores the expected behaviour, there is also no user-visible behaviour change to document. Closed without further action.