全球复制概述

最近更新时间:2026-03-17 15:06:13

我的收藏
腾讯云分布式缓存数据库 Redis 协议存储引擎支持全球复制的功能,解决跨地域数据同步一致性的问题。
说明:
全球复制目前在架构升级中,旨在进一步提升系统的高可用性与跨地域容灾能力。预计于2026年4月重新开放购买,感谢您的耐心等待。

为什么需要全球复制?

Redis 原生代码在跨地域复制的场景中,当本端实例写入量过大或者长时间断开复制时,Master 节点的 backlog 复制日志可能无法满足断点复制日志的续传,导致远端实例只能进行全量复制,而全量复制同步数据将使得远端实例访问受阻,严重影响远端实例的正常业务。具体信息,请参见 Develop with Redis
同时,Redis 原生的复制方案在 backlog 复制日志中没有标记写入节点,当本端与远端需进行双向复制时,容易引起复制环路,造成数据错乱。

实现机制

全球复制是腾讯云在开源社区版本的内核中新增的功能,完全兼容 Redis 4.0 和 Redis 5.0 的命令。基于原有的主从复制方案,新增了一个日志文件进行远端复制,保证复制组内任意地域实例数据的最终一致。
在远端节点未复制日志文件之前,本端节点将保留日志文件,保证远端复制的连续性。
日志文件包含 ServerID,标识日志文件写入节点 ID,支持远端与本端双向复制,避免复制环路。
日志文件包含命令执行时间戳和操作 KEY 的版本号,用于解决命令冲突的问题。


应用场景

灾备场景

腾讯云分布式缓存数据库 Redis 协议全球复制方案,在复制组中配置一个主实例,在多地部署只读实例,不同地域的灾备实例从主实例进行数据复制。用户便可以在本地进行数据访问,改善数据访问的响应速度,提升用户体验,提高数据可用性,增强数据安全性。

说明:
分片数量:灾备场景,全球复制组中的主实例与灾备实例分片数建议设置为2的 n 次方,如8、16、32、64、128,否则可能导致分片存储容量不均。
事务命令:全球复制的事务操作,相比普通的 Redis 事务,数据库性能会有一定程度的下降。
多 Key 命令:全球复制实例中,多 Key 命令按 Slot 进行拆分,相比非全球复制组中的数据库实例,性能有所下降,下降比例与拆分的数量有关。拆分数量越多,性能下降越多。
数据一致性:数据的版本以主实例为准,数据的一致性级别为最终数据一致。当主实例的主从节点链路出现故障,灾备实例的远程复制也会受到延迟影响。对数据库一致性要求较高的业务场景,强烈建议不要在灾备实例上进行读操作。
淘汰策略:全球复制不支持设置淘汰策略maxmemory-policy。如果有淘汰诉求,请使用del删除命令清理 Key。
延迟说明:全球复制中,主实例的主节点与副本节点的同步延迟会影响主实例与灾备实例之间的远程同步延迟,延迟时长理论上不超过500ms。
监控指标:支持主实例与灾备实例远程同步过程中的命令数量偏差的监控,以及同步延时的监控。具体信息,请参见 监控指标

多活方案

在用户跨地域漫游、多地数据合并等场景,您需要将一份数据分发到多个地域,需在任意地域进行数据读取和更新,或者需要将多个地域的数据合并为一份。此时,数据库需要具备多地写入能力。全球复制组中可以配置多主架构,数据可以在任何一个主实例写入,复制组内的其他地域的主实例将同步数据。

注意:
在多主(全球复制)架构中,Redis 主实例在处理本地应用写入或从其他主实例同步的写命令时,不进行数据版本检测与时间戳校验,所有命令仅按照本实例接收到命令的顺序依次执行。
若业务系统在同一时间对相同数据(Key)在不同的主实例中进行更新,全球同步后可能出现数据错乱或意外覆盖,无法保证数据的绝对一致性。
业务建议: 启用此功能前请仔细评估业务场景。在应用层设计时,必须避免对同一数据进行跨实例的并发更新(建议通过数据按地域 Sharding 或用户路由绑定来实现)。