作者回复: 例如一个主分片不可用了。只要设置了副本分片,其中一个副本分片立即会将自己提升为主分片。同时会将自己的数据分配到一个新的replica上,有时候,我们只是重启一台机器,可以让这个reallocation的动作延迟一段时间再做,从而避免无谓的数据拷贝。
作者回复: 数据会根据文档id并结合相应的hash算法将数据分发到不同的分片。所以,不同的shard上的数据肯定是不一样的。 如果你说的是primay和replica上数据count不一样,那确实是有这样的可能。如果数据量不大,p和r上的数据应该会很快一致,如果数据量很小,数据从p到r需要很久,你需要检查集群是否存在性能问题
作者回复: 选主的过程应该很短,这个期间,如果有创建index或者分片reallocation有可能会出错。 故障转移期间,如果只是黄色变绿,应该不影响读写,因为副本会提升为主分片。集群变红,代表有主分片丢失,这个时候会影响读写
作者回复: node如果丢失,如果没有落盘。就有丢失的可能。如果节点重新回来,会从translog中恢复没有写入的数据。
作者回复: active master节点在正常的情况下,一般就是固定一台,不会随意切换。其他的master节点主要用来确保系统的高可用
作者回复: 报什么错?2和3都有相应日志,说明节点之间网络也没有问题啊
作者回复: 嗯 可以
作者回复: 几百万数据量的索引,一个主分片也是够的,需要设置一个副本分片,确保数据的安全。 关于分片数的设定,后面有专门的一节。
作者回复: 会转移的