2

新しい ES クラスター v5.x を作成しました。復元用の新しいバックアップ リポジトリを追加しました (古い ES 2.x)。スナップショットから復元しましたが、すべて問題ありませんでした。ES スナップショットには保持期間があります。バックアップにはs3ストレージとrepository-s3プラグインを使用しています。そして、保持期間がこのスナップショットを削除している間、エラーが発生しました:

{

    "error": {
        "root_cause": [
            {
                "type": "snapshot_missing_exception",
                "reason": "[s3_repository:snapshot_201701040203/snapshot_201701040203]  is missing"
            }
        ],
        "type": "snapshot_exception",
        "reason": "[s3_repository:snapshot_201701040203/snapshot_201701040203] Snapshot could not be read",
        "caused_by": {
            "type": "snapshot_missing_exception",
            "reason": "[s3_repository:snapshot_201701040203/snapshot_201701040203]  is missing",
            "caused_by": {
                "type": "no_such_file_exception",
                "reason": "Blob object [snap-snapshot_201701040203.dat] not found: The specified key does not exist. (Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey; Request ID: DB308DF310809F58)"
            }
        }
    },
    "status": 500

}

完全なログ:

[2017-01-30T13:18:57,344][WARN ][r.suppressed             ] path: /_snapshot/s3_repository/_all, params: {repository=s3_repository, snapshot=_all}
org.elasticsearch.snapshots.SnapshotException: [s3_repository:snapshot_201701040203/snapshot_201701040203] Snapshot could not be read
        at org.elasticsearch.snapshots.SnapshotsService.snapshots(SnapshotsService.java:187) ~[elasticsearch-5.1.2.jar:5.1.2]
        at org.elasticsearch.action.admin.cluster.snapshots.get.TransportGetSnapshotsAction.masterOperation(TransportGetSnapshotsAction.java:122) [elasticsearch-5.1.2.jar:5.1.2]
        at org.elasticsearch.action.admin.cluster.snapshots.get.TransportGetSnapshotsAction.masterOperation(TransportGetSnapshotsAction.java:50) [elasticsearch-5.1.2.jar:5.1.2]
        at org.elasticsearch.action.support.master.TransportMasterNodeAction.masterOperation(TransportMasterNodeAction.java:86) [elasticsearch-5.1.2.jar:5.1.2]
        at org.elasticsearch.action.support.master.TransportMasterNodeAction$AsyncSingleAction$3.doRun(TransportMasterNodeAction.java:170) [elasticsearch-5.1.2.jar:5.1.2]
        at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:527) [elasticsearch-5.1.2.jar:5.1.2]
        at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-5.1.2.jar:5.1.2]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_111]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_111]
        at java.lang.Thread.run(Thread.java:745) [?:1.8.0_111]
Caused by: org.elasticsearch.snapshots.SnapshotMissingException: [s3_repository:snapshot_201701040203/snapshot_201701040203]  is missing
        at org.elasticsearch.repositories.blobstore.BlobStoreRepository.getSnapshotInfo(BlobStoreRepository.java:566) ~[elasticsearch-5.1.2.jar:5.1.2]
        at org.elasticsearch.snapshots.SnapshotsService.snapshots(SnapshotsService.java:182) ~[elasticsearch-5.1.2.jar:5.1.2]
        ... 9 more
Caused by: java.nio.file.NoSuchFileException: Blob object [snap-snapshot_201701040203.dat] not found: The specified key does not exist. (Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey; Request ID: 38087D5B4A20B627)
        at org.elasticsearch.cloud.aws.blobstore.S3BlobContainer.readBlob(S3BlobContainer.java:92) ~[?:?]
        at org.elasticsearch.repositories.blobstore.ChecksumBlobStoreFormat.readBlob(ChecksumBlobStoreFormat.java:100) ~[elasticsearch-5.1.2.jar:5.1.2]
        at org.elasticsearch.repositories.blobstore.BlobStoreFormat.read(BlobStoreFormat.java:89) ~[elasticsearch-5.1.2.jar:5.1.2]
        at org.elasticsearch.repositories.blobstore.BlobStoreRepository.getSnapshotInfo(BlobStoreRepository.java:560) ~[elasticsearch-5.1.2.jar:5.1.2]
        at org.elasticsearch.snapshots.SnapshotsService.snapshots(SnapshotsService.java:182) ~[elasticsearch-5.1.2.jar:5.1.2]

このスナップショット リポジトリを削除して、すべてのインデックスを削除しようとしました。しかし、このリポジトリを再度追加すると、同じエラーが発生します。どうすれば ES を復元できますか? ES は古いスナップショットに関する情報をどこで取得しますか?

よろしくお願いします。

4

2 に答える 2

0

今日、この問題に遭遇しました。私の状況は少し異なりますが、これが役立つかもしれません。ES 5 はバケット内のスナップショットのインデックスを維持しているようですが、ES 2.x はそうではありません。

私のシナリオでは、2.x から 5.x に移行しています。昨日、2.x 環境で作成した一連のスナップショットを 5.x 環境に復元しました。昨夜、2.x 環境で別のスナップショットが作成されました。スナップショットを復元しようとすると、スナップショットが存在しないというエラーが表示されます (存在する場合でも)。

s3 バケット内の 2 つのファイルの名前を変更すると、ES 5 はそのインデックスを再構築し、新しいスナップショットを表示します。2 つのファイルは、index-0 と index.latest です。

それが役立つことを願っています。

于 2017-01-31T20:28:44.970 に答える