在这里我得到了几个关于couchbase复制函数的问题,希望能得到解答。首先,我想谈谈我对沙发基地的一些理解;如果集群中有10个节点,并且我将每个桶中的副本数量设置为3个(实际上,我发现最大值是3,而且我找不到任何其他方法使它大于3),那么,这是否意味着bucket中的每个数据只能被复制到另外3个节点(我猜这3个节点应该是随机选择的,但是否可以手动选择)共10个节点;此外,如果10个节点中的某些节点停机,会造成数据丢失吗?
我把我的问题总结如下;
1, couchbase中replica number的最大值是3,对吗?如果错了,怎么会大于3呢
2,我猜这三个节点应该是随机选择的,但是否可以手动选择
3,如果我的理解是正确的,当我们发现一些节点处于停机状态时,就会有数据丢失。在这种情况下,我们怎样才能避免损失呢?
couchbase中replica number的最大值是3,对吗?如果错了,怎么会大于3呢
您可以拥有的最大副本数量是3,我们在生产中运行1个副本,但这一切都取决于您的集群有多大和性能影响。副本越多,节点间的通信和传输就越多。
当您有3个副本时,这意味着每个节点都将其数据复制到其他3个节点,这意味着您可以处理集群中的3个节点故障。这是可能发生的,但不太可能发生,更可能发生的是一台机器坏了,然后Couchbase可以自动故障转移,并提升在其他节点上保存的副本来服务请求/更新。
Couchbase的系统很好,因为它意味着你可以通过故障转移节点和自动重新平衡来伸缩。
我猜这三个节点应该是随机选择的,但我可以手动选择吗?
你不能说哪些节点的副本被持有,事实上我认为这是一件伟大的事情,所有的Couchbase的分片和复制过程都从开发人员手中拿走了,这是一个自动的过程。
如果我的理解是正确的,当我们发现一些节点处于停机状态时,它会有数据丢失。在这种情况下,我们如何避免数据丢失?
正如我之前所说的,如果一个节点宕机,那么一个副本就会被提升,如果有3个备份,你需要3个节点在你注意到发生了什么事情之前失败。在生产环境中,您应该已经为每个单独的节点(无论是New Relic还是Nagios等)设置了警告系统,以便在服务器死亡时进行报告。如果有一个灾难性的问题,你失去了超过4个节点,那么是的,你会有数据丢失。
请记住,Couchbase中的自动故障转移不是即时的,但仍然非常快。如果您需要整个集群的停机时间,例如服务器维护需要重新启动或其他事情,那么可以将节点故障转移,将其从集群中移除,在其上执行操作和任务,然后将其添加回集群并重新平衡。根据需要对尽可能多的节点再次执行这些停止,当我忘记设置需要重新启动系统的特定Linux内容时,我个人就会这样做。总的来说,为了避免数据丢失,监控您的服务器,对集群中的数据进行(每日/每小时)备份,并为您的工作速率准备好机器。
希望有帮助!