将数据库升级到 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 数据库,请执行以下操作:

  1. 登录到您要托管新 RediSearch 2.x 数据库的 Redis Enterprise 集群的管理控制台。

  2. 将 RediSearch 2.x 模块 添加到集群。

  3. 创建一个新的 RediSearch 2.x 数据库

  4. 将数据 迁移到 RediSearch 2.x 数据库。

将 RediSearch 2.x 添加到集群

  1. Redis 下载中心 下载 RediSearch 2.x 模块包。

  2. 在 Redis Enterprise 管理控制台中,选择**设置**。

  3. 在**Redis 模块**中,选择**添加模块**按钮。

  4. 使用文件浏览器选择模块包并将其上传到集群。

创建 RediSearch 2.x 数据库

  1. 创建数据库 并配置其设置。

  2. 在**Redis 模块**部分

    1. 选择**添加**按钮

      The Add icon
    2. 从下拉列表中选择**RediSearch 2**。

    3. 选择**确定**按钮以确认。

      The Save icon
  3. 选择**激活**按钮以创建数据库。

迁移数据

  1. 下载适用于您的操作系统的 RediSearch_Syncer 包

  2. 解压缩包

    unzip <package_name>
    
  3. 在解压缩的目录中,运行 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
    
  4. 停止向源数据库发送请求的进程,以便所有数据都同步到目标数据库。

  5. 在源数据库和目标数据库上运行 `FT.INFO`,并比较已索引的文档数量。当两个数据库中的已索引文档数量相同时,复制过程完成。

  6. 当状态字段为 `st_in_sync` 时,您可以按 **Ctrl-C** 取消同步过程。

  7. 按 **Q** 退出 `RediSearch_Syncer.py`。

现在,您可以将数据库连接重定向到 RediSearch 2.x 数据库。

RATE THIS PAGE
Back to top ↑