升级数据库到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

限制

  • 建议(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. Create a new database 使用 RediSearch 2.x。

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

将 RediSearch 2.x 添加到集群

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

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

  3. redis模块中,选择添加模块按钮。

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

创建一个 RediSearch 2.x 数据库

  1. Create a database 并配置其设置。

  2. Redis模块部分:

    1. 选择添加按钮:

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

    3. 选择OK按钮以确认:

      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 (可选) - 为复制到新数据库的所有哈希值添加前缀。

      注意:
      只有在您希望将源数据库中的所有哈希值索引到同一索引中时,才使用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 ↑