为什么 innodb primary selection 不考虑 "consistency" with old primary?

why innodb primary selection does not consider "consistency" with the old primary?

当我读取从主服务器到InnoDB 辅助服务器的数据复制时。令我惊讶的是复制是异步的或至少是半异步的。所以我有以下问题,在异步复制的情况下,主节点可能会出现故障,其中一些辅助节点没有接收到复制信息。并且随后选择下一个主节点不会考虑哪个辅助节点最接近旧的主节点,因此可能会选择一个没有最新异步复制的节点。这样是不是可以断定主从集群不一致?

这个问题和我回答的一个老问题几乎一样:Does mySQL replication have immediate data consistency?

你说得对,异步副本集中存在数据丢失的风险。如果主节点丢失,它的副本可能没有应用最新的更改。即使在 MySQL 调用 "semi-synchronous," 的情况下,副本也可能 收到 所有事件的日志,但尚未应用它们。

在故障转移场景中,最安全的做法是副本保持只读状态,并且在完全 "caught up" 应用所有未决日志之前不允许客户端写入。

您可以自行设计应用程序以容忍发生这种情况时的延迟。

我们希望所有内容都完全一致并且没有延迟可用,但唯一可能的方法是在主服务器上提交的每个事务都必须等待相同的更改应用到副本服务器上。

在大多数公司中,这不是他们愿意接受的权衡。他们宁愿在正常情况下在主服务器上尽可能快地处理事务 运行,并接受故障转移期间数据丢失的小风险。