-
elasticsearch translog는 왜 필요할까?elasticsearch 2021. 2. 24. 21:19반응형
엘라스틱 서치는 샤드에 일어나는 모든 변경사항을 담고 있는 특수 형태 로그이며
고가용성 장애 복구를 위한 백업 데이터 및 데이터 유실 방지를 위해 사용된다
해당 파일의 로그는 언제 삭제될까?
삭제 되는 시점은 fsync() 실행되는 시점 즉 es 기준 flush 루씬기준 commit이 발생해 디스크로 쓰여지고 난 뒤 쓰여진 내용은 로그파일에서 제거된다
Translog의 동작 순서
- 데이터가 추가되면 Translog에 기록되고 동시에 인메모리 버퍼에 추가된다.
- Refresh가 수행되면 인메모리 버퍼에서는 사라지지만 Translog에는 계속 남아있다.
- 더 많은 데이터가 추가되고 지속적으로 세그먼트가 생성된다.
- Translog가 일정 크기 이상으로 커지면 Flush 작업이 수행된다.
- 시스템 캐시의 내용이 디스크에 Flush된다.
- TransLog의 기록이 비로소 삭제된다
존재 이유
위에서도 말했지만 복구를 위해서다 flush를 주기적으로는 하지만 버퍼에 데이터가 쌓이고 시스템 캐시에 세그먼트가 생겨도
실제로 디스크에는 쓰여지지 않은 상태의 시간 공백이 있다 이전 커밋 이후에 시스템 장애가 난다면 해당 데이터를 복구할 방법이 없는데
translog가 있다면 다시 로딩 될 때 체크해서 해당 데이터를 동기화 하여 신뢰성 있는 시스템이 완성된다
반응형'elasticsearch' 카테고리의 다른 글
컬럼 기반 저장소 와 행 기반 저장소 (0) 2021.03.03 Elasticsearch(with lucene) DocValue 에 대해서 알아보자 (0) 2021.02.27 elasticsearch function_score (0) 2021.02.22 elasticseaarch eager global ordinal를 사용해 퍼포먼스를 올려보자 (0) 2021.02.20 elasticsearch similarity module 이용해서 score 수정하기 (0) 2021.02.15