Valkey/Redis:设置复制

Valkey/Redis:设置复制

💡 原文英文,约2300词,阅读约需9分钟。
📝

内容提要

Valkey/Redis支持复制,允许多个副本和复制链。复制与集群不同,但可以一起使用。文章提供了设置主服务器和两个副本配置的说明。使用TLS证书和配置文件启动容器。副本与主服务器同步,并可用于读取。此设置不包括故障转移功能,但可以使用Valkey Sentinel实现。

🔎

延伸解读

复制与集群:概念区分

文章明确指出Valkey复制与集群是不同概念。复制是简单的异步过程,将单个主服务器的写入重放到多个副本;集群则是更复杂的架构,数据分片存储在多个Valkey服务器上。两者可以结合使用,复制可以是集群架构的一部分,但也可以独立使用。理解这一区别有助于根据实际需求选择合适的数据分布策略。

写入可用性:最小副本数配置

主服务器配置中设置了min-replicas-to-write 1和min-replicas-max-lag 10,这意味着主服务器至少需要有一个延迟小于10秒的已连接副本才会接受写入。文章演示了在没有副本连接时,写入操作会返回NOREPLICAS错误。这种机制可以防止在副本不可用时主服务器继续接受写入,从而避免数据丢失风险,但也会降低写入可用性。

副本读取与数据一致性风险

副本可以用于读取操作,但应用程序必须自行配置连接到副本,因为Valkey没有单一的路由端点。文章指出,当前架构没有故障转移功能,如果主服务器离线,副本会继续作为读取器运行,但可能返回过时数据。可以通过设置replica-serve-stale-data no来禁止副本提供过时数据,此时读取会返回MASTERDOWN错误。

故障转移与手动提升

文章说明当前设置不包括自动故障转移,需要Valkey Sentinel来实现。在Sentinel设置之前,可以手动在副本上执行REPLICAOF NO ONE将其提升为主服务器,并创建复制用户,然后让其他副本指向新的主服务器。文章演示了R1提升后,R2通过REPLICAOF命令重新连接到R1,并利用复制ID机制进行部分重同步。

❓

Q&A

Valkey/Redis的复制功能是什么?

Valkey/Redis支持复制,允许多个副本和复制链,写入在单个主服务器上重放到多个副本。

Valkey的复制与集群有什么区别?

复制是简单的异步过程,而集群是更复杂的架构,数据在多个Valkey服务器之间分片。

如何设置Valkey的主服务器和副本?

使用Docker启动主服务器和副本,配置文件中包含TLS证书和用户账户信息,副本通过REPLICAOF命令连接到主服务器。

Valkey的副本如何进行同步?

副本通过REPLICAOF命令连接到主服务器,并进行同步,主服务器必须至少连接一个副本才能进行写入。

Valkey的当前架构是否支持故障转移?

当前架构没有故障转移功能,但可以使用Valkey Sentinel实现自动故障转移。

如何防止副本提供过时数据?

可以通过设置'replica-serve-stale-data no'来防止副本提供过时数据。

🏷️

标签

➡️

继续阅读