1

我正在阅读 Galera Cluster 上的 mariaDD 知识库,我遇到了这个:

同步复制和异步复制的基本区别在于,“同步”保证如果更改发生在集群的一个节点上,它们会“同步”或同时发生在其他节点上。“异步”不保证在“主”节点上应用更改与将更改传播到“从”节点之间的延迟。延迟可以很短也可以很长。这也意味着如果主节点崩溃,一些最新的更改可能会丢失

最后一句话,我一直明白,即使在异步集群设置中从属设备上的更新不是同时执行的,它也会在主设备上进行更新时将这些更新记录到一个 bin 日志文件中。因此,如果主服务器在所有数据传递到从服务器之前崩溃,则当主服务器恢复时,更新仍然会继续进行,因为 bin 日志文件记录了更新。有人可以告诉我我的理解是否错误,并请为我澄清此事。谢谢。

4

1 回答 1

2

在您的正常复制对示例中,从属服务器将在主服务器返回后赶上。假设主人确实回来了,你不会真的丢失数据,但如果主人永久死亡,数据就会丢失。您提到的知识库文章是在讨论复制延迟,而不是复制流的整体完整性。

在正常复制的情况下,如果从 io 线程(从主服务器获取复制事件的部分)能够跟上主服务器,那么如果主服务器崩溃,从服务器可能只会丢失几秒钟。但是,如果它无法跟上并且例如落后 1 小时,则从站将无法访问 1 小时的数据。另一种您可能无法访问从属设备上的数据的方法是,如果您设置了最大中继日志大小并且已达到该大小。

Galera 确保在任何节点上实际提交写入之前将写入发送到集群中的每个节点,因此一旦完成写入的节点提交写入,所有其他节点将提交相同的写入。使用 galera,所有写入基本上在每个节点上同时发生。在正常运行过程中任何时候丢失任何一个节点都不会造成任何数据丢失。

于 2014-10-09T17:43:32.903 回答