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