이번 블로그는 장애 대비를 위해 데이터를 백업할 수 있는 Backup 서비스를 살펴 보도록 하겠습니다.
Backup 서비스의 특성은 다음과 같습니다.
- 개별적인 Bucket 혹은 모든 Bucket에 대해 Full 백업과 Incremental 백업의 스케줄링을 지원
- 이전에 수행된 백업의 Merge 작업 스케줄링 지원
- 백업될 데이터는 서비스 단위로 선택도 가능
Backup 서비스의 아키텍처는 다음과 같습니다.
- leader-follower 아키텍처 : 클러스터 내 Backup 서비스를 운영하는 노드 중 한 개의 노드가 leader로 선출되고 이 노드가 백업 작업을 분배, 관리하고 백업 스토리지도 모든 Backup 서비스 노드에서 접근 가능한 지 확인
- leader 노드에 장애가 생기면 Rebalance가 수행될때까지 Backup 서비스가 중단되고 Rebalance 과정에서 새로운 leader 노드를 선출하고 Backup 서비스는 재개
Backup 서비스는 Plan이라는 스케줄링을 통해 자동화합니다. Plan은 다음 정보를 포함합니다.
- 백업될 서비스
- 백업을 수행할 스케줄
- 수행할 작업 종류 : Full/Incremental/Merge
Backup 서비스는 Repository라는 개념을 사용합니다.
- Repository : 백업되는 데이터를 저장할 위치
- 클러스터 내 모든 노드가 접근할 수 있는 위치
- 특정 Plan에 정의
Backup 서비스는 특정 Repository에 저장된 백업에 대한 히스토리에 대한 검사를 수행할 수 있고 Plan을 생성, 조회, 삭제할 수 있습니다. Repository에서 특정 Document도 검색할 수 있습니다.
그리고 Backup 서비스는 특정 Repository에 저장된 개별 백업, 선택된 백업으로 클러스터를 복구하거나 개별 Bucket을 복구할 수 있습니다. 일부 데이터만을 복구하기 위해 특정한 Document Key와 Value 만을 필터링할 수 있습니다.
Backup 서비스는 더 이상 필요하지 않은 Repository를 아키이빙할 수 있습니다. 아키이빙된 Repository는 접근은 가능하지만 그 Repository에 더 이상 백업을 수행할 수 없습니다.
참고자료
https://docs.couchbase.com/server/current/learn/services-and-indexes/services/backup-service.html