tencent cloud

文档反馈

全球复制概述

最后更新时间:2022-06-16 16:13:42

    云数据库 Redis 支持全球复制的功能,解决跨地域数据同步一致性的问题。

    为什么需要全球复制?

    Redis 原生代码在跨地域复制的场景中,当本端实例写入量过大或者长时间断开复制时,Master 节点的 backlog 复制日志可能无法满足断点复制日志的续传,导致远端实例只能进行全量复制,而全量复制同步数据将使得远端实例访问受阻,严重影响远端实例的正常业务。具体信息,请参见 Redis 官方文档的复制方案

    同时,Redis 原生的复制方案在 backlog 复制日志中没有标记写入节点,当本端与远端需进行双向复制时,容易引起复制环路,造成数据错乱。

    实现机制

    全球复制是腾讯云在开源社区版本的内核中新增的功能,完全兼容 Redis 4.0 和 Redis 5.0 的命令。基于原有的主从复制方案,新增了一个日志文件进行远端复制,保证复制组内任意地域实例数据的最终一致。

    • 在远端节点未复制日志文件之前,本端节点将保留日志文件,保证远端复制的连续性。
    • 日志文件包含 ServerID,标识日志文件写入节点 ID,支持远端与本端双向复制,避免复制环路。
    • 日志文件包含命令执行时间戳和操作 KEY 的版本号,用于解决命令冲突的问题。

    应用场景

    只读/灾备场景

    Redis 全球复制方案,在复制组中配置一个主实例,在多地部署只读实例,不同地域的只读实例从主实例进行数据复制。数据的版本以主实例为准,数据的一致性级别为最终数据一致。用户便可以在本地进行数据访问,改善数据访问的响应速度,提升用户体验,提高数据可用性,增强数据安全性。

    多活方案

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

    注意:

    Redis 主实例对应用写入的数据和复制组中其他主实例写入的数据,不做版本检测和写入时间检查,按照接收到命令的时间依次执行。若相同的数据在同一时间的不同主实例中进行了更新,全球复制的数据可能出现数据错乱,无法保证数据的完全一致。
    因此,多主场景中,需避免对相同的数据在同一时间在不同的主实例中进行更新。多主架构存在数据一致性风险,请您仔细评估您的业务场景是否适用该功能。

    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持