2017-07-19 15 views
0

私のESインスタンスをあるサーバーから別のサーバーに(すべてのデータと共に)移行したいと考えました。インデックス検索が完了しない

したがって、scpの新しいサーバーにデータのスナップショットを作成し、新しいサーバーでESのインスタンスを起動し、スナップショットを復元してからESを再起動しました。新しいサーバー。

問題はESがインデックス作成を終了しないことです。 redインデックスの数は約10のインデックスを処理した後も固定されています(私は約300+インデックスを持っています)

サイドノート、新しいESインスタンスは新しいサーバーのドッカー上で実行されています。古いサーバー。

+0

次のコマンドを実行しているとき、あなたは何を得るのです: 'カール-XGETはlocalhost:?9200/_cat /インデックス/ v'と'カール-XGET localhostと:9200/_cat/recovery /?v'と 'curl -XGET localhost:9200/_cat/allocation /?v'? – Val

答えて

0

これはとても愚かでしたが、実際にはESスナップショット/リストアのドキュメントには記載されていません。

新しいサーバーのI called /_snapshot/my_backup/snapshot_1/_restore to restore my snapshotの後、すべてのインデックスがステータスyellowとして表示されました。だから、私はESを停止して、再インデックスを強制するために再起動しなければならないと考えました。

これは実際にはそうではありません。インスタンス上で_restoreを呼び出すと、データのインデックス付けが開始され、すべてのインデックスステータスが 'yellow'であっても、すぐに完了しません。

_restoreを呼び出した後で私のESインスタンスを強制終了したとき、実際にはいくつかのインデックスのみが復元されました。つまり、_restoreを呼び出すとインデックスをESに処理する時間がありました。 ESがバックアップを開始したとき、それは処理する時間があったいくつかのインデックス(および残りが私が壊れていたと仮定している)を再インデックスすることしかできませんでした。


だから、解決策は単純なものでした:ESが復元を適用終了するのをを、私のすべてのデータを削除するESを起動し、スナップショット_restoreエンドポイントを呼び出し、その後、辛抱強く待ちます。 (私は秩序の事を好きだからsort)その数は私が行ってもいいし0を打ったら

curl -XGET 'localhost:9200/_cat/indices?v&pretty' | egrep "(k|m)b" | sort | wc -l


私は、このコマンドを使用して復元するスナップショットの進行状況を監視することができました。

後知恵で

、このソリューションは痛いほど明白です....

関連する問題