バックアップ用にmaster(A
)-slave(B
)-slave(C
)モードのMySQLインスタンスを作成しました。しかし、今日、モードが正常に機能するかどうかを確認すると、A
とB
は問題ないことがわかりました。つまり、B
はA
からbinlogを取得できますが、B
はそのbinlogに更新を書き込みません。したがって、C
はB
と同期できません。
調査の結果、B
の新しいbinlogファイルは120バイトであり、MySQLのログにエラーはないことがわかりました。 sql_log_bin
はオンです。だから私は問題を引き起こす理由が何であるかわかりません。追加として提供できるのは、新しいbinlogの作成時間は、mysqldump
でB
を作成したときです。それで、mysqldump
イベントとbinlog書き込みイベントの間に何らかの関係があるのではないかと思いますか?誰かが私を助けてくれることを願っています、どうもありがとう。
B
のマスターステータス:
mysql> show master status;
+-----------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| mysqlbin.000016 | 120 | | | |
+-----------------+----------+--------------+------------------+-------------------+
B
のbinlogファイルサイズステータス:
ll /data/mysql/
-rw-rw----. 1 mysql mysql 166 7月 7 02:00 mysqlbin.000015
-rw-rw----. 1 mysql mysql 120 7月 7 02:00 mysqlbin.000016
-rw-rw----. 1 mysql mysql 288 7月 7 02:00 mysqlbin.index
B
's mysqldump
SQL:
mysqldump --master-data=2 --all-databases --flush-logs --user=xxx --socket=/tmp/mysqld.sock -A > /tmp/backup.sql
チェーンレプリケーションがあります
マスター->スレーブA->スレーブB(スレーブAはマスターのスレーブであり、スレーブBはスレーブAのスレーブです)
あなたが言ったように、スレーブサーバー(A)ではバイナリログが有効になっています。
さらに、スレーブはマスターサーバーから受信した更新を自身のバイナリログに記録しないため、
log_slave_updates
を有効にする必要があります。このオプションは、SQLスレッドによって実行された更新を独自のバイナリログに記録するようにスレーブに指示します。
したがって、スレーブAでlog_slave_updates
を有効にする必要があります。