Multi-source replication
(MDEV-253)
|
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Replication |
| Affects Version/s: | None |
| Fix Version/s: | 10.3.23 |
| Type: | Technical task | Priority: | Minor |
| Reporter: | Elena Stepanova | Assignee: | Michael Widenius |
| Resolution: | Done | Votes: | 1 |
| Labels: | None | ||
| Issue Links: |
|
||||||||||||
| Description |
|
Semisync replication doesn't properly distinguish multiple master connections, which causes different problems. For example, if one master has the semisync plugin, and another one doesn't, trying to enable semisync on slave makes replication from both masters abort. The actual errors vary. With the test case below, most often I'm getting On the connection with the master which does not have the semisync plugin:
On the connection with the master which has the semisync plugin:
or
If we decide to support it, the corresponding variables Rpl_semi_sync_slave_status and rpl_semi_sync_slave_enabled should probably be made session-aware. The test case is draft, it should not be added to the suite as is. It contains sleeps that are unreliable and slow, when the problem is fixed, they should be replaced with proper waits and syncs. Please make sure you have at least revno 3438 from 10.0-base, since the test uses reset_master_slave.inc include file which was added there. If you haven't got the error on the first attempt, give it another try, sometimes it gets lucky and passes, apparently there is some kind of a race condition. Test case:
|
| Comments |
| Comment by Michael Widenius [ 2013-06-09 ] |
|
Because semi-sync is a plugin, this is not a trivial task to fix. What would need to be done:
Add connection name to Binlog_relay_IO_param; This is needed to be able to lockup the correct value for rpl_semisync for the current master. |
| Comment by Elena Stepanova [ 2013-08-26 ] |
|
|
| Comment by Kristian Nielsen [ 2015-01-09 ] |
|
I believe MySQL 5.7 has multi-source? |
| Comment by Michael Widenius [ 2020-04-15 ] |
|
This is marked as 'done' as semisync, starting from MariaDB 10.3, is not a plugin anymore and this should hopefully solve this issue. |