配置副本分片的高可用性
配置副本分片的高可用性,以便集群自动将副本分片迁移到可用节点。
当您启用数据库复制时, Redis Enterprise Software 会为每个主分片创建一个副本。副本分片将始终位于与主分片不同的节点上,以确保数据的高可用性。如果主分片失败或托管主分片的节点失败,则副本将被提升为主分片。
在没有启用副本高可用性(replica_ha)的情况下,提升的主分片成为单点故障,因为它是数据的唯一副本。
启用replica_ha配置集群以在可用节点上自动复制提升的副本。 这将自动将数据库返回到存在两个数据副本的状态: 已提升为主副本的前副本分片和新的副本分片。
一个可用的节点:
- 满足副本迁移要求,例如机架感知。
- 有足够的可用RAM来存储副本分片。
- 也不包含主分片。
在实践中,副本迁移会创建一个新的副本分片,并将数据从主分片复制到新的副本分片。
例如:
-
节点2有一个主分片,节点3有相应的副本分片。
-
或者:
- 节点2失败,节点3上的副本分片被提升为主分片。
- 节点3失败,主分片不再复制到失败节点上的副本分片。
-
如果启用了副本高可用性,将在可用节点上创建一个新的副本分片。
-
来自主分片的数据被复制到新的副本分片。
- 副本高可用性遵循副本迁移的所有先决条件,例如机架感知。
- 副本高可用性(Replica HA)根据目标节点上可用的DRAM尽可能多地迁移分片。当没有可用的DRAM时,副本高可用性会停止向该节点迁移副本分片。
配置副本分片的高可用性
如果集群和数据库都启用了副本高可用性,当主分片或副本分片失败时,数据库的副本分片会自动迁移到另一个节点。如果在集群级别未启用副本高可用性,即使为数据库启用了副本高可用性,副本高可用性也不会迁移副本分片。
默认情况下,集群启用了副本高可用性。
当您使用集群管理器UI创建数据库时,如果启用了复制,默认情况下会为数据库启用副本高可用性。

要在不使用复制高可用性的情况下使用复制,请清除复制高可用性复选框。
您也可以使用rladmin
或REST API启用或关闭数据库的副本高可用性。
为副本HA配置集群策略
要默认启用或关闭整个集群的副本高可用性,请使用以下方法之一:
-
rladmin tune cluster slave_ha { enabled | disabled }
-
更新集群策略 REST API 请求:
PUT /v1/cluster/policy { "slave_ha":
}
关闭数据库的副本高可用性
要使用rladmin
关闭特定数据库的副本高可用性,请运行:
rladmin tune db db:<ID> slave_ha disabled
您可以在前面的命令中使用数据库名称代替db:
。
配置选项
您可以通过以下方式查看副本HA的当前配置选项:
rladmin info cluster
宽限期
默认情况下,副本高可用性在节点故障后有10分钟的宽限期,然后才会创建新的副本分片。
要从rladmin配置此宽限期,请运行:
rladmin tune cluster slave_ha_grace_period <time_in_seconds>
分片优先级
副本分片迁移基于优先级。当内存资源有限时,最重要的副本分片会首先迁移:
-
slave_ha_priority
- 具有较高整数值的副本分片会在具有较低值的分片之前进行迁移。要为数据库分配优先级,请运行:
rladmin tune db db:<ID> slave_ha_priority <positive integer>
您可以在前面的命令中使用数据库名称代替
db:
。 -
Active-Active 数据库 - Active-Active 数据库同步使用副本分片在副本之间进行同步。
-
数据库大小 - 移动较小数据库的副本分片更容易且更高效。
-
数据库UID - 具有较高UID的数据库的副本分片会首先被移动。
冷却期
集群和数据库都有冷却期。
节点故障后,集群冷却期(slave_ha_cooldown_period
)会防止由于另一个节点故障导致的任何数据库的副本迁移,直到冷却期结束。默认值为一小时。
在数据库通过副本HA迁移后,由于另一个节点故障,直到数据库的冷却期(slave_ha_bdb_cooldown_period
)结束,它不能再次进行迁移。默认时间为两小时。
要配置冷却期,请使用 rladmin tune cluster
:
-
对于集群:
rladmin tune cluster slave_ha_cooldown_period
-
对于集群中的所有数据库:
rladmin tune cluster slave_ha_bdb_cooldown_period
警报
在副本HA激活期间发送以下警报:
- 分片迁移在宽限期结束后开始。
- 分片迁移失败,因为没有可用的节点(每小时发送一次)。
- 由于冷却期,分片迁移被延迟。