2012-07-03 2 views
6

У меня есть два экземпляра Jackrabbit, содержащие одинаковый контент. Восстановление индекса Lucene происходит медленно, 30 часов, а время ожидания, необходимое в кластере, является рискованным. Возможно ли вместо этого просто переиндексировать один Jackrabbit, а затем скопировать индекс Lucene из этого экземпляра в другой?Копирование индексов Lucene между репозиториями Jackrabbit

Наивное копирование файлов индекса Lucene под каталогом рабочей области не работает. Проблема заключается в том, что контент индексируется по номеру документа, который сопоставляется с UUID, который сопоставляется с JCR-адресом для индексированного узла, но эти UUID нестабильны для заданного пути между экземплярами Jackrabbit. (Оба являются экземплярами издателя Day CQ, заполненными репликацией из экземпляра экземпляра CQ.)

Мне удалось найти сопоставление UUID-пути в репозитории под/jcr: system/jcr: versionStorage /, но я не может видеть простой способ скопировать это между репозиториями вместе с индексом Lucene. И тогда я не могу найти идентификатор идентификатора UUID-> в любом месте файлов - это тоже часть индекса Lucene?

Спасибо за любую помощь. Я склоняюсь к простому повторному индексированию второго экземпляра отдельно и принятию простоев, но любые идеи по снижению риска или прошедшему времени переиндексации кластера ценятся!


В конце концов мы будем повторное индексирование-них-как маршрут: нам удалось переориентировать экземпляр тест как дополнительный живой экземпляр, который мы можем упасть в ферму временно, пока мы взять другие два, в свою очередь, для переоценки. Однако мне все равно хотелось бы услышать лучшие способы сделать это!

+0

Пожалуйста, взгляните на это сообщение, хотя, возможно, вы его уже видели. http://stackoverflow.com/questions/670182/index-replication-and-load-balancing –

+0

Спасибо. Нет, я не думаю, что любой из них имеет отношение ко мне: это встроенная поисковая система, поэтому я не могу переключиться на Solr, а другие ответы discus копируют индексные файлы, которых для меня недостаточно. Мне нужно каким-то образом объединить данные узла с индексом и копией, а затем перестроить путь -> UUID -> сопоставление номеров документов на другом или каким-либо образом преобразовать скопированный индекс, чтобы использовать номера документов в целевой системе на исходной системы. – Rup

ответ

2

Это похоже на страшную идею, честно говоря. Я не уверен, что есть какой-либо способ гарантировать, что у вас есть одни и те же базовые данные, даже с идентичным контентом и конфигурацией оборудования.

Если ваши номера производительности выглядят как наши, время копирования всего репозитория меньше времени, необходимого для переиндексации. Рассматривали ли вы просто переиндексирование одного репозитория, выполнение резервного копирования/копирования, а затем настройку резервной копии/копии для вашего второго экземпляра?

+0

Спасибо - нет, это не пришло мне в голову, это хорошая идея. Да rsyncing два репозитория быстрее, чем реиндекс, но когда мы rsync жить на тестовой машине, мы всегда в конечном итоге с несколькими глюками. Наш репозиторий слишком велик, и у нас недостаточно хранилищ, чтобы попробовать использовать различные варианты горячего резервирования и восстановления CQ, поэтому я думаю, что нам нужно будет удалить сервер источника копирования, а также сервер назначения копирования, чтобы попробовать это, а затем мы вернулись только к одной машине в реальном кластере, пока копия происходит. Однако я запустил это за команду! – Rup

+0

Если вы посмотрите на то, как работает онлайн-резервное копирование CQ, в основном он выполняет серию rsyncs. На каждой итерации меньше копировать, а затем фиксируется на последней. Мне очень повезло с использованием повторяющихся rsyncs, чтобы сделать то же самое, чтобы скопировать запущенный сервер. Очевидно, что лучше всего работает, если копируемый сервер не видит много записей. – lo5an

Смежные вопросы