В этой статье мы расскажем о том, как обновиться с Sphinx.
Manticore Search является форком Sphinx Search 2.3. Хотя многие части кода были рефакторингованы и улучшены, нет никаких разрушающих изменений, которые потребовали бы значительных усилий для обновления с Sphinx. В большинстве случаев процедура обновления такая же, как и при обновлении между минорными версиями Sphinx, которая в основном заключается в замене бинарных исполняемых файлов.
Индексы
Manticore использует тот же формат индекса, что и Sphinx 2.x, и индексы, созданные с помощью Sphinx, будут загружены демоном Manticore. Единственная ситуация, когда требуется повторная индексация, это если вы используете индексы до Sphinx 2.2, которые используют атрибуты str2ordinal/str2wordcount, которые были устаревшими в Sphinx 2.2.
В общем, лучше сначала протестировать, пройдет ли обновление без проблем, прежде чем выполнять обновление на производственных экземплярах. Что следует проверить в тестировании, так это загрузка индексов без проблем и выполнение общих запросов, как ожидалось.
В случае распределенных индексов с удаленными узлами, сначала следует обновить мастер. Протокол API, используемый между мастером и узлами, получил некоторые обновления, но мастер все еще может общаться с узлами, используя более старую версию.
Конфигурация
Существуют настройки, устаревшие в Manticore по сравнению с Sphinx 2.3.2. Напоминаем, что в 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 engine, который является лучшим выбором, так как FEDERATED включен во все варианты MySQL (в отличие от SphinxSE, который распространяется только с MariaDB).
Компиляция
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. Мы рекомендуем изменить местоположение файла pid в sphinx.conf, а не редактировать файл manticore.service, так как будущие обновления могут перезаписать изменения, внесенные в файл службы, и потребуется повторная патчинг.
Следующим шагом является установка разрешений на существующие папки Sphinx для пользователя manticore.
На этом этапе вы можете запустить службу Manticore с помощью service manticore start или systemctl start manticore.
Если вам нужна помощь с обновлением с Sphinx, не стесняйтесь спрашивать на официальном канале slack или на форуме .