我在Azure上使用Mariadb将多个被分片的数据库整合到一台服务器上
首先,从注意事项开始
2019/03/05時点では、Azure Database for MariaDB はpreviewです。
12月にはGAされているみたいです。@cherubim1111 さんありがとうございます!
https://blogs.technet.microsoft.com/mssvrpmj/2018/12/21/announcing-the-general-availability-of-azure-database-for-mariadb/
ただ、サポートリクエストを作る画面から見るとpreviewと表記されています…
ドキュメントには記載がないので出来なくなるかもしれません…orz
正式にサポートされると正直嬉しい。
关于 “多源复制”
一般来说,当提到复制时,我们通常会想到一个主服务器和多个从服务器的配置。但是,“多源复制”则可以实现多个主服务器和一个从服务器的逆向配置。抱歉,这只是一个大致的解释。

根据模式和数据的不同,即使在分片数据库中,只要将ID进行哈希分配,就可以合并数据。
设定步骤
-
- !!MariaDBとMySQLでは設定方法が違うので注意してください!!
- 設定的にAuzre Database for MySQLではマルチソースは動かないと思います。
常规方法
MySQL [(none)]> SET @@default_master_connection='SERVER_NAME';
MySQL [(none)]> CHANGE MASTER TO
MASTER_HOST='xxx.xxx.xxx.xxx',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=xxxxxx;
在MariaDB中,
设置@@default_master_connection=’SERVER_NAME’非常重要。
如果没有这个设置,就无法进行正常的复制。
在Azure上的操作
在Azure平台上的步骤
通过Azure进行的方法
在Azure中的操作方式
使用Azure的方法
MySQL [(none)]> SET @@default_master_connection='SERVER_NAME';
MySQL [(none)]> CALL mysql.az_replication_change_master('xxx.xxx.xxx.xxx', 'repl', 'password', 3306, 'mysql-bin.000001', xxxxxx, '');
MySQL [(none)]> CALL mysql.az_replication_start;
在Azure上,由于通常的方法无法进行复制,因此需要调用Azure提供的过程。
-
- Azure上でのレプリケーション設定方法については以下から
https://docs.microsoft.com/ja-jp/azure/mariadb/howto-data-in-replication
请注意!
-
- インスタンスの再起動を実行するとレプリケーションが止まってしまいます。
正確には、複数動いているレプリケーションスレッドのうち1本だけは動きます。
stopしてstartしてもレプリケーションは再開されません。removeして再度登録して直してください。
レプリケーションが止まった時点のポジションを控えて再度レプリケーションを組むと再開できます。
感觉
虽然还处于预览阶段,但只要能使用多个数据源,我觉得还是有选择Azure Database for MariaDB的空间的。此外,在其他云平台上无法将MariaDB作为PaaS进行提供,目前只能选择Azure,因此希望保留可供像开源软件一样的人使用的功能…呼唤一下,祈祷中( ˘ω˘)