Elasticsearch

[Elasticsearch] snapshot/restore 시 버전 이슈

'김용환' 2015. 8. 1. 11:51



Elasticsearch 의 snapshot/restore 사용시 버전을 잘 확인해야 한다.


일반적으로 잘 모르니. 동일 버전에서만 사용할텐데, 소스를 보면 잘 알 수 있다.

snapshot한 일래스틱서치 버전이 restore할 일래스틱서치 버전보다 하위이면 에러가 발생한다.


즉 snapshot한 버전이 1.4이고, restore할 버전이 1.5 이면 문제가 되지 않지만,

  snapshot한 버전이 1.5이고, restore할 버전이 1.4 이면 문제가 된다.


자세한 것은 아래 소스를 살펴본다.


https://github.com/elastic/elasticsearch/blob/bfbee383bd2b2e4a928006d1703c22c0a2aae155/core/src/main/java/org/elasticsearch/snapshots/RestoreService.java


 private void validateSnapshotRestorable(SnapshotId snapshotId, Snapshot snapshot) {

        if (!snapshot.state().restorable()) {

            throw new SnapshotRestoreException(snapshotId, "unsupported snapshot state [" + snapshot.state() + "]");

        }

        if (Version.CURRENT.before(snapshot.version())) {

            throw new SnapshotRestoreException(snapshotId, "the snapshot was created with Elasticsearch version [" +

                    snapshot.version() + "] which is higher than the version of this node [" + Version.CURRENT + "]");

        }

    }





참고로 snapshot 파일만 다른 서버로 보내고, 메타데이터 설정만 동기화하면 바로 restore로 복구된다!!!