マルチソースレプリケーションに関しては、以前、これはすごい!mariadb10.0 でマルチソースレプリケーションが可能ににて紹介いたしました。マルチソースレプリケーション環境下での、my.cnf (mariadbでは、server.cnf)のちょっと変わったケースでのレプリケーション設定について今回は触れて見ようと思います。
下図のようなケースの場合、server.cnf にはどのような設定を加えれば良いでしょうか?
要件
- SERVERXは、SERVER1,SERVER2からのレプリケーションを受ける
- SERVER1の中には、schema1というデータベースが存在し、数あるテーブルの中からtable1のみSERVERXにレプリケーションする
- 上記SERVER1内の、schema1のtable1は、SERVERX内では、schemaXのtable1としてレプリケーションする
- SERVER2の中には、schema2というデータベースが存在し、数あるテーブルの中からtable1のみSERVERXにレプリケーションする
- 上記SERVER2内の、schema1のtable1は、SERVERX内では、schemaYのtable1としてレプリケーションする
- 上記図の通り、各schema内に存在するtable1以外のテーブルはすべてレプリケーションしない
といった感じでしょうか?
実装方法
マルチソースレプリケーション設定方法は割愛いたします。(前に書いたからw)以下では上記のような構成を実現するために、どのように、server.cnf にレプリケーション設定を入れるかをメインに説明いたします
で早速なのですが・・
- こんなかんじで、server.cnfに記載します
[mysqld]
・
・
# SERVERXのスキーマに合わせて、server1,server2のスキーマを、rewriteする
conn1.replicate-rewrite-db="schema1->schemaX"
conn2.replicate-rewrite-db="schema2->schemaY"
# 上記で名前を変更したスキーマをレプリケートする
conn1.replicate-do-db="schemaX"
conn2.replicate-do-db="schemaY"
# table1 限定でレプリケーションする
conn1.replicate-do-table=schemaX.table1
conn2.replicate-do-table=schemaY.table1
とこんな感じになると思います。
基本構文は、MySQL5.X系とか、Maria5.5系と同じです。マルチソースの環境では、コネクションの名前(ここでは、conn1,2)という接頭子をつけてね!という話でした。接頭子については、さきほどのページに説明しております