web-dev-qa-db-ja.com

スレーブサーバーを別のサーバーのマスターにする

サーバーX、Y、Zの3つのサーバーがあります。
X上にメインのmysqlDB(innodb DB)があります。
XからYまでのマスタースレーブを作成しました。ここではすべてが正常に機能しています。
そして今、私はYをZのマスターとして設定しました。
Z(3番目のサーバー)でスレーブステータスを表示する場合

 show slave status\G 
 Slave_IO_State:マスターがイベントを送信するのを待っています
 ... 
 Slave_IO_Running:はい
 Slave_SQL_Running:はい
 ... 
 Seconds_Behind_Master:0 

しかし、データは同期されておらず、YからZに何も移動されていません。これを引き起こす原因について何か考えはありますか?
[〜#〜]編集[〜#〜]
サーバーYのmy.cnfに、次のconfがあります。

 log-slave-updates = ON 
 log-bin = mysql-bin 

しかし、 '%slave%'のような変数を表示するには

 '%slave%'; 
 + --------------------------- +-のような変数を表示します------ + 
 | Variable_name |値| 
 + --------------------------- + -------- + 
 | init_slave | | 
 | log_slave_updates |オフ| 
 | slave_compressed_protocol |オフ| 
 | slave_exec_mode | STRICT | 
 | slave_load_tmpdir |/tmp | 
 | slave_net_timeout | 3600 | 
 | slave_skip_errors |オフ| 
 | slave_transaction_retries | 10 | 
 | sql_slave_skip_counter | | 
 + --------------------------- + -------- + 

ご協力いただきありがとうございます

4
Alaa Alomari

Xから受信した更新がYによってそのバイナリログに記録されるように、Yを -log-slave-updates オプションで開始したことを確認してください。


サーバーYのmy.cnfに、次のconfがあります。

log-slave-updates=ON

スイッチ値の代わりにブール値を使用します。

log-slave-updates=true

結果:

mysql> show global variables like '%slave%';
+---------------------------+--------+
| Variable_name             | Value  |
+---------------------------+--------+
| init_slave                |        |
| log_slave_updates         | ON     |
| slave_compressed_protocol | OFF    |
| slave_exec_mode           | STRICT |
| slave_load_tmpdir         | /tmp   |
| slave_net_timeout         | 3600   |
| slave_skip_errors         | OFF    |
| slave_transaction_retries | 10     |
| sql_slave_skip_counter    |        |
+---------------------------+--------+
9 rows in set (0.00 sec)
5
quanta