Миграция индексов на версию 3

Manticore Search 3 впервые приносит несовместимость индексов, и он не может загрузить существующие индексы, созданные с 2.x. Это означает, что индексы должны быть готовы перед обновлением searchd до 3.x.

Чтобы иметь индексы в новом формате, есть два варианта:

  1. Полностью перестроить индексы. Если ваши индексы не очень большие и не являются RealTime, это простой путь.
  2. Использовать инструмент конвертации, который может автоматически конвертировать индекс любого типа (обычный, перколятор, RealTime) из формата Manticore 2 / Sphinx 2 в новый формат.

Есть несколько вещей, о которых следует помнить перед началом миграции:

  • идентификаторы документов теперь являются положительными знаковыми большими целыми числами, ранее они были беззнаковыми большими целыми числами.
  • механизм индексов с использованием списков убийств значительно изменился.
  • перед началом конвертации RealTime индекса, RAM-чанк должен быть пустым. Если в нем есть данные, их следует записать на диск с помощью FLUSH RAMCHUNK. Эта операция должна быть выполнена на существующем 2.x, перед выполнением обновления.
  • v3 не ограничивает строковые / json атрибуты 4 ГБ на индекс. В некоторых случаях в прошлом индексы приходилось делить на множество чанков только для того, чтобы позволить вмещать данные. В v3 индекс такого типа можно уменьшить до одного или уменьшить до более ограниченного числа чанков (в случае, если желается сохранить многопоточную обработку поиска). Ограничение в 4 ГБ также применялось к RT индексам. Это означало, что OPTIMIZE не мог уменьшить RT чанки до одного, если был достигнут порог в 4 ГБ. После конвертации 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

Обратите внимание, что файл hitlists (.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