2014-10-08 84 views
0

我正在读上加莱拉集群的mariaDD知识基础,我碰到这样的:的同步和异步聚类

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

对于最后一句,我一直都明白,即使异步集群设置中的从站更新没有在同一时间执行它会在主服务器上进行更新时将这些更新记录到bin日志文件中。因此,如果主服务器在所有数据传递到从服务器之前崩溃,则在主服务器恢复后,由于bin日志文件记录更新,更新仍将继续。请有人告诉我,如果我的理解是错误的,请澄清在这个问题上。谢谢。

回答

1

在你的普通复制对的例子中,奴隶会在主人回来后迎头赶上。假设主人确实回来了,你不会真的丢失数据,但是如果主人永久死亡,数据就会丢失。您提到的知识库文章正在讨论复制延迟,而不是复制流的整体完整性。

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

Galera确保将写入发送到群集中的每个节点,然后在任何节点上实际提交写入,因此一旦完成写入的节点落实写入,所有其他节点将落实相同的写法。随着加莱拉,所有的写作基本上同时发生在每个节点上。在正常操作期间任何时候丢失任何节点都不会导致任何数据丢失。