0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Azure for Mariadbで、複数にシャーディングされたDBを1台にまとめてみた

Last updated at Posted at 2019-03-05

#まず、注意事項から

"multi source replication" について

通常レプリケーションと聞くと、master1台/slaveN台といった構成を思い浮かべると思いますが
"multi source replication" はmasterN台/slave1台といった、逆の構成を取ることが可能になります。
※ざっくり説明ですみません

スクリーンショット 2019-03-05 15.29.14.png

スキーマやデータによりますが、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側が用意しているプロシージャを呼び出します。

!!!注意!!!

  • インスタンスの再起動を実行するとレプリケーションが止まってしまいます。
    • 正確には、複数動いているレプリケーションスレッドのうち1本だけは動きます。
    • stopしてstartしてもレプリケーションは再開されません。removeして再度登録して直してください。
  • レプリケーションが止まった時点のポジションを控えて再度レプリケーションを組むと再開できます。

所感

まだpreviewですがマルチソースが利用できるだけでもAzure Database for MariaDBを選択する余地はある気がします。また、他のクラウド上ではMariaDBをPaaSとして提供できていなくて今はAzure一択なので、OSSライクな人々のために使える機能はそのまま残してほしいなぁ...っと、祈っております( ˘ω˘)

0
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?