将数据库升级到 Search 2.x
将数据库从 Search 1.x 升级到 Search 2.x。
RediSearch 2.x 包含一些重大的架构更改,这些更改提高了功能。主要变化是 RediSearch 2.x 将索引存储在包含数据的 Redis 数据库之外。这使得命令更加高效,并改进了集群之间的复制,因为索引更改由参与的集群管理,而不是与数据同步。
此更改允许具有 RediSearch 的数据库支持
此外,RediSearch 2.x 会索引创建索引时数据库中已存在的数据。
要将具有 RediSearch 1.x 的 Redis Enterprise 软件数据库升级到 RediSearch 2.x,您需要使用 RediSearch 2.x 设置一个新数据库,并使用 `RediSearch_Syncer.py` 脚本将旧数据库中的数据复制到新数据库中。
先决条件
在计划运行同步脚本的主机上安装 Python 3。
sudo apt install python3
限制
- 建议 ( `FT.SUG` API) 和拼写检查字典不会从源数据库复制。您需要手动添加它们。
- 如果源数据库中有多个索引,并且文档没有用于识别索引的前缀,则 RediSearch 2.x 无法将其各自的索引中的文档进行索引。
- `NOSAVE` 选项不再受支持。使用 `NOSAVE` 选项创建的索引无法升级。
- 包含临时索引的数据库无法升级。
- 在升级期间尝试添加、删除或修改索引会导致复制过程失败。在升级期间,源数据库只能接收 `FT.ADD` 和 `FT.DEL` 命令。
将数据从 RediSearch 1.x 复制到 RediSearch 2.x
要将 RediSearch 1.x 数据库复制到 RediSearch 2.x 数据库,请执行以下操作:
-
登录到您要托管新 RediSearch 2.x 数据库的 Redis Enterprise 集群的管理控制台。
-
将 RediSearch 2.x 模块 添加到集群。
-
将数据 迁移到 RediSearch 2.x 数据库。
将 RediSearch 2.x 添加到集群
-
从 Redis 下载中心 下载 RediSearch 2.x 模块包。
-
在 Redis Enterprise 管理控制台中,选择**设置**。
-
在**Redis 模块**中,选择**添加模块**按钮。
-
使用文件浏览器选择模块包并将其上传到集群。
创建 RediSearch 2.x 数据库
-
创建数据库 并配置其设置。
-
在**Redis 模块**部分
-
选择**激活**按钮以创建数据库。
迁移数据
-
下载适用于您的操作系统的 RediSearch_Syncer 包
-
解压缩包
unzip <package_name>
-
在解压缩的目录中,运行 RediSearch_Syncer.py 脚本
python3 RediSearch_Syncer.py -d <destination_url> -s <source_url> [--add-prefix <prefix>]
将以下变量替换为您自己的值
-
`destination url` - RediSearch 2.x 数据库的复制 URL。要查找此值,请转到管理控制台中的数据库配置屏幕,然后选择**获取源 URL 的副本**。
-
`source url` - RediSearch 1.x 数据库的复制 URL。要查找此值,请转到管理控制台中的数据库配置屏幕,然后选择**获取源 URL 的副本**。
-
`--add-prefix <prefix>` (可选) - 向复制到新数据库的所有哈希添加前缀。
注意仅当您想将源数据库中所有哈希索引在同一个索引中时,才使用 `add-prefix` 选项。
该脚本将显示一个包含复制过程进度的表格。按 **F5** 查看更新的状态。
例如
python RediSearch_Syncer.py -d redis://admin:IBrS0xaL6rShfB1wKTtUkcQG1g3UWAlTd53AotPdTcQvGIVP@redis-19472.cluster1.local:19472 -s redis://admin:1GjFuUbBqTSPDbRfaxEPLSoXpFmRdFxmBKMD0BuxwMJ2DEaO@redis-19636.cluster1.local:19636
-
-
停止向源数据库发送请求的进程,以便所有数据都同步到目标数据库。
-
在源数据库和目标数据库上运行 `FT.INFO`,并比较已索引的文档数量。当两个数据库中的已索引文档数量相同时,复制过程完成。
-
当状态字段为 `st_in_sync` 时,您可以按 **Ctrl-C** 取消同步过程。
-
按 **Q** 退出 `RediSearch_Syncer.py`。
现在,您可以将数据库连接重定向到 RediSearch 2.x 数据库。