地理分布式 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 数据库。
复制过程
当一个数据库被定义为另一个数据库的副本时,其所有 现有数据将被删除,并替换为从 source 数据库。
初始数据加载完成后,将进行持续同步 进程的 源。在正在进行的同步过程中,有一定的 在源上执行命令的时间与 当它在目标上执行时。此延迟称为 Lag。
当出现同步错误时,进程可能会停止或 它可能会继续运行,前提是 error 会自动 解决。结果取决于错误类型。请参阅下面的更多详细信息。
此外,用户可以手动停止同步过程。
当进程处于 stopped 状态时 - 是否被用户停止 或由系统 - 用户可以重新启动进程。重新启动 进程导致同步进程刷新数据库并重新启动 从头开始的过程。
Replica Of 状态
复制过程可以具有以下状态:
- 正在同步 - 表示同步过程具有 从零开始。进度以百分比 (%) 表示。
- 已同步 - 指示初始同步过程为 completed 且目标正在同步正在进行的 基础。与源同步的 Lag delay 为 表示为持续时间。
- Sync stopped - 指示同步过程为 当前未运行,用户需要重新启动它才能 it 继续运行。如果用户停止 进程,或者如果出现某些阻止同步的错误 无需人工干预即可继续。请参阅下面的更多详细信息。
以上状态针对源数据库显示。此外,一个 timestamp 显示在源上,指示 源已在目标上执行。
系统还会将目标库状态显示为聚合 的所有源的状态。
同步错误
同步过程中发生的某些错误需要 用户干预以解决其问题。当发生此类错误时, 同步过程会自动停止。
对于其他错误,同步过程将继续在 假设错误会自动解决。
需要用户干预才能解决的错误示例 以及停止同步过程的 包括:
- 使用源数据库进行身份验证时出错。
- 在分片上执行命令时出现跨槽冲突错误 destination 数据库。
- 源或目标上的内存不足错误 数据库。
不会导致同步过程 停:
- 源数据库的连接错误。连接错误可能 偶尔发生,例如由于临时网络 得到解决的问题。根据连接错误及其 持续时间,该进程可能能够从最后一个 达到 (部分同步) 或需要完整的 跨所有源从头开始重新同步(完全同步)。
加密
Replica Of 支持加密单向复制的能力 使用 TLS 1.2 的源集群和目标集群之间的通信 基于加密。
Replica Of 的数据压缩
当 Replica Of 在不同的 Redis Enterprise 中定义时 软件集群,压缩流向的数据可能是有益的 通过网络(取决于集群的物理驻留位置 和可用网络)。
压缩数据可以减少流量,并有助于:
- 解决吞吐量问题
- 降低网络流量成本
压缩数据确实需要权衡取舍,这就是为什么它不应该这样做 默认情况下始终处于打开状态。例如:
- 它使用 CPU 和磁盘资源在发送之前压缩数据 它连接到网络并在另一端解压缩它。
- 压缩和解压缩数据需要时间,这可能会增加 延迟。
- 复制是基于磁盘的,并且是逐步完成的,在 多分片数据库的情况。这可能会对 复制时间取决于磁盘的速度和负载 数据库。
- 如果流量太快并且压缩花费太多时间,则 可能会导致复制过程失败并重新启动。
建议您在较低的环境中测试压缩 在生产环境中启用它之前。
在 Redis Enterprise Software 管理 UI 中,指定 来自不同 Redis Enterprise Software 集群的源副本, 还有一个选项可以启用 Compression。启用后,gzip 使用 level -6 的压缩。
数据库集群(分片)影响
如果源数据库被分片,则整个数据库将被视为 目标数据库的单一源。
如果目标库是分片的,则当命令复制 在目标数据库上执行 执行目标数据库的哈希函数以确定 命令引用的分片。
源和目标可以具有不同的分片计数和函数 用于放置键。
主动-被动复制中的同步
在主动-被动数据库中,一个集群托管接收读写作的源数据库 其他集群托管从源数据库接收同步更新的目标数据库。
当源数据库和目标数据库之间存在显著差异时, 目标数据库从其内存中刷新所有数据,然后再次开始同步数据。 此过程称为 完全同步。
例如,如果目标数据库的数据库更新 ,则超过其分配的内存, 源数据库将启动完全同步。
主动-被动复制积压
除了数据库复制积压之外,主动-被动数据库还维护一个复制积压(每个分片),以同步集群之间的数据库实例。
默认情况下,复制积压设置为数据库大小的百分之一 (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.
On this page