
私は3つのサーバー、サーバーX、Y、Zを持っています
。Xにはメインのmysql DB(innodb DB)があります。X
からYへのマスタースレーブを作成しました。ここではすべて正常に動作しています。
そして今、YをZのマスターとして設定しました。Z
(3番目のサーバー)でスレーブステータスを表示すると、
スレーブステータスを表示\G Slave_IO_State: マスターがイベントを送信するのを待機中 ... スレーブIO実行中: はい スレーブSQL実行中: はい ... マスターより遅れている秒数: 0
しかし、データは同期されておらず、Y から Z に何も移動されていません。この原因について何か考えはありますか?
編集
サーバー Y の my.cnf には、次の conf があります。
ログスレーブ更新=ON ログ bin = mysql bin
しかし、「%slave%」のような変数を表示すると
'%slave%' のような変数を表示します。 +---------------------------+--------+ | 変数名 | 値 | +---------------------------+--------+ | スレーブを初期化 | | | log_slave_updates | オフ | | スレーブ圧縮プロトコル | オフ | | スレーブ実行モード | 厳密 | | スレーブロードtmpディレクトリ | /tmp | | スレーブネットタイムアウト | 3600 | | スレーブ スキップ エラー | オフ | | スレーブトランザクション再試行 | 10 | | sql_slave_skip_counter | | +---------------------------+--------+
ご協力いただきありがとうございます
答え1
Yが以下の条件を満たしていることを確認してください。--logスレーブ更新オプションにより、X から受信した更新が Y によってバイナリ ログに記録されます。
サーバー 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)