在本文中,我们将讨论如何从 Sphinx 升级。
Manticore Search 是 Sphinx Search 2.3 的一个分支。虽然代码的许多部分已经被 重构 和 改进,但没有任何重大更改需要进行从 Sphinx 的重大升级。在大多数情况下,升级过程与在 Sphinx 的小版本之间升级相同,这主要只是替换二进制可执行文件。
索引
Manticore 使用与 Sphinx 2.x 相同的索引格式,并且使用 Sphinx 创建的索引将被 Manticore 后台加载。唯一需要重新索引的情况是,如果您使用的是在 Sphinx 2.2 之前的索引,这些索引使用 str2ordinal
/str2wordcount
属性,而这些属性在 Sphinx 2.2 中已经被弃用。
作为一般考虑,最好先测试升级是否顺利通过,然后再在生产实例上执行升级。在测试中要遵循的原则是检查索引是否顺利加载以及执行的常见查询是否按预期工作。
如果存在带有远程节点的分布式索引,应首先升级主节点。主节点和节点之间使用的 API 协议进行了更新,但主节点仍然可以使用较旧版本与节点进行通信。
配置
与 Sphinx 2.3.2 相比,Manticore 中有一些设置已被弃用。提醒一下,在 2.3.1 中移除了 prefork
和 fork
工作模式。此外,在 Sphinx 2.2 中,像 charset_type
、enable_star
和 max_matches
这样的选项已被从 sphinx.conf 中弃用(max_matches 仍然是查询设置,只是不再是全局设置)。值得一提的是,crc
词典模式在 Manticore 中仍然受到支持,因为在某些情况下,它可能比“keywords”模式更有优势。
查询
在客户端通信方面,如果您使用的是 SphinxQL,则客户端侧不需要任何操作。
如果您使用的是 SphinxAPI,自分支以来我们没有对客户端库进行任何更改,但是如果您来自较旧的 Sphinx 版本,您应该升级到最新的 API 客户端库。
SphinxSE MySQL 插件已经有一段时间没有更新,但在 Manticore 中,我们引入了对 FEDERATED 引擎的支持,它是一个更好的选择,因为 FEDERATED 包含在所有 MySQL 变体中(与仅分发给 MariaDB 的 SphinxSE 不同)。
编译
Manticore 从 autotools 切换到 cmake。代码需要较新版本的编译器。有关更多信息,请查阅 编译 文档。
在 Windows 上升级
停止 Sphinx 服务。
用新的可执行文件和库替换所有旧的可执行文件和库。
Sphinx 设置的现有服务可以顺利启动 Manticore。如果您想替换它,只需运行 searchd.exe --delete
和 searchd.exe --install
。
从 Linux 包升级
Manticore 包使用相同的位置作为配置文件:/etc/sphinxsearch/sphinx.conf
或 /etc/sphinx/sphinx.conf
,具体取决于发行版。
更改的是 searchd 运行的用户以及使用的文件夹。Sphinx 以 sphinx
/sphinxsearch
用户身份运行,并使用 /var/lib/sphinxsearch
、/var/log/sphinxsearch
和 /var/run/sphinx
文件夹。
Manticore 以 manticore 用户身份运行,默认文件夹为 /var/lib/manticore
、/var/log/manticore
和 /var/run/manticore
。
首先停止 Sphinx 服务,使用 service sphinxsearch stop
或 systemctl stop sphinx
,具体取决于所用的发行版。
您可以直接使用 dpkg -i package
或 rpm -Uvh package
进行升级,并选择保留现有的 sphinx.conf。
由于 Manticore 服务使用 /var/run/manticore
来检查 pid 文件的存在,因此在 sphinx.conf
中唯一需要更改的地方是将 pid_file
的位置更改为 /var/run/manticore/searchd.pid
。我们建议在 sphinx.conf 中更改 pid 文件的位置,而不是编辑 manticore.service 文件,因为未来的升级可能会覆盖在服务文件中所做的更改,并且需要重新打补丁。
接下来是为现有的 Sphinx 文件夹设置 manticore
用户权限。
此时,您可以使用 service manticore start
或 systemctl start manticore
启动 Manticore 服务。
如果您需要升级 Sphinx 的帮助,请随时在官方 Slack 频道或 论坛 上询问。