Mariadb 同步与异步集群

Mariadb 同步与异步集群,mariadb,mysql-cluster,galera,Mariadb,Mysql Cluster,Galera,我在阅读Galera Cluster上的mariaDD知识库时发现: 同步复制和异步复制之间的基本区别在于,“同步”可以保证,如果更改发生在集群的一个节点上,那么它们将“同步”发生在其他节点上,或者同时发生在其他节点上。“异步”不保证在“主”节点上应用更改和将更改传播到“从”节点之间的延迟。延迟可以是短的,也可以是长的。这还意味着,如果主节点崩溃,一些最新的更改可能会丢失 在最后一句话中,我始终理解,即使异步集群设置中的从机上的更新不是同时执行的,但在主机上进行更新时,它会将这些更新记录到bin

我在阅读Galera Cluster上的mariaDD知识库时发现:

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


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

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

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

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