2015年12月11日金曜日

MySQL Routerつらくない(MySQL Fabricと組み合わせて使ってみる編)

この記事は MySQL Fabric&Routerつらくない Advent Calendar 2015 の10日目のはずだったけれど日付が変わっちゃった残念な記事です(´・ω・`)


$ mysqlfabric --param=protocol.xmlrpc.address=172.17.3.202:32274 group lookup_servers myfabric
Fabric UUID:  5ca1ab1e-a007-feed-f00d-cab3fe13249e
Time-To-Live: 1

                         server_uuid           address    status       mode weight
------------------------------------ ----------------- --------- ---------- ------
7dbe3da8-9f4f-11e5-ad3e-0242ac1103ce 172.17.3.206:3306 SECONDARY  READ_ONLY    1.0
81392c70-9f4f-11e5-ad15-0242ac1103d0 172.17.3.208:3306 SECONDARY  READ_ONLY    1.0
84d6578f-9f4f-11e5-ad3b-0242ac1103d2 172.17.3.210:3306   PRIMARY READ_WRITE    1.0

まずはこんなレプリケーションを組んでMySQL Fabricに登録させておく。
MySQL FabricのIPアドレスは172.17.3.202。MySQL RouterのIPアドレスは172.17.3.218。
MySQL Fabric上のグループ名はmyfabric。


[fabric_cache:dummy]
address     = 172.17.3.202
user        = admin

[routing:master]
bind_address= 0.0.0.0:13306
mode        = read-write
destinations= fabric+cache://dummy/group/myfabric

[routing:slave]
bind_address= 0.0.0.0:23306
mode        = read-only
destinations= fabric+cache://dummy/group/myfabric

MySQL Routerに追加したコンフィグはこんな感じ。
日々の覚書: MySQL Routerつらくない(yumでインストールして動かしてみた編) の時にはIPアドレスを直書きしていたdestinationsに、 "fabric+cache://.."でFabric Cacheプラグインを指定できる。

まずはfabric_cache:* セクションでMySQL Fabricサーバーの情報を定義する。コロンのあとはMySQL Fabricを一意に識別する識別子になる。今回はdummyにしてみた。
addressはMySQL FabricサーバーのIPアドレス。特別指定してない場合はポート32275(MySQL FabricがMySQLプロトコルを喋る方のポート)に接続しに行く。
userはMySQLサーバー側のユーザーではなく、MySQL Fabricのユーザー(`mysqlfabric manage setup`した時に聞かれるやつ)

routing:*セクションで前回と変わってるのはdestinationsのところだけ。"fabric+cache://"は決め打ち、"dummy"の部分がfabric_cache:*セクションで命名した名前、"group"は今のところ決め打ち(たぶん、`mysqlfabric group lookup_servers myfabric` のgroupだと思う)、最後がMySQL Fabric上のグループ名。今回はmyfabric。


$ mysql -h 172.17.3.218 -P 13306 -u ap

mysql> SELECT current_user();
+----------------+
| current_user() |
+----------------+
| ap@%           |
+----------------+
1 row in set (0.00 sec)

mysql> SELECT @@hostname;
+--------------+
| @@hostname   |
+--------------+
| a714ddbc4a72 |
+--------------+
1 row in set (0.00 sec)

MySQL Fabricの向こう側、実際のMySQLサーバーに接続するためのユーザー名はクライアント側が指定する。


$ mysql -h 172.17.3.218 -P 23306 -u ap -e "SELECT @@hostname"
+--------------+
| @@hostname   |
+--------------+
| 3a72ab61519c |
+--------------+

$ mysql -h 172.17.3.218 -P 23306 -u ap -e "SELECT @@hostname"
+--------------+
| @@hostname   |
+--------------+
| 548859aa0c72 |
+--------------+

$ mysql -h 172.17.3.218 -P 23306 -u ap -e "SELECT @@hostname"
+--------------+
| @@hostname   |
+--------------+
| 3a72ab61519c |
+--------------+

$ mysql -h 172.17.3.218 -P 23306 -u ap -e "SELECT @@hostname"
+--------------+
| @@hostname   |
+--------------+
| 548859aa0c72 |
+--------------+

スレーブ側に割り当てたポート23306にアクセスすれば、ラウンドロビン。

え、なんかこれホントにつらくなくない…?


MySQL :: MySQL Router :: 5.2 Fabric Cache Plug-in

0 件のコメント :

コメントを投稿