#まず、注意事項から
-
2019/03/05時点では、Azure Database for MariaDB はpreviewです。- 12月にはGAされているみたいです。@cherubim1111 さんありがとうございます!
- ただ、サポートリクエストを作る画面から見るとpreviewと表記されています...
- ドキュメントには記載がないので出来なくなるかもしれません...orz
- 正式にサポートされると正直嬉しい。
"multi source replication" について
通常レプリケーションと聞くと、master1台/slaveN台といった構成を思い浮かべると思いますが
"multi source replication" はmasterN台/slave1台といった、逆の構成を取ることが可能になります。
※ざっくり説明ですみません
スキーマやデータによりますが、idをhash振り分けしていればシャーディングされたDBでもデータをマージすることが可能です。
設定方法
- !!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では
SET @@default_master_connection='SERVER_NAME';
この設定が大事です。
これが無いと普通のレプリケーションになってしまいます。
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上でのレプリケーション設定方法については以下から
!!!注意!!!
- インスタンスの再起動を実行するとレプリケーションが止まってしまいます。
- 正確には、複数動いているレプリケーションスレッドのうち1本だけは動きます。
- stopしてstartしてもレプリケーションは再開されません。removeして再度登録して直してください。
- レプリケーションが止まった時点のポジションを控えて再度レプリケーションを組むと再開できます。
所感
まだpreviewですがマルチソースが利用できるだけでもAzure Database for MariaDBを選択する余地はある気がします。また、他のクラウド上ではMariaDBをPaaSとして提供できていなくて今はAzure一択なので、OSSライクな人々のために使える機能はそのまま残してほしいなぁ...っと、祈っております( ˘ω˘)