在 MySQL 上使用 Tungsten 将更改从另一个主服务器中继到从服务器

jer*_*909 6 mysql replication tungsten-replicator

我正在尝试设置多主类型的复制,每个主都有一个使用 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
Run Code Online (Sandbox Code Playgroud)

我已经浏览文档和教程几天了,似乎无法弄清楚最后一部分。我试图设置一个从 $MASTER1 到 $SLAVE1 的继电器,但由于没有很多关于设置继电器的文档(至少从我能找到的)我不知道我是否正确地做(或者如果我甚至应该首先这样做)。

小智 1

我没有类似设置的直接经验,但您可能需要在主服务上设置此选项:

--log-slave-updates           Should slaves log updates to binlog [false]
Run Code Online (Sandbox Code Playgroud)

默认情况下,应用程序所做的更改不会写入二进制日志。当 Tungsten 监视 binlog 以检测更改时,主提取器将不会看到应用程序所做的这些更改,除非您指定上面的选项。