Bug #25998 problems about circle replication
Submitted: 1 Feb 2007 3:06 Modified: 1 Sep 2009 8:50
Reporter: mingfei hua Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Replication Severity:S3 (Non-critical)
Version:5.0.27 OS:Linux (linux)
Assigned to: Andrei Elkin CPU Architecture:Any
Tags: change master IGNORE_SERVER_IDS, circular replication

[1 Feb 2007 3:06] mingfei hua
Description:
   We use mysql circle replication . Topology look like chart below.

        A->B->C->A
   server          server-id
    A                   1
    B                   2
    C                   3
   
   Server A is replication master of server B,server B is replication master of server C,server C is replication master of server A.
   
   When all of servers is health , it work correctly.Every sql in binlog has an property named server-id,when we insert line in server A using SQL "insert into table test values(1)",the property value of this SQL in binlog is 1,when this sql pass to server B, server B find the server-id of SQL is 1,not equal 2,then
execute it,the same as c,eventually,the sql pass to A again,but find the server-id is same as itself,so don't execute it.
   We write program running as as daemon to check replication status between servers,when A is down,B will change new master to C. It work will all the time,but in some monment,when the sql first execute in server A hasn't been pass back to A,as the same time,server A is down,we change new master to C at B,
so that sql will be executed in server B and server C for ever.
   It may not a bug,but may be should be impoved.

How to repeat:
None
[5 Feb 2007 18:45] Sveta Smirnova
Thank you for the report.

Verified as described.
[4 Sep 2007 12:27] Lars Thalmann
Duplicate of BUG#27808.
[28 Apr 2008 11:14] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/46108

ChangeSet@1.2634, 2008-04-28 14:11:47+03:00, aelkin@mysql1000.(none) +9 -0
  Bug #25998 problems about circle replication
  Bug #27808 Infinite looping in circular replication
  
  In case of the circular multi-master replication after withdrawing one of the members events
  generated by the removed server could become unstoppable (bug#25998).
  That's because the originator had been a part of the event flow termination.
  Other possibility of the unstoppable event is the cluster replication (bug#27808).
  In that case no withdrawing is necessary at all.
  
  In order to fix both artifacts it is enough to introduce a new option for CHANGE MASTER.
  
  MASTER_IGNORE_SERVER_ID= some_server_id
  
  can be repeated multiple times to list all the servers from which events would not be put into
  relay log and therefore would not be executed.
  
  Fixed with implementing the feature.
  
  Properties of the feature:
  
   a. reporting an error if the id of an ignored server is the slave itself and
      its configuration on startup was with --replicate-same-server-id;
   b. overriding the old MASTER_IGNORE_SERVER_ID list by the following 
      CHANGE MASTER ... MASTER_IGNORE_SERVER_ID=;
   c. the old setup preserving by CHANGE MASTER w/o MASTER_IGNORE_SERVER_ID;
   d. resetting the ignored server ids with RESET SLAVE;
   e. implementing a new status variable 
      show status like "slave_replicate_ignore_server_id"
   f. Differently from --replicate-same-server-id handling, sql thread is not
      concerned with the ignored server id, because it's supposed that
      the relay log constists only of events that can not be unstoppable.
      IO thread takes care of an unstoppable event can not penetrate into the relay log.
   g. Rotate and FD events are still relay-logged. They can not circulate.
[28 Apr 2008 12:10] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/46111

ChangeSet@1.2634, 2008-04-28 15:08:14+03:00, aelkin@mysql1000.(none) +9 -0
  Bug #25998 problems about circle replication
  Bug #27808 Infinite looping in circular replication
  
  In case of the circular multi-master replication after withdrawing one of the members events
  generated by the removed server could become unstoppable (bug#25998).
  That's because the originator had been a part of the event flow termination.
  Other possibility of the unstoppable event is the cluster replication (bug#27808).
  In that case no withdrawing is necessary at all.
  
  In order to fix both artifacts it is enough to introduce a new option for CHANGE MASTER.
  
  MASTER_IGNORE_SERVER_ID= some_server_id
  
  can be repeated multiple times to list all the servers from which events would not be put into
  relay log and therefore would not be executed.
  
  Fixed with implementing the feature.
  
  Properties of the feature:
  
   a. reporting an error if the id of an ignored server is the slave itself and
      its configuration on startup was with --replicate-same-server-id;
   b. overriding the old MASTER_IGNORE_SERVER_ID list by the following 
      CHANGE MASTER ... MASTER_IGNORE_SERVER_ID=;
   c. the old setup preserving by CHANGE MASTER w/o MASTER_IGNORE_SERVER_ID;
   d. resetting the ignored server ids with RESET SLAVE;
   e. implementing a new status variable 
      show status like "slave_replicate_ignore_server_id"
   f. Differently from --replicate-same-server-id handling, the sql thread is not
      concerned with the ignored server id, because it's supposed that
      the relay log constists only of events that can not be unstoppable.
      IO thread takes care of an unstoppable event can not penetrate
      into the relay log.
   g. Rotate and FD events originated by the current master listed
      in the ignored list are still relay-logged. Their termination remains to be
      a duty of the current master.
[28 Apr 2008 17:11] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/46130

ChangeSet@1.2634, 2008-04-28 20:08:05+03:00, aelkin@mysql1000.(none) +8 -0
  Bug #25998 problems about circle replication
  Bug #27808 Infinite looping in circular replication
  
  In case of the circular multi-master replication after withdrawing one of the members events
  generated by the removed server could become unstoppable (bug#25998).
  That's because the originator had been a part of the event flow termination.
  Other possibility of the unstoppable event is the cluster replication (bug#27808).
  In that case no withdrawing is necessary at all.
  
  In order to fix both artifacts it is enough to introduce a new option for CHANGE MASTER.
  
  MASTER_IGNORE_SERVER_ID= some_server_id
  
  can be repeated multiple times to list all the servers from which events would not be put into
  relay log and therefore would not be executed.
  
  Fixed with implementing the feature.
  
  Properties of the feature:
  
   a. reporting an error if the id of an ignored server is the slave itself and
      its configuration on startup was with --replicate-same-server-id;
   b. overriding the old MASTER_IGNORE_SERVER_ID list by the following 
      CHANGE MASTER ... MASTER_IGNORE_SERVER_ID=;
   c. the old setup preserving by CHANGE MASTER w/o MASTER_IGNORE_SERVER_ID;
   d. resetting the ignored server ids with RESET SLAVE;
   e. extending SHOW SLAVE STATUS with a new line listing ignored servers;
   f. Differently from --replicate-same-server-id handling, the sql thread is not
      concerned with the ignored server id, because it's supposed that
      the relay log constists only of events that can not be unstoppable.
   g. Rotate and FD events originated by the current master listed
      in the ignored list are still relay-logged. There is issue with their termination.
  
  Use cases for this feature can be found on the bug report page.
[29 Apr 2008 10:00] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/46178

ChangeSet@1.2634, 2008-04-29 12:58:22+03:00, aelkin@mysql1000.(none) +8 -0
  Bug #25998 problems about circle replication
  Bug #27808 Infinite looping in circular replication
  
  In case of withdrawing one of the servers from the circular multi-master replication group
  events generated by the removed server could become unstoppable (bug#25998).
  That's because the originator had been the terminator of the own event flow.
  Other possibility of the unstoppable event is the cluster replication (bug#27808).
  In that case an event generated by a member of the same cluster and replicated to another member
  got accepted despite effects of the event had been propagated across the cluster via cluster
  communications.
  
  In order to fix both artifacts it is enough to introduce a new option for CHANGE MASTER.
  
  MASTER_IGNORE_SERVER_ID= some_server_id
  
  can be repeated multiple times to list all the servers from which events would not be put into
  relay log and therefore would not be executed.
  
  Fixed with implementing the feature.
  
  Properties of the feature:
  
   a. reporting an error if the id of an ignored server is the slave itself and
      its configuration on startup was with --replicate-same-server-id;
   b. overriding the existing MASTER_IGNORE_SERVER_ID list by the following 
      CHANGE MASTER ... MASTER_IGNORE_SERVER_ID=;
   c. preserving the existing list by CHANGE MASTER w/o MASTER_IGNORE_SERVER_ID;
   d. resetting the ignored server ids with RESET SLAVE;
   e. extending SHOW SLAVE STATUS with a new line listing ignored servers;
   f. Differently from --replicate-same-server-id handling, the sql thread is not
      concerned with the ignored server ids, because it's supposed that
      the relay log constists only of events that can not be unstoppable.
      In order to guarantee that, e.g in case of the circular replication with a failing
      server DBA needs to change master necessarily using the new option.
      
   g. Rotate and FD events originated by the current master listed
      in the ignored list are still relay-logged which does not create
      any termination issue.
  
  Two new lines to show slave status output are added: the list of ignored servers and
  the current master server id.
  
  Use cases for this feature can be found on the bug report page.
[29 Apr 2008 10:02] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/46179

ChangeSet@1.2634, 2008-04-29 13:00:20+03:00, aelkin@mysql1000.(none) +8 -0
  Bug #25998 problems about circle replication
  Bug #27808 Infinite looping in circular replication
  
  In case of withdrawing one of the servers from the circular multi-master replication group
  events generated by the removed server could become unstoppable (bug#25998).
  That's because the originator had been the terminator of the own event flow.
  Other possibility of the unstoppable event is the cluster replication (bug#27808).
  In that case an event generated by a member of the same cluster and replicated to another member
  got accepted despite effects of the event had been propagated across the cluster via cluster
  communications.
  
  In order to fix both artifacts it is enough to introduce a new option for CHANGE MASTER.
  
  MASTER_IGNORE_SERVER_ID= some_server_id
  
  can be repeated multiple times to list all the servers from which events would not be put into
  relay log and therefore would not be executed.
  
  Fixed with implementing the feature.
  
  Properties of the feature:
  
   a. reporting an error if the id of an ignored server is the slave itself and
      its configuration on startup was with --replicate-same-server-id;
   b. overriding the existing MASTER_IGNORE_SERVER_ID list by the following 
      CHANGE MASTER ... MASTER_IGNORE_SERVER_ID=;
   c. preserving the existing list by CHANGE MASTER w/o MASTER_IGNORE_SERVER_ID;
   d. resetting the ignored server ids with RESET SLAVE;
   e. extending SHOW SLAVE STATUS with a new line listing ignored servers;
   f. Differently from --replicate-same-server-id handling, the sql thread is not
      concerned with the ignored server ids, because it's supposed that
      the relay log constists only of events that can not be unstoppable.
      In order to guarantee that, e.g in case of the circular replication with a failing
      server DBA needs to change master necessarily using the new option.
      
   g. Rotate and FD events originated by the current master listed
      in the ignored list are still relay-logged which does not create
      any termination issue.
  
  Two new lines to show slave status output are added: the list of ignored servers and
  the current master server id.
  
  Use cases for this feature can be found on the bug report page.
[8 May 2008 17:52] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/46529

ChangeSet@1.2634, 2008-05-08 20:51:00+03:00, aelkin@mysql1000.dsl.inet.fi +13 -0
  Bug #25998 problems about circle replication
  Bug #27808 Infinite looping in circular replication
  
  In case of withdrawing one of the servers from the circular multi-master replication group
  events generated by the removed server could become unstoppable (bug#25998).
  That's because the originator had been the terminator of the own event flow.
  Other possibility of the unstoppable event is the cluster replication (bug#27808).
  In that case an event generated by a member of the same cluster and replicated to another member
  got accepted despite effects of the event had been propagated across the cluster via cluster
  communications.
  
  Both artifacts are fixable with introducing a new option for CHANGE MASTER.
  
  MASTER_IGNORE_SERVER_ID= some_server_id
  
  can be repeated multiple times to list all the servers from which events would not be put into
  relay log and therefore would not be executed.
  
  Fixed with implementing the feature.
  
  Properties of the feature:
  
   a. reporting an error if the id of an ignored server is the slave itself and
      its configuration on startup was with --replicate-same-server-id;
   b. overriding the existing MASTER_IGNORE_SERVER_ID list by the following 
      CHANGE MASTER ... MASTER_IGNORE_SERVER_ID=;
   c. preserving the existing list by CHANGE MASTER w/o MASTER_IGNORE_SERVER_ID;
   d. resetting the ignored server ids with RESET SLAVE;
   e. extending SHOW SLAVE STATUS with a new line listing ignored servers;
   f. Differently from --replicate-same-server-id handling, the sql thread is not
      concerned with the ignored server ids, because it's supposed that
      the relay log constists only of events that can not be unstoppable.
      In order to guarantee that, e.g in case of the circular replication with a failing
      server DBA needs to change master necessarily using the new option.
   g. Rotate and FD events originated by the current master listed
      in the ignored list are still relay-logged which does not create
      any termination issue.
   h. The possible list of ignored servers is sorted for the fastest processing of filtering
      algorithm.
  
  Two new lines to show slave status output are added: the list of ignored servers and
  the current master server id.
  
  Use cases for this feature can be found on the bug report page.
[8 May 2008 18:01] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/46530

ChangeSet@1.2634, 2008-05-08 21:00:35+03:00, aelkin@mysql1000.dsl.inet.fi +13 -0
  Bug #25998 problems about circle replication
  Bug #27808 Infinite looping in circular replication
  
  In case of withdrawing one of the servers from the circular multi-master replication group
  events generated by the removed server could become unstoppable (bug#25998).
  That's because the originator had been the terminator of the own event flow.
  Other possibility of the unstoppable event is the cluster replication (bug#27808).
  In that case an event generated by a member of the same cluster and replicated to another member
  got accepted despite effects of the event had been propagated across the cluster via cluster
  communications.
  
  Both artifacts are fixable with introducing a new option for CHANGE MASTER.
  
  MASTER_IGNORE_SERVER_ID= some_server_id
  
  can be repeated multiple times to list all the servers from which events would not be put into
  relay log and therefore would not be executed.
  
  Fixed with implementing the feature.
  
  Properties of the feature:
  
   a. reporting an error if the id of an ignored server is the slave itself and
      its configuration on startup was with --replicate-same-server-id;
   b. overriding the existing MASTER_IGNORE_SERVER_ID list by the following 
      CHANGE MASTER ... MASTER_IGNORE_SERVER_ID=;
   c. preserving the existing list by CHANGE MASTER w/o MASTER_IGNORE_SERVER_ID;
   d. resetting the ignored server ids with RESET SLAVE;
   e. extending SHOW SLAVE STATUS with a new line listing ignored servers;
   f. Differently from --replicate-same-server-id handling, the sql thread is not
      concerned with the ignored server ids, because it's supposed that
      the relay log constists only of events that can not be unstoppable.
      In order to guarantee that, e.g in case of the circular replication with a failing
      server DBA needs to change master necessarily using the new option.
   g. Rotate and FD events originated by the current master listed
      in the ignored list are still relay-logged which does not create
      any termination issue.
   h. The possible list of ignored servers is sorted for the fastest processing of filtering
      algorithm.
  
  Two new lines to show slave status output are added: the list of ignored servers and
  the current master server id.
  
  Use cases for this feature can be found on the bug report page.
[22 May 2008 15:16] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/46956

ChangeSet@1.2634, 2008-05-22 18:15:48+03:00, aelkin@mysql1000.dsl.inet.fi +11 -0
  Bug #25998 problems about circle replication
  Bug #27808 Infinite looping in circular replication
  
  In case of withdrawing one of the servers from the circular multi-master replication group
  events generated by the removed server could become unstoppable (bug#25998).
  That's because the originator had been the terminator of the own event flow.
  
  Other possibility of the unstoppable event is the cluster replication (bug#27808).
  In that case an event generated by a member of a cluster was
  replicated to another member, got accepted and executed.
  By that same time effects of the event had been already propagated
  across the cluster via the cluster communications.
  In order to avoid double-applying, a replication event generated 
  by a co-member of the cluster should not be accepted.
  
  Both variations of the unstoppable replication event are fixable with 
  introducing a new option for CHANGE MASTER: 
  
  IGNORE_SERVER_ID= some_server_id
  
  The option can be repeated multiple times if there are more than one server to ignore events from.
  
  Fixed with implementing the feature.
  
  Properties of the feature:
  
   a. reporting an error if the id of an ignored server is the slave itself and
      its configuration on startup was with --replicate-same-server-id;
   b. overriding the existing MASTER_IGNORE_SERVER_ID list by the following 
      CHANGE MASTER ... MASTER_IGNORE_SERVER_ID=;
   c. preserving the existing list by CHANGE MASTER w/o MASTER_IGNORE_SERVER_ID;
   d. resetting the ignored server ids with RESET SLAVE;
   e. extending SHOW SLAVE STATUS with a new line listing ignored servers;
   f. Differently from --replicate-same-server-id handling, the sql thread is not
      concerned with the ignored server ids, because it's supposed that
      the relay log constists only of events that can not be unstoppable.
      In order to guarantee that, e.g in case of the circular replication with a failing
      server DBA needs to change master necessarily using the new option.
   g. Rotate and FD events originated by the current master listed
      in the ignored list are still relay-logged which does not create
      any termination issue.
   h. The possible list of ignored servers is sorted for the fastest processing of filtering
      algorithm.
  
  Two new lines to show slave status output are added: the list of ignored servers and
  the current master server id.
  
  Use cases for this feature can be found on the bug report page.
[22 May 2008 17:57] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/46967

ChangeSet@1.2634, 2008-05-22 20:57:18+03:00, aelkin@mysql1000.dsl.inet.fi +11 -0
  Bug #25998 problems about circle replication
  Bug #27808 Infinite looping in circular replication
  
  In case of withdrawing one of the servers from the circular multi-master replication group
  events generated by the removed server could become unstoppable (bug#25998).
  That's because the originator had been the terminator of the own event flow.
  
  Other possibility of the unstoppable event is the cluster replication (bug#27808).
  In that case an event generated by a member of a cluster was
  replicated to another member, got accepted and executed.
  By that same time effects of the event had been already propagated
  across the cluster via the cluster communications.
  In order to avoid double-applying, a replication event generated 
  by a co-member of the cluster should not be accepted.
  
  Both variations of the unstoppable replication event are fixable with 
  introducing a new option for CHANGE MASTER: 
  
  IGNORE_SERVER_ID= some_server_id
  
  The option can be repeated multiple times if there are more than one server to ignore events from.
  
  Fixed with implementing the feature.
  
  Properties of the feature:
  
   a. reporting an error if the id of an ignored server is the slave itself and
      its configuration on startup was with --replicate-same-server-id;
   b. overriding the existing IGNORE_SERVER_ID list by the following 
      CHANGE MASTER ... IGNORE_SERVER_ID=;
   c. preserving the existing list by CHANGE MASTER w/o IGNORE_SERVER_ID;
   d. resetting the ignored server ids with RESET SLAVE;
   e. extending SHOW SLAVE STATUS with a new line listing ignored servers;
   f. Differently from --replicate-same-server-id handling, the sql thread is not
      concerned with the ignored server ids, because it's supposed that
      the relay log constists only of events that can not be unstoppable.
      In order to guarantee that, e.g in case of the circular replication with a failing
      server DBA needs to change master necessarily using the new option.
   g. Rotate and FD events originated by the current master listed
      in the ignored list are still relay-logged which does not create
      any termination issue.
   h. The possible list of ignored servers is sorted for the fastest processing of filtering
      algorithm.
  
  Two new lines to show slave status output are added: the list of ignored servers and
  the current master server id.
  
  Use cases for this feature can be found on the bug report page.
[30 May 2008 13:59] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/47258

ChangeSet@1.2634, 2008-05-30 16:59:03+03:00, aelkin@mysql1000.dsl.inet.fi +11 -0
  Bug #25998 problems about circle replication
  Bug #27808 Infinite looping in circular replication
  
  In case of withdrawing one of the servers from the circular multi-master replication group
  events generated by the removed server could become unstoppable (bug#25998).
  That's because the originator had been the terminator of the own event flow.
  
  Other possibility of the unstoppable event is the cluster replication (bug#27808).
  In that case an event generated by a member of a cluster was
  replicated to another member, got accepted and executed.
  By that same time effects of the event had been already propagated
  across the cluster via the cluster communications.
  In order to avoid double-applying, a replication event generated 
  by a co-member of the cluster should not be accepted.
  
  Both variations of the unstoppable replication event are fixable with 
  introducing a new option for CHANGE MASTER: 
  
  IGNORE_SERVER_ID= (sid_1, sid_2, ... )
  
  The option can be set to the empty list that resets.
  
  Fixed with implementing the feature.
  
  Properties of the feature:
  
   a. reporting an error if the id of an ignored server is the slave itself and
      its configuration on startup was with --replicate-same-server-id;
   b. overriding the existing IGNORE_SERVER_ID list by the following 
      CHANGE MASTER ... IGNORE_SERVER_ID= (list), the empty list arg nullifies
      the current ignored list;
   c. preserving the existing list by CHANGE MASTER w/o IGNORE_SERVER_ID;
   d. resetting the ignored server ids with RESET SLAVE;
   e. extending SHOW SLAVE STATUS with a new line listing ignored servers;
   f. Differently from --replicate-same-server-id handling, the sql thread is not
      concerned with the ignored server ids, because it's supposed that
      the relay log constists only of events that can not be unstoppable.
      In order to guarantee that, e.g in case of the circular replication with a failing
      server DBA needs to change master necessarily using the new option.
   g. Rotate and FD events originated by the current master listed
      in the ignored list are still relay-logged which does not create
      any termination issue.
   h. The possible list of ignored servers is sorted for the fastest processing of filtering
      algorithm.
  
  Two new lines to show slave status output are added: the list of ignored servers and
  the current master server id.
  
  Use cases for this feature can be found on the bug report page.
[3 Jun 2008 11:36] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/47357

ChangeSet@1.2634, 2008-06-03 14:36:57+03:00, aelkin@mysql1000.dsl.inet.fi +12 -0
  Bug #25998 problems about circle replication
  Bug #27808 Infinite looping in circular replication
  
  In case of withdrawing one of the servers from the circular multi-master replication group
  events generated by the removed server could become unstoppable (bug#25998).
  That's because the originator had been the terminator of the own event flow.
  
  Other possibility of the unstoppable event is the cluster replication (bug#27808).
  In that case an event generated by a member of a cluster was
  replicated to another member, got accepted and executed.
  By that same time effects of the event had been already propagated
  across the cluster via the cluster communications.
  In order to avoid double-applying, a replication event generated 
  by a co-member of the cluster should not be accepted.
  
  Both variations of the unstoppable replication event are fixable with 
  introducing a new option for CHANGE MASTER: 
  
  IGNORE_SERVER_IDS= (sid_1, sid_2, ... )
  
  The option can be set to the empty list that resets.
  
  Fixed with implementing the feature.
  
  Properties of the feature:
  
   a. reporting an error if the id of an ignored server is the slave itself and
      its configuration on startup was with --replicate-same-server-id;
   b. overriding the existing IGNORE_SERVER_IDS list by the following 
      CHANGE MASTER ... IGNORE_SERVER_IDS= (list), the empty list arg nullifies
      the current ignored list;
   c. preserving the existing list by CHANGE MASTER w/o IGNORE_SERVER_ID;
   d. preserving the ignored server ids after RESET SLAVE;
   e. extending SHOW SLAVE STATUS with a new line listing ignored servers;
   f. Differently from --replicate-same-server-id handling, the sql thread is not
      concerned with the ignored server ids, because it's supposed that
      the relay log constists only of events that can not be unstoppable.
      In order to guarantee that, e.g in case of the circular replication with a failing
      server DBA needs to change master necessarily using the new option.
   g. Rotate and FD events originated by the current master listed
      in the ignored list are still relay-logged which does not create
      any termination issue.
   h. The possible list of ignored servers is sorted for the fastest processing of filtering
      algorithm.
  
  Two new lines to show slave status output are added: the list of ignored servers and
  the current master server id (yet another feature for the user!).
  
  Use cases for this feature can be found on the bug report page.
[4 Jun 2008 16:39] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/47448

ChangeSet@1.2634, 2008-06-04 19:39:28+03:00, aelkin@mysql1000.dsl.inet.fi +12 -0
  Bug #25998 problems about circle replication
  Bug #27808 Infinite looping in circular replication
  
  In case of withdrawing one of the servers from the circular multi-master replication group
  events generated by the removed server could become unstoppable (bug#25998).
  That's because the originator had been the terminator of the own event flow.
  
  Other possibility of the unstoppable event is the cluster replication (bug#27808).
  In that case an event generated by a member of a cluster was
  replicated to another member, got accepted and executed.
  By that same time effects of the event had been already propagated
  across the cluster via the cluster communications.
  In order to avoid double-applying, a replication event generated 
  by a co-member of the cluster should not be accepted.
  
  Both variations of the unstoppable replication event are fixable with 
  introducing a new option for CHANGE MASTER: 
  
  IGNORE_SERVER_IDS= (sid_1, sid_2, ... )
  
  The option can be set to the empty list that resets.
  
  Fixed with implementing the feature.
  
  Properties of the feature:
  
   a. reporting an error if the id of an ignored server is the slave itself and
      its configuration on startup was with --replicate-same-server-id;
   b. overriding the existing IGNORE_SERVER_IDS list by the following 
      CHANGE MASTER ... IGNORE_SERVER_IDS= (list), the empty list arg nullifies
      the current ignored list;
   c. preserving the existing list by CHANGE MASTER w/o IGNORE_SERVER_IDS;
   d. preserving the ignored server ids after RESET SLAVE;
   e. extending SHOW SLAVE STATUS with a new line listing ignored servers;
   f. a new line in master.info with the list of ignored servers;
   g. Differently from --replicate-same-server-id handling, the sql thread is not
      concerned with the ignored server ids, because it's supposed that
      the relay log consists only of events that can not be unstoppable.
      In order to guarantee that, e.g in case of the circular replication with a failing
      server DBA needs to change master necessarily using the new option.
   h. Rotate and FD events originated by the current master listed
      in the ignored list are still relay-logged which does not create
      any termination issue.
   i. The possible list of ignored servers is sorted for the fastest processing of filtering
      algorithm.
  
  Two new lines to show slave status output are added: the list of ignored servers and
  the current master server id (yet another feature for the user!).
  
  Use cases for this feature can be found on the bug report page.
[18 Jul 2008 14:59] Andrei Elkin
pushed to 6.0-rpl
[18 Jul 2008 16:14] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/50050

2674 Andrei Elkin	2008-07-18
      bug#25998 
      
      updating results
[18 Jul 2008 16:15] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/50051

2674 Andrei Elkin	2008-07-18
      bug#25998 
      
      updating results
[30 Jan 2009 13:31] Bugs System
Pushed into 6.0.10-alpha (revid:luis.soares@sun.com-20090129165607-wiskabxm948yx463) (version source revid:luis.soares@sun.com-20090129163120-e2ntks4wgpqde6zt) (merge vers: 6.0.10-alpha) (pib:6)
[1 Feb 2009 18:32] Jon Stephens
Documented feature addition in the 6.0.10 changelog as follows:

        In circular replication, it was sometimes possible for an event
        to propagate such that it would be reapplied on all servers.
        (This could occur when the originating server was removed from
        the replication circle and so could no longer act as the
        terminator of its own events, as normally happens in circular
        replication.)

        In order to prevent this from occurring, a new
        IGNORE_SERVER_IDS option is introduced for
        the CHANGE MASTER TO statement. This option
        takes a list of replication server IDs; events having a server
        ID which appears in this list are ignored and not applied. For
        more information, see CHANGE MASTER TO Syntax.

Also updated http://dev.mysql.com/doc/refman/6.0/en/change-master-to.html, http://dev.mysql.com/doc/refman/6.0/en/show-slave-status.html, and http://dev.mysql.com/doc/refman/6.0/en/slave-logs-status.html with option syntax, changes in SHOW SLAVE STATUS output and of contents of master.info file.

Setting Status to Verified and requesting that this fix be backported to telco-6.3 and telco-6.4 trees, given that (a) we also support circular/multi-master replication for geo-replication and (b) there is another, highly relevant, potential application of this option unique to Cluster (see AElkin's comments in Bug#27808). 

I think it might be a serious mistake *not* to make this available to Cluster 6.3/6.4 users. 

I'm not sure whether it would be worth the time/effort to include this fix in telco-6.2, and I believe we should not include it in 5.1-main, since GA status precludes feature changes of this type.
[1 Sep 2009 9:08] Jon Stephens
See BUG#47037.
[3 Jun 2010 16:12] Paul DuBois
Addition to changelog entry:

In conjunction with the introduction of IGNORE_SERVER_IDS, SHOW SLAVE
STATUS has two new fields. Replicate_Ignore_Server_Ids displays
information about ignored servers. Master_Server_Id displays the
server_id value from the master.