我制作了一个master( A
)-slave( B
)-slave( C
)模式的MySQL实例作为备份。但是今天当我看到模式是否正常时,我发现A
并且B
可以。即B
可以从 获取 binlog A
,但B
不会将更新写入其 binlog。所以C
不能同步B
。
经过一番调查,我看到B
新的 binlog 文件是 120 字节,并且 MySQL 的日志中没有任何错误。sql_log_bin
是开的。所以我不知道导致问题的原因是什么。我可以补充的是,新的 binlog 的创建时间是我创建mysqldump
on的时间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
的查询mysqldump
语句:
mysqldump --master-data=2 --all-databases --flush-logs --user=xxx --socket=/tmp/mysqld.sock -A > /tmp/backup.sql
你有链复制作为
Master--> SLAVE A--> SLAVE B (Slave A is Slave of Master and Slave B is slave of Slave A)
如您所说,在从属服务器(A)上启用了二进制日志。
所以你需要
log_slave_updates
在 Slave A上启用。请查看提高复制性能。