数据库复制

数据库复制有助于确保高可用性。当启用复制时,您的数据集会被复制到一个副本分片,该副本分片会不断与主分片同步。如果主分片发生故障,将发生自动故障转移,副本分片将被提升。也就是说,它将成为新的主分片。

当旧的主分片恢复时,它将成为新主分片的副本分片。这种自动故障转移机制保证了数据服务的中断最小化。

您可以通过以下方式调整您的高可用性配置:

  • Rack/Zone Awareness - 当使用机架-区域感知时,额外的逻辑确保主分片和副本分片永远不会共享同一个机架,从而确保即使在整个机架丢失的情况下也能保持可用性。
  • 副本分片的高可用性 - 当使用副本分片的高可用性时,副本分片会在节点故障转移时自动迁移,以保持高可用性。
警告:
启用复制会对数据库的总大小产生影响, 如数据库内存限制中所述。

自动分层复制注意事项

我们建议您使用rladmin设置顺序复制功能。这是因为在启用自动分层的数据库中,可能会出现相对较慢的复制时间。在某些情况下,如果未设置顺序复制,您可能会耗尽内存。

虽然它不会导致主分片上的数据丢失,但只要主分片上有高写入率的流量并且同时进行多次复制,复制到副本分片的操作可能不会成功。

以下rladmin命令设置可以从同一集群节点复制的合格主分片数量,以及在同一集群节点上可以运行复制过程的副本分片数量。

推荐的顺序复制配置是两个,即:

rladmin tune cluster max_redis_forks 1 max_slave_full_syncs 1
注意:
这意味着在任何给定时间,只有一个主节点和一个副本可以参与完整的同步复制过程。

数据库复制积压

使用复制以实现高可用性的Redis数据库维护一个复制积压(每个分片),以同步数据库的主分片和副本分片。 默认情况下,复制积压设置为数据库大小的百分之一(1%)除以数据库的分片数量,每个分片的大小范围在1MB到250MB之间。 使用rladmincrdb-cli工具来控制复制积压的大小。您可以将其设置为auto或设置特定大小。

语法在常规数据库和Active-Active数据库之间有所不同。

对于一个常规的Redis数据库:

rladmin tune db <db:id | name> repl_backlog <Backlog size in MB | 'auto'>

对于一个Active-Active数据库:

crdb-cli crdb update --crdb-guid <crdb_guid> --default-db-config "{\"repl_backlog_size\": <size in MB | 'auto'>}"

主动-主动复制积压

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

crdb-cli crdb update --crdb-guid <crdb_guid> --default-db-config "{\"crdt_repl_backlog_size\": <size in MB | 'auto'>}"

对于早于6.0.20版本的Redis软件: 复制积压和CRDT复制积压的默认值设置为1MB,并且无法使用'auto'模式动态设置。 要控制复制日志的大小,请使用rladmin来调整每个集群中的本地数据库实例。

rladmin tune db <db:id | name> repl_backlog <Backlog size in MB (or if ending with bytes, KB or GB, in the respective unit)>
RATE THIS PAGE
Back to top ↑