地理分布式 Redis 的副本

Replica Of 提供对来自不同地理位置的数据集副本的只读访问权限。

Redis 企业软件

在 Redis Enterprise 中,Replica Of 功能为应用程序提供主动-被动异地分布,以实现只读访问 添加到来自不同地理位置的数据集副本。 主动-被动复制的 Redis Enterprise 实现称为 Replica Of。

在 Replica Of 中,管理员将数据库指定为一个或多个数据库(源)的副本(目标)。 完成从源到目标的初始数据加载后, 所有写入命令都从源同步到目标。 Replica Of 允许您在多个数据库之间分配应用程序的读取负载,或者 将 Redis Enterprise 内部或 Redis Enterprise 外部的数据库同步到另一个数据库。

您可以在 Redis Enterprise Software 或 Redis Cloud 上创建主动-被动数据库。

主动-主动异地分布 (CRDB) 提供了这些优势,并且还提供对所有数据库副本的写入访问权限。

警告:
将数据库配置为它所复制的数据库的副本 创建循环复制,因此不受支持。

Replica Of 在目标数据库的上下文中定义 通过指定源数据库。

目标数据库最多可以有三十二 (32) 个源 数据库。

如果只定义了一个源,则 source 保留在 destination 中。但是,当多个源 定义,则从源数据库复制的命令为 按照它们到达目标数据库的顺序执行。作为 result,则在比较时按特定顺序执行的命令 跨源数据库可能会在 destination 数据库。

注意:
不应将 Replica Of 功能与 内存数据库 replication 功能,用于创建主/副本配置,该配置 确保数据库高可用性。

复制过程

当一个数据库被定义为另一个数据库的副本时,其所有 现有数据将被删除,并替换为从 source 数据库。

初始数据加载完成后,将进行持续同步 进程的 源。在正在进行的同步过程中,有一定的 在源上执行命令的时间与 当它在目标上执行时。此延迟称为 Lag

当出现同步错误时,进程可能会停止或 它可能会继续运行,前提是 error 会自动 解决。结果取决于错误类型。请参阅下面的更多详细信息。

此外,用户可以手动停止同步过程

当进程处于 stopped 状态时 - 是否被用户停止 或由系统 - 用户可以重新启动进程。重新启动 进程导致同步进程刷新数据库并重新启动 从头开始的过程

Replica Of 状态

复制过程可以具有以下状态:

  • 正在同步 - 表示同步过程具有 从零开始。进度以百分比 (%) 表示。
  • 已同步 - 指示初始同步过程为 completed 且目标正在同步正在进行的 基础。与源同步的 Lag delay 为 表示为持续时间。
  • Sync stopped - 指示同步过程为 当前未运行,用户需要重新启动它才能 it 继续运行。如果用户停止 进程,或者如果出现某些阻止同步的错误 无需人工干预即可继续。请参阅下面的更多详细信息。

以上状态针对源数据库显示。此外,一个 timestamp 显示在源上,指示 源已在目标上执行。

系统还会将目标库状态显示为聚合 的所有源的状态。

注意:
如果您在 Replica Of 进程中遇到问题,请参阅 重复复制到故障排除部分 Replica Of 失败

同步错误

同步过程中发生的某些错误需要 用户干预以解决其问题。当发生此类错误时, 同步过程会自动停止。

对于其他错误,同步过程将继续在 假设错误会自动解决。

需要用户干预才能解决的错误示例 以及停止同步过程的 包括:

  • 使用源数据库进行身份验证时出错。
  • 在分片上执行命令时出现跨槽冲突错误 destination 数据库。
  • 源或目标上的内存不足错误 数据库。

不会导致同步过程 停:

  • 源数据库的连接错误。连接错误可能 偶尔发生,例如由于临时网络 得到解决的问题。根据连接错误及其 持续时间,该进程可能能够从最后一个 达到 (部分同步) 或需要完整的 跨所有源从头开始重新同步(完全同步)。

加密

Replica Of 支持加密单向复制的能力 使用 TLS 1.2 的源集群和目标集群之间的通信 基于加密。

Replica Of 的数据压缩

当 Replica Of 在不同的 Redis Enterprise 中定义时 软件集群,压缩流向的数据可能是有益的 通过网络(取决于集群的物理驻留位置 和可用网络)。

压缩数据可以减少流量,并有助于:

  • 解决吞吐量问题
  • 降低网络流量成本

压缩数据确实需要权衡取舍,这就是为什么它不应该这样做 默认情况下始终处于打开状态。例如:

  • 它使用 CPU 和磁盘资源在发送之前压缩数据 它连接到网络并在另一端解压缩它。
  • 压缩和解压缩数据需要时间,这可能会增加 延迟。
  • 复制是基于磁盘的,并且是逐步完成的,在 多分片数据库的情况。这可能会对 复制时间取决于磁盘的速度和负载 数据库。
  • 如果流量太快并且压缩花费太多时间,则 可能会导致复制过程失败并重新启动。

建议您在较低的环境中测试压缩 在生产环境中启用它之前。

在 Redis Enterprise Software 管理 UI 中,指定 来自不同 Redis Enterprise Software 集群的源副本, 还有一个选项可以启用 Compression。启用后,gzip 使用 level -6 的压缩。

数据库集群(分片)影响

如果数据库被分片,则整个数据库将被视为 目标数据库的单一源。

如果目标库是分片的,则当命令复制 在目标数据库上执行 执行目标数据库的哈希函数以确定 命令引用的分片。

源和目标可以具有不同的分片计数和函数 用于放置键。

主动-被动复制中的同步

在主动-被动数据库中,一个集群托管接收读写作的源数据库 其他集群托管从源数据库接收同步更新的目标数据库。

当源数据库和目标数据库之间存在显著差异时, 目标数据库从其内存中刷新所有数据,然后再次开始同步数据。 此过程称为 完全同步

例如,如果目标数据库的数据库更新 ,则超过其分配的内存, 源数据库将启动完全同步。

警告:
当您故障转移到目标数据库进行写入作时, 确保在将客户端定向到目标数据库之前禁用 Replica Of 。 这样可以避免可能覆盖您的数据的完全同步。

主动-被动复制积压

除了数据库复制积压之外,主动-被动数据库还维护一个复制积压(每个分片),以同步集群之间的数据库实例。 默认情况下,复制积压设置为数据库大小的百分之一 (1%) 除以数据库分片数,每个分片的范围为 1MB 到 250MB。 使用rladmin实用程序来控制复制积压的大小。您可以将其设置为auto或设置特定大小。

对于主动-被动数据库:

rladmin tune db <db:id | name> repl_backlog <Backlog size in MB or 'auto'>
Note:
On an Active-Passive database, the replication backlog configuration applies to both the replication backlog for shards synchronization and for synchronization of database instances between clusters.
RATE THIS PAGE
Back to top ↑