web-dev-qa-db-ja.com

MySQL上のTungstenを使用して、別のマスターからスレーブに変更を中継する

タングステンを使用して、各マスターが追加のスレーブを持つマルチマスタータイプのレプリケーションをセットアップしようとしています。例として、4つのホスト(A、B、C、D)があり、ホストAとCがマスターであり、BがAのスレーブであり、DがCのスレーブであるとします。

現在の構成では、データをAに追加します。これは、スレーブBと他のマスターCに問題なく複製されます。 Cにデータを追加すると、同じことが起こり、そのスレーブDが更新され、他のマスターAが更新されます。問題は、Aが更新されたときに、Dが変更を認識しないことです。 AがDを更新するのではなく、DがCからすべての更新を取得するようにします。これにより、BがAからすべての更新を取得するようになります。

これが私が取り組んできた設定スクリプトです。

MASTER1='master1-ca' #<-- 'A' from example
MASTER2='master2-va' #<-- 'C' from example
SLAVE1='slave1-ca'   #<-- 'B' from example
SLAVE2='slave2-va'   #<-- 'D' from example

./tools/tpm configure defaults  \
    --reset \
    --replication-user=tungsten \
    --replication-password=password \
    --home-directory=/home/tungsten/PCS_DB \
    --datasource-mysql-conf=/etc/mysql/my.cnf \
    $( cat ./cookbook/security.options ) \
    --start

./tools/tpm configure PCS_Multi \
    --masters=$MASTER1,$MASTER2 \
    --master-services=west,east \
    $( cat ./cookbook/security.options ) \
    --topology=all-masters

./tools/tpm configure west \
    --hosts=$MASTER1,$SLAVE1 \
    --slaves=$SLAVE1 \
    $( cat ./cookbook/security.options ) \
    --master=$MASTER1 

./tools/tpm configure east \
    --hosts=$MASTER2,$SLAVE2 \
    --slaves=$SLAVE2 \
    $( cat ./cookbook/security.options ) \
    --master=$MASTER2

./tools/tpm install

私は数日間ドキュメントとチュートリアルを調べてきましたが、この最後の部分を理解できないようです。 $ MASTER1から$ SLAVE1にリレーをセットアップしようとしましたが、リレーのセットアップに関するドキュメントがあまりないため(少なくとも私が見つけたものから)、正しく実行しているかどうか(またはそもそもそうするべきです)。

6
jerr909

私は同様の設定を直接経験したことはありませんが、おそらくマスターサービスでこのオプションを設定する必要があります。

--log-slave-updates           Should slaves log updates to binlog [false]

デフォルトでは、アプライヤーによって行われた変更はbinlogに書き込まれません。 Tungstenはbinlogを監視して変更を検出するため、上記のオプションを指定しない限り、マスターエクストラクターはアプライヤーによって行われた変更を確認しません。

1
ento