Задать вопрос
@juniorspecialist
Джуниор

Как восстановить корректную работу базы ElasticSearch?

Всем привет!
Есть база на эластике 1.5.0. Общее кол-во данных во всех индексах - 1328134024. Но спустя время, запрос на подсчёт кол-ва показывает(localhost:9200/_count) - {"count":643792946,"_shards":{"total":35,"successful":35,"failed":0}}. Как я вижу примерно половина данных потеряна куда-то. Как их восстановить ? Физически размер базы данных не изменился, как был 200гиг так и остался.
Если выполнить запрос - localhost:9200/_cluster/health?pretty=true , видно следующее:
{
  "cluster_name" : "elasticsearch",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 35,
  "active_shards" : 35,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 35,
  "number_of_pending_tasks" : -1
}

Т.е. по какой-то причине есть" НЕРАСПРЕДЕЛЕННЫЕ ШАРДЫ".
Подскажите каким образом можно восстановить нормальную работу базы ?
Ранее такая проблема случалась, чтобы её решить, я удалял всю бд и заново восстанавливал её из бэкапа, но это лишь на время помогает. Все параметры эластика по-умолчанию, кроме
curl -XPUT localhost:9200/_cluster/settings -d '{"transient":{"cluster.routing.allocation.enable": "all"}}'
  • Вопрос задан
  • 837 просмотров
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
mobilesfinks
@mobilesfinks
сисадмин *nix
Похоже на Split-Brain
у тебя обе ноды роль мастера выполняют?
поставь плагин kopf и HQ. Мы на работе обоими пользуемся, но мне лично нравится kopf. В нём видно обычно что с шардами и в каком они состоянии. У нас сплитбрейна не было ни разу при двух нодах. Сейчас 4 ноды (3 мастера), но так же не было проблем.
Возможна такая проблема (split-brain) из-за плохого соединения.
Ответ написан
Комментировать
@mkuzmin
возможно поможет:

https://aphyr.com/posts/317-call-me-maybe-elasticsearch

habrahabr.ru/company/percolator/blog/222765

С точки зрения консистентности, доступности и устойчивости к сбоям сети, Elasticsearch — это CP-система (consistency & partition tolerance) для довольно слабого определения термина «консистентность». Если преобладают операции, связанные только с чтением, Elasticsearch позволяет достичь AP-поведения (availability & partition tolerance) путем уменьшения параметра minimum master nodes, то есть отсутствием кворума. Однако обычно необходимо, чтобы большинство узлов в кластере было доступно. Без этого большинства запись в неправильно сконфигурированный кластер, то есть кластер с «разделенным мозгом» (split brain), может привести к безвозвратной потере данных. Это ни в коем случае не является спецификой Elasticsearch и характерно и для других серверов.


посмотри в сторону minimum master nodes
возможно, он должен быть равен кол-ву серверов
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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