升级 Active-Active 数据库
提示
来自deepseek解释
原文链接:https://redis.io/docs/latest/operate/rs/installing-upgrading/upgrading/upgrade-active-active/
升级 Active-Active 数据库
在 Active-Active 实例所在集群的每个节点上升级 Redis Software。
检查所有 Active-Active 数据库实例的状态。
将所有 Active-Active 数据库实例升级到更高版本的 Redis。
如果您的 Active-Active 数据库使用了模块,请更新模块信息。要检查您的数据库是否使用了模块,请运行
rladmin status modules:shrladmin status modules db { db:<ID> | <database-name> }
检查数据库状态
要检查 Active-Active 数据库实例的状态,请运行 rladmin status:
rladmin status
节点上 Active-Active 实例的状态可能指示:
OLD REDIS VERSION:数据库实例正在运行的 Redis 版本已过时,或与当前 Redis Software 集群版本不完全兼容。您应该将数据库升级到集群当前 Redis Software 版本所捆绑的更高版本 Redis。OLD CRDB PROTOCOL VERSION:该实例使用了较旧的 CRDB 协议。Redis Software 5.4.2 及更高版本使用 CRDB 协议版本 1。您可以在升级 Active-Active 数据库实例时升级 CRDB 协议版本。更多信息请参见 CRDB 协议版本指南。OLD CRDB FEATURESET VERSION:数据库特性集版本已过时。在所有 Active-Active 数据库实例升级完成后,请升级特性集版本。更多信息请参见特性版本指南。
升级数据库实例
对于每个 Active-Active 数据库实例:
使用
rladmin upgrade db升级 Redis 数据库版本和已启用的模块:shrladmin upgrade db { db:<ID> | <database-name> }如果 CRDB 协议版本较旧,请仔细阅读警告消息并确认您要更新 CRDB 协议。更多信息请参见 CRDB 协议版本指南。

确认后,Active-Active 实例将使用新的 Redis 版本和 CRDB 协议版本。
您可以使用 keep_crdt_protocol_version 选项在不升级 CRDB 协议版本的情况下升级数据库版本。但是,您必须在更新 CRDB 特性集版本之前升级 CRDB 协议。
如果使用了 keep_crdt_protocol_version,请确保稍后使用 rladmin upgrade db 命令尽快升级 CRDB 协议。
CRDB 协议版本指南
Redis Software 5.4.2 及更高版本使用 CRDB 协议版本 1 来支持 Active-Active 特性。
CRDB 协议版本 1 向后兼容,这意味着 Redis Software v5.4.2 CRDB 实例可以理解来自使用较早 CRDB 协议版本 0 的实例的写操作。
在将一个实例的 CRDB 协议升级到版本 1 之后:
任何使用 CRDB 协议版本 1 的实例都可以从版本 1 和版本 0 的实例接收更新。
但是,仍使用 CRDB 协议版本 0 的实例无法从版本 1 的实例接收写更新。
当您将实例从 CRDB 协议版本 0 升级到版本 1 后,它会自动接收任何缺失的写操作。
请遵循以下升级指南:
在合理的时间范围内升级特定 CRDB 的所有实例,以避免实例之间的临时不一致。
确保在对 CRDB 执行全局操作(如删除实例和添加新实例)之前,升级特定 CRDB 的所有实例。
从 v6.0.20 开始,协议版本 0 已被弃用,并将在未来版本中移除支持。
为避免升级失败,请在将 Redis Software 升级到 v6.0.20 或更高版本之前,将所有 Active-Active 数据库更新到协议版本 1。
升级特性集版本
如果特性集版本已过时(如 OLD CRDB FEATURESET VERSION 状态所示):
升级所有 Active-Active 数据库实例,并确保 CRDB 协议未过时。
查找您的 Active-Active 数据库的
<CRDB-GUID>。您可以使用
crdb-cli crdb list命令:shcrdb-cli crdb list查找您集群的完全限定域名(
CLUSTER-FQDN),并使用关联的GUID:shCRDB-GUID NAME REPL-ID CLUSTER-FQDN 700140c5-478e-49d7-ad3c-64d517ddc486 aatest 1 aatest1.example.com 700140c5-478e-49d7-ad3c-64d517ddc486 aatest 2 aatest2.example.com更新每个 Active-Active 数据库的特性集。更多信息请参见特性版本指南。
shcrdb-cli crdb update --crdb-guid <CRDB-GUID> --featureset-version yes
特性版本指南
从 5.6.0 版本开始,一个新的特性版本(也称为 特性集版本)用于支持新的 Active-Active 特性。
特性集版本是 Active-Active 特性的内部版本,可在参与的 Active-Active 集群之间启用新功能和改进。当您更新 Active-Active 数据库的特性版本时,所有数据库实例的特性版本都会更新。
请遵循以下升级指南:
从 v6.0.20 开始,特性版本 0 已被弃用,并将在未来版本中移除支持。
为避免升级失败,请在升级到 Redis Software 6.0.20 或更高版本之前,确保所有 Active-Active 数据库都配置为最新的特性集版本。
更新模块信息
如果您的 Active-Active 数据库使用了模块:
使用以下命令语法更新 CRDB 配置中的模块信息:
shcrdb-cli crdb update --crdb-guid <CRDB-GUID> --update-db-config-modules truecrdb-cli会要求您确认所有 Active-Active 数据库实例及其模块均已更新,然后输入y继续:Verify that all CRDB database instances and their modules have been updated. Do you want to continue? (y/n): y
升级限制
- 将 Active-Active 数据库从 Redis 7.4 或更早版本升级到 8.0 或更高版本时,在所有参与集群中的所有 Active-Active 数据库实例完成升级之前,您不能使用模块命令,例如 Redis Search 和 JSON 命令。这些命令不会被自动阻止,在升级过程完成之前运行这些命令可能导致同步器崩溃。