为什么innodb主选择不考虑与旧主选择“一致”?

问题描述 投票:1回答:1

当我读取数据从InnoDB的主服务器到辅助服务器的复制时。令我惊讶的是复制是异步的或至少是半异步的。因此,我有以下问题:在异步复制的情况下,主节点可能会崩溃,其一些辅助节点可能未收到复制信息。而且,下一个主节点的事后选择不会考虑哪个辅助节点最接近旧的主节点,因此可以选择一个没有某些最新异步复制的节点。这样,我们可以得出结论,主次集群是不一致的吗?

mysql innodb database-replication
1个回答
1
投票

此问题与我回答的旧问题几乎相同:Does mySQL replication have immediate data consistency?

您是对的,异步副本集中存在数据丢失的风险。如果主数据库丢失,则其副本可能未应用最新更改。即使在MySQL所谓的“半同步”中,副本也可能具有所有事件的日志,但尚未应用它们。 在故障转移方案中,如果副本保持只读状态,并且不允许它自己被客户端写入,直到它通过应用所有未决日志完全“赶上”为止,这是最安全的。

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

我们希望所有内容都完全一致且无延迟,但是唯一可行的方法是,如果在主数据库上提交的每个事务都必须等待对副本应用相同的更改。

[在大多数公司中,这不是他们愿意接受的折衷方案。他们宁愿让事务在正常情况下在主数据库上尽可能快地运行,并接受故障转移期间数据丢失的风险很小。

© www.soinside.com 2019 - 2024. All rights reserved.