升级数据库到Search 2.x
将数据库从Search 1.x升级到Search 2.x。
RediSearch 2.x 包含了一些重要的架构变化,这些变化提升了功能。 主要的变化是 RediSearch 2.x 将索引存储在包含数据的 Redis 数据库之外。 这使得命令更加高效,并改善了集群之间的复制,因为索引变化由参与的集群管理,而不是与数据同步。
此更改允许带有 RediSearch 的数据库支持:
- Active-Active 数据库
- 数据库集群重新分片
- 副本到分片目标数据库
- EXPIRE 索引中反映的文档过期
此外,RediSearch 2.x 会索引在创建索引时数据库中已经存在的数据。
要将带有RediSearch 1.x的Redis Enterprise Software数据库升级到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 模块 到集群中。
-
Create a new database 使用 RediSearch 2.x。
-
Migrate data 迁移数据到 RediSearch 2.x 数据库。
将 RediSearch 2.x 添加到集群
-
从Redis下载中心下载RediSearch 2.x模块包。
-
在Redis Enterprise管理控制台中,选择设置。
-
在redis模块中,选择添加模块按钮。
-
使用文件浏览器选择模块包并将其上传到集群。
创建一个 RediSearch 2.x 数据库
-
Create a database 并配置其设置。
-
在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
(可选) - 为复制到新数据库的所有哈希值添加前缀。注意:只有在您希望将源数据库中的所有哈希值索引到同一索引中时,才使用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 数据库。