← Back to team overview

maria-developers team mailing list archive

Re: MariaDB and MySQL replication

 

Jan Lindström <jplindst@xxxxxxxxxxx> writes:

> My question is how compatible replication between
>
> 1) MySQL (master) -> MariaDB (slave)
> 2) MariaDB (master) -> MySQL (slave)

In general, it should work, though there are some limitations.
It also depends on versions.

I always try to make MariaDB (master) -> MySQL (slave) work. For example, when
new binlog events are introduced to MariaDB, the MariaDB master will not send
them to slaves that do not understand the new events (whether MySQL slave, or
older version of MariaDB), it will replace them with something compatible.
This is not the best tested part of the code though, so there may be bugs.

MySQL (master) -> MariaDB (slave) generally has limitations. This is the same
as MySQL (high version master) -> MySQL (low version master). This is due to
the MySQL replication teams approach, where you need to disable new features
on the master for things to work with old slaves. For example, MySQL 5.6
(master) -> MySQL 5.5 (slave) does not work out-of-the box, so MariaDB 5.5
slave is the same.

Generally, when incompatibilities are introduced in new MySQL versions used as
a master, we will backport to MariaDB at least to the extent that new MariaDB
versions will be able to replicate as slaves from a MySQL master without
needing any special configuration. Though it depends on time available and
priority against other work, for example there are known incompatibilities
that have not yet been fixed in 10.0 alpha but will hopefully be fixed by 10.0
GA.

Officially, replicating from new master to old slave is not supported (you
should upgrade slaves first). This applies mostly the same whether MySQL or
MariaDB or both are involved. Unofficially, as explained above, we do try to
make it work as well as reasonably possible on the MariaDB side.


> Before you say they are fully compatible, I point out at least
> following types at mysql_com.h that do not exist on MariaDB mysql_com.h:
>
> MYSQL_TYPE_TIMESTAMP2,
> MYSQL_TYPE_DATETIME2,
> MYSQL_TYPE_TIME2,

I do not know the details of this particular point (also you did not mention
any version info). Best is probably to test it and see, and then report your
findings and if needed we can file a bug for fixing things.

 - Kristian.


Follow ups