将数据库升级到 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 Software 数据库升级到 RediSearch 2.x,您必须设置一个带有 RediSearch 2.x 的新数据库,并使用 RediSearch_Syncer.py 脚本将旧数据库的数据复制到新数据库中。

注意
创建数据库或复制数据后,使用定义要索引的键的 前缀或过滤器创建索引

先决条件

在计划运行同步脚本的主机上安装 Python 3

sudo apt install python3

限制

  • suggestions (FT.SUG API) 和拼写检查字典不会从源数据库复制。您需要手动添加它们。
  • 如果源数据库上有多个索引,并且文档没有用于标识其所属索引的前缀,则 RediSearch 2.x 无法在各自的索引中索引这些文档。
  • 不再支持 NOSAVE 选项。使用 NOSAVE 选项创建的索引无法升级。
  • 包含临时索引的数据库无法升级。
  • 在升级过程中尝试添加、删除或修改索引将导致复制过程失败。在升级过程中,源数据库只能接收 FT.ADDFT.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 管理控制台中,选择 settings

  3. redis modules 中,选择 Add module 按钮。

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

创建 RediSearch 2.x 数据库

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

  2. Redis Modules 部分:

    1. 选择 Add 按钮

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

    3. 选择 OK 按钮确认

      The Save icon
  3. 选择 Activate 按钮创建数据库。

迁移数据

  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。要查找此值,请在管理控制台中转到数据库配置屏幕,然后选择 Get Replica of source URL

    • source url - RediSearch 1.x 数据库的复制 URL。要查找此值,请在管理控制台中转到数据库配置屏幕,然后选择 Get Replica of source 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 数据库了。

评价此页面
返回顶部 ↑