使用多主节点
KeyDB 现在支持多主节点复制。此模式通过以下配置行启用:
当 KeyDB 与多个主节点连接时,其行为与传统复制不同:
- 多次调用 `replicaof` 命令将导致添加额外的主节点,而不是替换当前的主节点。
- KeyDB 在与主节点同步时不会丢弃其数据库。
- KeyDB 将把来自主节点的任何读/写操作与其内部数据库合并。
- KeyDB 将默认采用“最后操作获胜”的原则。
这意味着具有多个主节点的副本将包含其所有主节点数据的超集。如果两个主节点具有相同键的值,则不确定会采用哪个键。如果一个主节点删除了另一个主节点上存在的键,则副本将不再包含该键的副本。
#
设置多主节点多主节点设置与主动复制设置非常相似,但允许多于一个副本节点(所有节点都是主节点)。它允许您对所有实例进行读写,这可以在高负载下增加读取量,并在其中一个实例发生故障时让其他主节点随时待命。
通过多主节点设置,您可以将每个主节点设置为其他节点的副本。这可以接受多种拓扑结构,您可以创建不同变化的环形拓扑,或者将每个主节点都设置为所有其他主节点的副本。如果并非所有节点都同步,请考虑故障场景,并确保一次中断不会导致其他节点失去连接。
一个示例配置文件
#
配置文件注意:在配置文件中设置多主节点时,请确保在设置 `replicaof` 命令之前启用 `multi-master` 和 `active-replica`,如下面的示例所示,否则多主节点复制可能无法正常工作。
实例 A 的配置文件
实例 B 的配置文件
实例 C 的配置文件
您也可以将以下命令附加到配置文件中:`keydb-server --multi-master yes --active-replica yes --replicaof [ipaddress] [port] --replicaof [ipaddress] [port]`
#
移除副本节点在操作期间,您可能希望移除一个节点,而无需重新加载配置文件和重启节点。这可以使用 keydb-cli 完成:
请注意,此命令需要在集群中的所有节点上执行(我们尚不支持跨集群节点的自动传播)。