迁移索引到版本 3

Manticore Search 3 首次带来了索引兼容性的破坏,无法加载使用 2.x 创建的现有索引。这意味着在将 searchd 升级到 3.x 之前,索引需要准备好。

要将索引转换为新格式,有两个选项:

  1. 完全重建索引。如果您的索引不大且不是实时的,这是一条简单的路线。
  2. 使用转换工具,可以自动将任何类型的索引(普通、过筛、实时)从 Manticore 2 / Sphinx 2 格式转换为新格式。

在开始迁移之前,有几件事情需要注意:

  • 文档 ID 现在是正的有符号大整数,之前是无符号大整数。
  • 使用杀死列表的索引机制发生了显著变化。
  • 在开始转换实时索引之前,RAM 块必须为空。如果它有数据,应该使用 FLUSH RAMCHUNK 写入磁盘。此操作必须在现有的 2.x 上进行, 然后再执行升级。
  • v3 不限制每个索引的字符串 / json 属性为 4GB。在过去的某些情况下,索引必须共享多个块,仅仅是为了允许数据的适配。在 v3 中,像这样的索引可以减少为单个块或减少为更有限数量的块(如果希望保留多线程搜索)。4GB 的限制也适用于 RT 索引。这意味着如果达到 4GB 阈值,OPTIMIZE 无法将 RT 块减少为单个块。在转换受此影响的 RT 后,对于新索引,可以应用 OPTIMIZE 以实现单块 RT 索引。

Manticore Search 3 附带一个伴随工具,可以将索引从 2.x 格式转换为 3.x 格式。该工具在一个名为 manticore-converter 的单独包中提供。此包不会以任何方式干扰或影响现有的 Manticore 安装,因此可以并排安装。

使用 index_converter 工具,您可以创建索引的 3.x 版本,当所有索引都完成后,您可以开始升级 Manticore 包。

如果您有单个服务器:

  • 安装 manticore-converter
  • 使用 index_converter 在与现有数据文件夹不同的文件夹中创建索引的新版本(使用 --output-dir 选项)
  • 停止现有的 Manticore,升级到 3.0,将新索引移动到数据文件夹,启动 Manticore

为了获得最小的停机时间,您可以将 2.x 索引、配置(您需要在这里编辑索引、日志和不同端口的路径)和二进制文件复制到一个单独的位置,并在单独的端口上启动它,并将您的应用程序指向它。
在升级到 3.0 并启动新守护进程后,您可以将应用程序指回正常端口。如果一切正常,停止 2.x 副本并删除文件以释放空间。

如果您有一个备用服务器(如测试或暂存服务器),您可以首先在这里进行索引升级,甚至安装 Manticore 3 进行多次测试,如果一切正常,将新索引文件复制到生产服务器。

如果您有多个可以从生产中拔出的服务器,请逐个进行,并在每个服务器上执行升级。对于分布式设置,2.x searchd 可以作为主节点与 3.x 节点一起工作,因此您可以先在数据节点上进行升级,最后在主节点上进行升级。

转换工具可以一次迁移一个索引(使用 --index),从给定配置文件中迁移所有索引(使用 --all)或从文件夹中迁移所有索引(由 --path 定义)。由于转换器将创建现有索引的新版本,因此需要考虑所需的额外空间。如果空间是个问题,索引应逐个转换。

使用转换器的最简单方法(如果您不使用杀死列表)是直接转换所有内容:

$ index_converter --config /home/myuser/sphinx.conf --all

默认情况下,v3 索引写入同一文件夹,旧索引以 '.old' 结尾的文件名复制。新索引也可以使用 --output-dir 选项保存在不同的文件夹中。

$ index_converter --config /home/myuser/sphinx.conf --index myrtindex --output-dir /new/location

请注意,命中列表文件 (.spp) 被简单地移动到新版本(因为它没有发生任何变化),并且不包含在旧版本的备份中。一旦版本 3 的测试完成且没有问题,旧索引版本的备份可以删除。

在增量索引的情况下,新的选项 killlist_target 应在开始转换之前在配置中设置。转换器还可以使用 --killlist-target 设置目标:

$ index_converter --config /home/myuser/sphinx.conf --index deltaindex --killlist-target mainindex:kl

第三个选项是转换增量索引,加载它,使用 ALTER KILLLIST_TARGET 设置目标,并(重新)加载目标以应用杀死列表。

如果您有任何问题、疑问或评论,请随时与我们联系:

安装Manticore Search

安装Manticore Search