[MDEV-4487] FR: Allow replication from MySQL 5.6+ when GTID is enabled on the master Created: 2013-05-05 Updated: 2015-11-01 Resolved: 2015-10-09 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Replication |
| Fix Version/s: | 10.0.22, 10.1.8 |
| Type: | Task | Priority: | Minor |
| Reporter: | Elena Stepanova | Assignee: | Michael Widenius |
| Resolution: | Fixed | Votes: | 11 |
| Labels: | None | ||
| Issue Links: |
|
||||||||||||||||
| Description |
|
Currently if MySQL 5.6 is running with GTID enabled, replication to MariaDB does not work, it breaks on the first GTID-related event (e.g. 'Previous_gtids' or 'Gtid') with
If it's at all possible, I think it's fairly important to be able to replicate from MySQL 5.6 with GTID to MariaDB, as one of reasonable migration scenarios is that a production has the main pair of MySQL 5.6 master and slave (using GTID), and a second MariaDB slave is running in parallel. Of course it would be old-style replication, not using MariaDB GTID. That said, replication from MySQL 5.6 GTID to MySQL 5.6 without GTID does not work either (it fails with "The slave IO thread stops because the master has @@GLOBAL.GTID_MODE ON and this server has @@GLOBAL.GTID_MODE OFF"), so maybe it's impossible. |
| Comments |
| Comment by Michael Widenius [ 2014-01-14 ] | |
|
We think it's important that one can add MariaDB as a slave to a MySQL 5.6 with GTID enabled. The way we will do it is as follows:
If you are enabling GTID on MariaDB, any slave to that will be able to use GTID. This means that if one wants to replace a MySQL 5.6 slave with GTID with MariaDB, one has to find out the current log position with SHOW MASTER STATUS before one can enable the MariaDB slave. | |
| Comment by Richard Bensley [ 2014-05-02 ] | |
|
If you want heterogeneous replication, you should look at Tungsten Replicator. Mixing MariaDB 10 and MySQL 5.6/5.7 GTID replication streams would be a very bad idea. The whole point behind GTID is to make managed failovers, or slave promotion (in an emergency) easier. MariaDB and MySQL both have their own good solutions to this problem, but they don't have to be 100% compatible with each other. As Monty said, if you want a mixed environment, use the legacy format of log file + position. This is excluding all the other issues which arise as MySQL and MariaDB introduce their own features, which appear as differently formatted events in the binary log stream, i.e. checksums. If your application relies on mixed RDBMS for high-availability for a single RDBMS type, something is very wrong. | |
| Comment by Pavel Ivanov [ 2014-05-02 ] | |
|
> If your application relies on mixed RDBMS for high-availability for a single RDBMS type, something is very wrong. This is not wrong, this is exactly how high availability works. If one wants to upgrade from MySQL 5.6 to MariaDB 10.0 or back he must tolerate mixed environment for some time (at least for several days). That's why GTIDs in 5.6 are fundamentally broken – they don't support mixed environment (when some replicas have GTIDs turned on and some don't). Now how to manage reliable failovers in such mixed environment is a separate question, but at least replication itself should work. | |
| Comment by Michael Widenius [ 2015-10-09 ] | |
|
Replication from MySQL 5.6 -> MySQL 10.0 should now work. | |
| Comment by Ryan O [ 2015-10-31 ] | |
|
I have tried this without success on a MySQL 5.6.21 master and MariaDB 10.0.22 slave when GTID is enabled on the master. The error is:
Is there a way to have MariaDB ignore the domain id? | |
| Comment by Daniel Black [ 2015-10-31 ] | |
|
ryno@ryno.tv the problem here is that MariaDB is asking MySQL for the gtid_domain_id. It appears that you have MariaDB in GTID replication mode. MariaDB and MySQL have different GTID implementations, and that these are not compatible with each other. As such MariaDB cannot replicate from a MySQL master in GTID mode. CHANGE MASTER TO MASTER_USE_GTID=no; START SLAVE; will clear the error. | |
| Comment by Ryan O [ 2015-10-31 ] | |
|
@Daniel Black My impression from the MariaDB website was that this should work beginning with 10.0.22. https://mariadb.com/kb/en/mariadb/setting-up-replication/ Thanks, | |
| Comment by Elena Stepanova [ 2015-10-31 ] | |
|
ryno@ryno.tv, Using MASTER_USE_GTID with a master which does not support MariaDB GTIDs, be it MySQL (of any version), or MariaDB 5.5 or lower, is not supported. | |
| Comment by Ryan O [ 2015-11-01 ] | |
|
Understood. Thank you for such a quick response. |