Exileum
@Exileum
PHP-программист

Как сохранить состояние дельта-индекса sphinx?

Есть 2 сервера MySQL. Репликация настроена на режим master-master. Один из серверов всегда находится в read-only для избежания случайных правок в базе. При необходимости первый сервер становится read-only и запись переносится на второй.

При такой конфигурации хотелось бы индексировать базу сфинксом с read-only сервера, но в read_only нельзя сохранить  ID последнего индексируемого объекта (в частности REPLACE INTO phpbb_sphinx SELECT 1, MAX(post_id) FROM phpbb_posts). Есть ли возможность сохранить состоянии дельта индекса без записи в базу?
  • Вопрос задан
  • 3061 просмотр
Пригласить эксперта
Ответы на вопрос 3
Создайте для дельта-индекса отдельный конфиг.
После завершения индексирования генерируйте новый конфиг-файл с последним проиндексированным ид

Костыль конечно, но должно работать.
Ответ написан
Комментировать
@Fortop
Tech/Team lead
Как альтернатива вышесказанному — вы же можете прочитать docid последнего проиндексированного документа из самого индекса.
Ответ написан
Комментировать
ManticoreSearch
@ManticoreSearch
Делайте индексацию через xmlpipe, tsvpipe или csvpipe, которые работают так, что можно указать команду, которая и вернет все данные, которые должны быть проиндексированы. Эта же команда может и сохранить состояние куда нужно, а не только туда, откуда она читает данные.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы