Mysql集群binlog复制顺序

Mysql Cluster binlog replication order

我们的 mysql 复制堆栈面临一个问题:我们实际上有一个 mysql ndb 集群 (7.6.11) 作为主节点和一个 innoDB(5.7) 作为从节点。一切似乎都在正常工作,直到我们意识到某些语句没有被执行到从站中。

长话短说:master binlog 中的一些语句被写入顺序切换(执行顺序!= log 顺序)并且当 slave 试图复制它时,它面临 foreign_key 约束错误。

我们检查了配置,一切正常:

master(集群)配置:

-binlog_order_commits=ON
-innodb_api_enable_binlog=OFF
-innodb_flush_log_at_trx_commit=1
-log_bin=ON
-log_slave_updates=OFF
-slave_parallel_type=DATABASE
-slave_parallel_workers=0
-slave_preserve_commit_order=OFF
-sync_binlog=1
-ndb_log_binlog_index
-ndb_log_updated_only=ON
-ndb_log_update_as_write=OFF

slave(innodb)配置:

-binlog_order_commits=ON
-innodb_api_enable_binlog=OFF
-innodb_flush_log_at_trx_commit=1
-log-bin
-log_slave_updates=ON
-slave_parallel_type=DATABASE
-slave_parallel_workers=0
-slave_preserve_commit_order=OFF
-sync_binlog=1

我们是不是毁了什么东西?

对于那些到达此 post 并遇到相同问题的人,我设法完成了正确的顺序设置:

  • TimeBetweenEpochs=0

我实际上正在评估此更改的影响,但至少复制按预期工作。