如果我们有6个分区,复制因子为2,paxos-single-replica-limit为3(一旦我们减少到3个节点,复制因子变为1)。突然间,由于级联效应,3个节点死亡。可能会发生一些分区无法迁移的情况。但在本文中,集群将继续运行,就像什么都没发生一样。在强一致性模式的情况下,分区可能会变成死分区,我们必须手动恢复它。
我怎么知道什么时候有数据丢失,这样我就可以从以前的快照备份。
如果重要的话,我们在社区版。
在强一致性模式下(需要企业许可),不会有任何数据丢失。如果大部分集群都死亡了,则需要手动恢复死亡分区。
在没有强一致模式(默认)的情况下,可以在所有活动的aerospike节点的日志中查找"rebalanced: expected-migrations"
。结果看起来就像下面的
Jun 27 2022 19:11:22 GMT: INFO (partition): (partition_balance.c:928) {test} rebalanced: expected-migrations (0,0,0) fresh-partitions 0
Jun 27 2022 19:18:13 GMT: INFO (partition): (partition_balance.c:928) {test2} rebalanced: expected-migrations (2325,1718,1978) fresh-partitions 0
Jun 27 2022 19:18:13 GMT: INFO (partition): (partition_balance.c:928) {test} rebalanced: expected-migrations (2325,1718,1978) fresh-partitions 0
Jun 27 2022 19:35:29 GMT: INFO (partition): (partition_balance.c:928) {test2} rebalanced: expected-migrations (514,50,50) fresh-partitions 0
Jun 27 2022 19:35:29 GMT: INFO (partition): (partition_balance.c:928) {test} rebalanced: expected-migrations (0,0,0) fresh-partitions 0
Jun 27 2022 19:58:18 GMT: INFO (partition): (partition_balance.c:928) {test2} rebalanced: expected-migrations (1941,1711,1293) fresh-partitions 0
Jun 27 2022 19:58:18 GMT: INFO (partition): (partition_balance.c:928) {test} rebalanced: expected-migrations (1941,1711,1293) fresh-partitions 0
Jun 27 2022 20:12:54 GMT: INFO (partition): (partition_balance.c:928) {test2} rebalanced: expected-migrations (1369,1089,1393) fresh-partitions 170
Jun 27 2022 20:12:54 GMT: INFO (partition): (partition_balance.c:928) {test} rebalanced: expected-migrations (833,307,1245) fresh-partitions 0
Jun 27 2022 20:19:07 GMT: INFO (partition): (partition_balance.c:928) {test2} rebalanced: expected-migrations (1467,1172,1576) fresh-partitions 190
Jun 27 2022 20:19:07 GMT: INFO (partition): (partition_balance.c:928) {test} rebalanced: expected-migrations (385,418,770) fresh-partitions 0
Jun 27 2022 20:19:59 GMT: INFO (partition): (partition_balance.c:928) {test2} rebalanced: expected-migrations (1830,1477,1926) fresh-partitions 128
Jun 27 2022 20:19:59 GMT: INFO (partition): (partition_balance.c:928) {test} rebalanced: expected-migrations (581,614,1162) fresh-partitions 0
在这里寻找fresh-partitions
。如果它大于1,则意味着一个分区不可用,并且aerospike为您创建了一个新的分区。如果另一个节点已经死亡,则意味着存在数据丢失。如果其他节点再次返回(因为它们没有死亡,而是进行了网络分区),旧的数据将不会丢失,但旧分区和新创建的分区之间将进行冲突解决(冲突解决的默认策略是generation number,这意味着冲突解决后被修改次数更多的键将存在)。