본문 바로가기

dev/스프링

Spring ElasticSearch Snapshot Backup Restore

스프링에서 ElasticSearch 데이터를 스냅샷으로 백업하고 복원하는 방법입니다.

 

이전에 작성한 ElasticSearch 스냅샷 생성하는 방법은 직접 kibana에서 작업해야 했는데

 

이번에는 REST API를 통해 스프링에서 처리하는 방법입니다.

 

https://tiqndjd12.tistory.com/278

 

ElasticSearch Snapshot Backup Restore

ElasticSearch 데이터를 스냅샷으로 백업하고 복원하는 방법입니다.  스냅샷을 생성하기 전에 먼저 elasticsearch.yml 파일에 스냅샷이 저장될 레포지토리를 설정합니다. elasticsearch.yml 파일은 /usr/share/

tiqndjd12.tistory.com

 

스냅샷 레포지토리 생성과 등록은 사전에 완료되었다고 가정하고 진행하겠습니다.

 

사전 정보가 필요하신 분은 위의 링크를 참고하시면 됩니다.

 

cronSnapshot 메소드

 

위의 코드는 스케줄러로 ElasticSearch 스냅샷을 생성하고 있습니다.(36 ~ 59라인)

 

@Scheduled 어노테이션을 사용해 매일 오전 2시에 cronSnapshot 메소드를 실행하도록 예약합니다.(36라인)

 

스냅샷 이름을 식별하기 위해 UUID를 사용하여 생성했습니다.(38 ~ 39라인)

 

스냅샷 이름을 포함하여 백업 URL을 생성하고 있습니다.(41 ~ 42라인)

 

indices, ignore_unavailable, include_global_state 속성은 이전에 작성한 것과 동일하게 설정했습니다.(44 ~ 48라인)

 

REST API의 PUT 메소드 방식을 통해 ElasticSearch 스냅샷을 생성합니다.(50라인)

 

ElasticSearchUtil put 메소드

 

ElasticSearch 스냅샷 생성하는 코드는 새벽 2시에 실행하도록 되어있어서 테스트 코드로 실행했습니다.

 

스냅샷 생성 조회 화면

 

정상적으로 스냅샷이 생성된 것을 확인할 수 있습니다.

 

restoreSnapshot 메소드

 

위의 코드는 클라이언트로부터 스냅샷 이름을 받아서 해당 스냅샷으로 복원하고 있습니다.(61 ~ 71라인)

 

스냅샷 이름을 포함하여 복원 URL을 생성하고 있습니다.(62 ~ 63라인)

 

indices, ignore_unavailable, include_global_state 속성은 이전에 작성한 것과 동일하게 설정했습니다.(65 ~ 68라인)

 

REST API의 POST 메소드 방식을 통해 ElasticSearch 스냅샷을 생성합니다.(70라인)

 

ElasticSearchUtil post 메소드

 

스냅샷 복원 before

 

스냅샷 복원 after

 

ElasticSearch 스냅샷으로 복원하는 코드를 테스트 코드로 실행했는데 정상적으로 복원된 것을 확인할 수 있습니다.

 

ElasticSearch 데이터 백업 및 복원을 스프링에서 처리할 수 있기 때문에 유용할 거 같습니다.

'dev > 스프링' 카테고리의 다른 글

Spring Async CompletableFuture  (0) 2024.06.12
Spring Async 비동기 처리  (0) 2024.06.10
Spring ElasticSearch 첨부파일 조회  (0) 2024.05.12
Spring ElasticSearch 첨부파일 색인  (0) 2024.05.11
Spring ClassPathResource  (0) 2024.04.21