Elasticsearch 스냅샷 정보
기본적으로 GitHub Enterprise Server Backup UtilitiesGitHub Enterprise Server Backup Service 디스크에서 직접 파일을 복사하여 검색 인덱스 데이터를 백업합니다. 이 방법은 Elasticsearch의 자체 권장 사항을 따르지 않고, 대량의 백업 어플라이언스 스토리지를 사용할 수 있으며, 백업된 인덱스가 손상될 위험이 있습니다.
선택적 대안으로, GitHub Enterprise Server 인스턴스는 Elasticsearch에 내장된 증분 스냅샷 및 복원 기능을 지원합니다. 지원되는 클라우드 스토리지 공급자를 구성하고 스냅샷 백업 전략을 사용하도록 설정하는 경우:
ghe-backup는 구성된 클라우드 스토리지 계정에 검색 인덱스 데이터의 증분 스냅샷을 만듭니다. 증분 스냅샷은 특히 후속 백업에서 전체 복사본보다 빠릅니다.ghe-restore는 대상 인스턴스의 GitHub Enterprise Server 버전과 일치하는 스냅샷이 있는 경우 클라우드 스토리지 계정에서 검색 인덱스 데이터를 복원합니다.- 스냅샷은 패치 버전별로 GitHub Enterprise Server 격리되므로 버전 간에 더 안전한 롤백이 가능합니다.
이 기능은 옵트인입니다. 스냅샷 리포지토리를 구성하지 않으면 기존 디스크 기반 메서드를 사용하여 검색 인덱스 GitHub Enterprise Server 인스턴스 데이터를 계속 백업합니다.
사전 요구 사항
- 지원되는 클라우드 스토리지 공급자: Azure Blob Storage, Amazon S3 또는 Google Cloud Storage(또는 이러한 API 중 하나와 호환되는 서비스).
- 스냅샷 리포지토리로 사용하려는 스토리지 컨테이너 또는 버킷입니다. 이 컨테이너를 직접 만들거나 버킷을 만들어야 합니다. GitHub Enterprise Server은 사용자를 위해 이를 생성해 주지 않으며, 컨테이너나 버킷이 미리 존재하지 않으면 리포지토리 등록이 실패합니다.
스냅샷 스토리지 공급자 구성
SSH를 통해 ghe-config를 사용하여 다음 설정을 설정합니다. 자세한 내용은 관리 셸(SSH)에 액세스을(를) 참조하세요.
구성을 적용하여 Elasticsearch에 스냅샷 리포지토리를 등록합니다. 리포지토리의 이름은 search_index_snapshots-VERSION``VERSION 현재 GitHub Enterprise Server 릴리스 버전입니다.
Azure Blob 저장소
-
다음 비밀을 설정합니다.
ghe-config secrets.elasticsearch.snapshot-provider azure ghe-config secrets.elasticsearch.snapshot.azure.container YOUR-CONTAINER ghe-config secrets.elasticsearch.snapshot.azure.account-name YOUR-STORAGE-ACCOUNT ghe-config secrets.elasticsearch.snapshot.azure.account-key YOUR-ACCOUNT-KEY필요에 따라 사용자 지정 Blob 엔드포인트 접미사를 설정합니다(기본값:
core.windows.netghe-config secrets.elasticsearch.snapshot.azure.endpoint-suffix YOUR-ENDPOINT-SUFFIX -
실행 구성이 적용됩니다.
ghe-config-apply
아마존 S3
-
다음 비밀을 설정합니다.
ghe-config secrets.elasticsearch.snapshot-provider s3 ghe-config secrets.elasticsearch.snapshot.bucket-name YOUR-BUCKET-NAME ghe-config secrets.elasticsearch.snapshot.service-url YOUR-SERVICE-URL ghe-config secrets.elasticsearch.snapshot.region YOUR-AWS-REGION ghe-config secrets.elasticsearch.snapshot.access-key-id YOUR-ACCESS-KEY-ID ghe-config secrets.elasticsearch.snapshot.access-secret YOUR-ACCESS-SECRET서비스 URL의 경우 S3 엔드포인트를 사용합니다. 예를 들면 다음과 같습니다
https://s3.us-east-1.amazonaws.com. -
실행 구성이 적용됩니다.
ghe-config-apply
Google 클라우드 Storage
-
버킷에 대한 액세스 권한이 있는 JSON 서비스 계정 키를 만든 다음 base64로 인코딩합니다.
base64 -w0 service-account.json -
다음 비밀을 설정합니다.
ghe-config secrets.elasticsearch.snapshot-provider gcs ghe-config secrets.elasticsearch.snapshot.gcs.bucket YOUR-BUCKET-NAME ghe-config secrets.elasticsearch.snapshot.gcs.credentials YOUR-BASE64-ENCODED-CREDENTIALS -
실행 구성이 적용됩니다.
ghe-config-apply
등록 확인
구성 적용이 완료되면 스냅샷 리포지토리가 등록되었는지 확인합니다.
curl -k "http://127.0.0.1:9200/_snapshot/search_index_snapshots-$(ghe-version -v)/_status"
필요한 비밀이 없으면 리포지토리를 등록하는 동안 구성 적용이 실패합니다. 비밀을 업데이트하고 다시 실행 ghe-config-apply 하여 다시 시도합니다.
백업 및 복원 중에 스냅샷 사용
스토리지 공급자를 구성하면 스냅샷 리포지토리가 등록되지만 스냅샷 백업 전략 ghe-backup``ghe-restore 도 사용하도록 설정하고 자동으로 사용해야 합니다.
-
GitHub Enterprise Server Backup Service: 장치에서
ghe-config을 사용하여 전략을 설정합니다.ghe-config backup.es-backup-strategy snapshot -
GitHub Enterprise Server Backup Utilities: 백업 호스트의 파일에서
backup.config전략을 설정합니다.GHE_ES_BACKUP_STRATEGY=snapshot기본값은
rsync기존 디스크 기반 백업 동작을 유지하는 것입니다. GitHub Enterprise Server Backup Utilities 는 스냅샷 메타데이터만 로컬로 저장합니다. 스냅샷 콘텐츠는 구성된 클라우드 스토리지에 남아 있습니다.
백업 전략을 설정하지 않으면 스냅샷 리포지토리를 수동으로 관리할 수 있지만 ghe-backup``ghe-restore 디스크 기반 메서드를 계속 사용합니다.
수동으로 스냅샷 관리
다음 명령을 사용하여 Elasticsearch 스냅샷을 직접 관리할 수 있습니다. 사용 정보를 확인하려면 모든 명령과 함께 -h 플래그를 사용하세요.
| Command | 설명 |
|---|---|
ghe-es-create-snapshot | 구성된 리포지토리에 새 스냅샷을 만듭니다. |
ghe-es-list-snapshots | 스냅샷 리포지토리 또는 리포지토리 내의 스냅샷을 나열합니다. |
ghe-es-restore-snapshot | 스냅샷에서 검색 인덱스를 복원합니다. |
팁
일상적인 백업 및 복원의 경우 이러한 명령을 직접 사용하는 대신 GitHub Enterprise Server Backup Utilities 또는 GitHub Enterprise Server Backup Service을 사용하십시오. 백업 도구는 일관된 백업 또는 복원을 보장하기 위해 Elasticsearch 스냅샷을 인스턴스의 다른 데이터와 연동합니다. 전체 인스턴스 백업 또는 복원과 독립적으로 검색 인덱스 스냅샷을 관리해야 하는 경우에만 수동 명령을 사용합니다.
이전 버전에서 스냅샷 복원
이전 GitHub Enterprise Server 버전에서 만든 스냅샷을 이후 버전으로 복원할 수 있습니다. 이후 버전에서 이전 버전으로 스냅샷을 복원할 수 없습니다.
-
이전 버전에 사용 가능한 스냅샷을 나열합니다.
ghe-es-list-snapshots -v 3.14.0 -
원하는 스냅샷을 복원합니다.
ghe-es-restore-snapshot -v 3.14.0 -s SNAPSHOT-NAME
Elasticsearch는 복원된 인덱스를 현재 버전의 형식으로 자동으로 업그레이드합니다.
스냅샷 스토리지 관리
Elasticsearch 스냅샷은 증분이지만 클라우드 스토리지 계정은 시간이 지남에 따라 여전히 이전 스냅샷을 누적할 수 있습니다. 무제한 스토리지 증가를 방지하려면 스토리지 공급자를 사용하여 보존 요구 사항보다 오래된 스냅샷을 자동으로 삭제하도록 수명 주기 정책을 구성합니다. 자세한 내용은 공급자의 설명서를 참조하세요.