Есть ли возможность достать данные после подобной ситуации:
Данные записывались в index1
Был тестовый index2
В один момент был удален index2, и создан заново с новым mapping и в него закачали данные из index1 и все новые данные стали писаться в index2
В какой-то момент потребовалась перезагрузка машины, в момент перезагрузки вторая машина из кластера стала мастером и после перезагрузки машины вдруг index2 стал старым (до того как его удалили и создали заново и залили новые данные).
Можно как-то откатить изменения которые сделал кластер когда одна машина была выключена и потом включилась?
Или восстановить данные из каталога индекса?
На диске в каталоге /var/lib/elasticsearch/nodes/0/indices/ есть каталог с данными, который эластик не видит.
Видит все остальные индексы, а вот нужный не видит.
Что нужно сделать чтобы этот каталог Эластик увидел как индекс?
Я не понимаю, что у Вас произошло. Что в логах на мастере и на другой ноде? По идеи, когда elasticsearch находит индекс на диске, то он его автоматически подцепляет. Как установка path.data настроена на этих нодах?
Было два сервера в кластере.
На мастере удалили index2 (uuid: AAAA) и создали его заново (uuid BBBB) с новым маппингом и загрузили в него данные.
(была странность с местом: сначала оставалось 7% свободного места, а потом раз и 30% стало)
И эти данные видать не синхронизировались со вторым сервером (на нем остался старый вариант index2 (uuid AAAA).
Мастер выключили. Второй сервер стал мастером. Первый сервер включили, он подключился к кластеру и со второго сервера закачал index2 (uuid AAAA)
В каталоге с данными оказалось два каталога (с разными UUID: AAAA и BBBB, у которых одинаковое название индекса index2). Эластик видит "старый" index2 (uuid AAAA)
Ошибка писалась вот такая:
can not be imported as a dangling index, as index with same name already exists in cluster metadata
Пробовал удалить index2 (uuid AAAA)
Папка (uuid BBBB) не подцепилась
Единственно, что еще не пробовал - это перегрузить еще раз эластик.
На данный момент каталог с нужными данными убрали из каталога с данными (/var/lib/elasticsearch/nodes/0/inidices/)
Вопрос: если я скопирую папку в обособленный эластик. Запущу его - он подцепит эту папку?
Попробовал скопировать только каталоги _state
ругался на отсутствие traslog/...ckp
Скопировал этот файл с индекса с таким же маппингом и стало ругаться вот так:
[2017-12-05T13:17:38,463][WARN ][o.e.c.a.s.ShardStateAction] [ZKcktVG] [testindex][0] received shard failed for shard id [[testindex][0]], allocation id [NMty1uqXSTu4_E-YfYfIrA], primary term [0], message [failed recovery], failure [RecoveryFailedException[[testindex][0]: Recovery failed on {ZKcktVG}{ZKcktVGAS2qLeSS_V5dNNA}{RcxrzUiHS_yZPijMc0M-Fg}{127.0.0.1}{127.0.0.1:9300}]; nested: IndexShardRecoveryException[failed to recover from gateway]; nested: EngineCreationFailureException[failed to create engine]; nested: TranslogCorruptedException[expected shard UUID [78 76 45 45 6d 58 36 6e 52 41 79 6e 4c 55 36 76 43 4d 71 48 59 51] but got: [45 34 35 64 76 4a 42 31 53 34 47 6b 47 77 43 65 66 78 5f 61 32 77] this translog file belongs to a different translog. path:/var/lib/elasticsearch/nodes/0/indices/ujx_TJvxTteiCIjIiP1yKg/0/translog/translog-1.tlog]; ]
org.elasticsearch.indices.recovery.RecoveryFailedException: [testindex][0]: Recovery failed on {ZKcktVG}{ZKcktVGAS2qLeSS_V5dNNA}{RcxrzUiHS_yZPijMc0M-Fg}{127.0.0.1}{127.0.0.1:9300}
at org.elasticsearch.index.shard.IndexShard.lambda$startRecovery$5(IndexShard.java:2004) ~[elasticsearch-6.0.0.jar:6.0.0]
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:569) [elasticsearch-6.0.0.jar:6.0.0]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_151]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_151]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_151]
Caused by: org.elasticsearch.index.shard.IndexShardRecoveryException: failed to recover from gateway
at org.elasticsearch.index.shard.StoreRecovery.internalRecoverFromStore(StoreRecovery.java:396) ~[elasticsearch-6.0.0.jar:6.0.0]
at org.elasticsearch.index.shard.StoreRecovery.lambda$recoverFromStore$0(StoreRecovery.java:93) ~[elasticsearch-6.0.0.jar:6.0.0]
at org.elasticsearch.index.shard.StoreRecovery.executeRecovery(StoreRecovery.java:286) ~[elasticsearch-6.0.0.jar:6.0.0]
at org.elasticsearch.index.shard.StoreRecovery.recoverFromStore(StoreRecovery.java:91) ~[elasticsearch-6.0.0.jar:6.0.0]
at org.elasticsearch.index.shard.IndexShard.recoverFromStore(IndexShard.java:1542) ~[elasticsearch-6.0.0.jar:6.0.0]
at org.elasticsearch.index.shard.IndexShard.lambda$startRecovery$5(IndexShard.java:2000) ~[elasticsearch-6.0.0.jar:6.0.0]
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.