Spanner Omni를 사용하면 주문형으로 또는 백업 일정을 사용하여 데이터베이스 전체 백업을 만들 수 있습니다. 백업은 데이터베이스의 전체 데이터를 저장합니다. 운영자 또는 애플리케이션 오류로 인해 논리적 데이터가 손상된 경우 백업을 복원할 수 있습니다.
Spanner Omni 백업 개요
백업은 가용성이 높고 생성된 시점으로부터 최대 1년까지 보관할 수 있습니다. 각 백업에는 연결된 createTime 및 versionTime이 있습니다. createTime은 Spanner Omni에서 백업을 만들기 시작할 때의 타임스탬프입니다. versionTime은 백업이 데이터베이스 콘텐츠를 캡처할 때의 타임스탬프입니다. 백업에는 versionTime의 데이터베이스에 대한 일관된 뷰가 포함됩니다.
주문형 백업의 경우 createTime 및 versionTime은 기본적으로 같습니다. 필요한 경우 주문형 백업을 만들 때 이전 versionTime을 지정할 수 있습니다(데이터베이스의 버전 보관 기간 내에 있는 경우).
예약된 백업의 경우 versionTime은 백업 일정을 만들 때 선택한 시간입니다. Spanner Omni는 versionTime 후 4시간 이내에 백업 생성을 시작하므로 createTime은 이 4시간 내에 포함됩니다. 이는 Spanner Omni에서 요청을 수신하면 백업을 만드는 주문형 백업과는 다릅니다.
예를 들어 주기가 0 7 * * *
UTC(매일 오전 7시(UTC))인 백업 일정을 만든다고 가정해 보겠습니다. 즉, 백업마다 versionTime은 오전 7시(UTC)이고 createTime은 오전 7시(UTC)부터 오전 11시(UTC)까지의 4시간 내의 타임스탬프입니다.
주요 특징
Spanner Omni 백업은 데이터 일관성, 복원력 있는 외부 복제, 자동 만료를 제공합니다.
데이터 일관성: Spanner Omni 데이터베이스 백업은 백업의
versionTime에 트랜잭션적이며 외적 일관성을 가집니다.복제: 백업 파일은 Spanner Omni 배포 외부의 외부 스토리지 시스템에 저장됩니다.
자동 만료: 모든 백업에는 삭제되는 시점을 결정하는 사용자 지정 만료일이 포함됩니다. Spanner Omni는 만료된 백업을 비동기적으로 삭제하므로 백업이 만료되는 시점과 실제로 삭제되는 시점 사이에 지연이 발생할 수 있습니다.
외부 저장소
외부 저장소는 Spanner Omni 배포 외부에 있는 원격 저장소를 나타냅니다. Amazon Simple Storage Service (Amazon S3), Cloud Storage 또는 Amazon S3 호환 스토리지를 외부 저장소로 구성할 수 있습니다. Spanner Omni는 이 외부 저장소에 백업 파일을 저장합니다.
외부 저장소 관리
백업의 저장소 위치를 만들고, 삭제하고, 나열하여 외부 저장소를 관리합니다.
외부 저장소 만들기
Amazon S3 외부 저장소를 만들려면 다음 명령어를 실행합니다.
spanner external-storages create EXTERNAL_STORAGE_ID \
--s3-bucket-name=BUCKET_NAME \
--s3-region=AWS_REGION \
--s3-assume-role-arn=ASSUME_ROLE_ARN
Cloud Storage 외부 저장소 만들기
Cloud Storage 외부 저장소를 만들려면 다음 명령어를 실행합니다.
spanner external-storages create EXTERNAL_STORAGE_ID \
--gcs-bucket-name=BUCKET_NAME
Amazon S3 호환 외부 저장소 만들기
Amazon S3 호환 외부 저장소를 만들려면 다음 명령어를 실행합니다.
spanner external-storages create EXTERNAL_STORAGE_ID \
--s3-compatible-bucket-name=BUCKET_NAME \
--s3-compatible-endpoint=ENDPOINT \
--s3-compatible-credential-file-path=FILE
외부 저장소 삭제
외부 저장소를 삭제하려면 먼저 기존 백업 또는 진행 중인 백업이 없는지 확인합니다. 그런 후 다음 명령어를 실행하세요.
spanner external-storages delete EXTERNAL_STORAGE_ID
외부 저장소 설명
외부 저장소에 대한 정보를 가져오려면 다음 명령어를 실행합니다.
spanner external-storages describe EXTERNAL_STORAGE_ID
외부 저장소 나열
외부 저장소 목록을 가져오려면 다음 명령어를 실행합니다.
spanner external-storages list
백업 설명자
백업 설명자는 외부 저장소에 저장된 완료된 백업의 메타데이터 및 백업 파일 경로를 나타냅니다.
spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID
백업 정보
백업을 만들면 백업 메타데이터가 Spanner Omni에 저장되고 백업 파일은 외부 저장소에 저장됩니다.
백업에는 다음과 같은 백업 versionTime의 데이터베이스 정보가 포함됩니다.
전체 백업에는 모든 데이터가 포함됩니다.
테이블 이름, 필드, 데이터 유형, 보조 색인, 변경 내역, 이러한 항목 간의 관계가 포함된 스키마 정보
ALTER DATABASE SET OPTIONS명령어로 설정된 모든 데이터베이스 옵션
Spanner Omni 백업에는 다음 정보가 포함되지 않습니다.
versionTime이후의 데이터 또는 스키마 변경사항ID 및 액세스 관리 (IAM) 정책
변경 내역 데이터 레코드 변경 내역 스키마는 저장되지만 변경 내역 데이터는 설명되는 변경사항과 거의 동시에 스트리밍되고 사용되어야 합니다.
백업의 외적 일관성을 보장하기 위해 Spanner Omni는 versionTime의 데이터베이스 콘텐츠를 고정합니다. 이렇게 하면 백업 작업을 진행하는 동안 가비지 컬렉션 시스템이 관련 데이터 값을 삭제하는 것을 방지할 수 있습니다.
백업 관리
백업을 만들려면 다음 권한이 필요합니다. 관리자에게 배포에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
| 작업 | IAM 역할 |
|---|---|
| 백업 만들기, 보기, 업데이트, 삭제 | roles/spanner.backupAdmin |
| 백업 만들기 및 보기 | roles/spanner.backupWriter |
백업 만들기
주문형 백업을 만듭니다.
spanner backups create BACKUP_NAME \
--database=DATABASE_ID \
--retention-period=RETENTION_PERIOD \
--async
백업 삭제
백업 메타데이터 및 파일을 삭제합니다.
spanner backups delete BACKUP_NAME
백업 설명
백업에 대한 정보를 가져옵니다.
spanner backups describe BACKUP_NAME
백업 나열
배포에 있는 기존 Spanner Omni 백업을 나열합니다.
spanner backups list
백업 만료 업데이트
백업의 만료일을 업데이트합니다.
spanner backups update-metadata BACKUP_NAME \
--expiration-date=EXPIRATION_DATE
백업 가져오기
배포를 실수로 삭제한 경우 외부 저장소에서 백업 파일을 삭제하지 않았다면 배포에서 백업을 가져올 수 있습니다.
원본 배포와 동일한 Amazon S3 또는 Cloud Storage 버킷을 사용하는 새 배포에서 외부 저장소를 만듭니다.
spanner external-storages create EXTERNAL_STORAGE_ID \ --gcs-bucket-name=BUCKET_NAME외부 저장소의 백업 설명자를 나열합니다.
spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID백업 설명자를 선택하고 새 배포로 가져옵니다.
spanner backups import BACKUP_NAME \ --external-storage EXTERNAL_STORAGE_ID \ --backup-descriptor BACKUP_DESCRIPTOR \ --retention-period 24h
백업 일정
Spanner Omni를 사용하면 데이터베이스의 전체 백업을 예약할 수 있습니다. Spanner Omni에서 백업을 만드는 빈도를 일정에 지정할 수 있습니다.
전체 백업 일정은 12시간마다 백업을 만듭니다. 백업은 예약된 시간의 30분 이내에 시작됩니다. 데이터베이스당 백업 일정을 최대 4개까지 설정할 수 있습니다.
백업 일정 관리
백업 일정을 만들고 관리하려면 다음 권한이 필요합니다. 관리자에게 배포에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
백업 일정 만들기, 보기, 업데이트, 삭제:
roles/spanner.backupAdmin백업 일정 만들기 및 보기:
roles/spanner.backupWriter
백업 일정 만들기
Spanner Omni 데이터베이스의 새 백업 일정을 만듭니다.
spanner backup-schedules create SCHEDULE_ID \
--database=DATABASE_ID \
--retention-duration=RETENTION_DURATION \
--cron="CRONTAB_EXPRESSION"
백업 일정 가져오기
특정 백업 일정에 대한 정보를 가져옵니다.
spanner backup-schedules describe SCHEDULE_ID --database=DATABASE_ID
백업 일정 나열
지정된 데이터베이스의 모든 백업 일정을 나열합니다.
spanner backup-schedules list --database=DATABASE_ID
백업 일정 업데이트
기존 백업 일정의 속성을 업데이트합니다.
spanner backup-schedules update SCHEDULE_ID \
--database=DATABASE_ID \
--retention-duration=RETENTION_DURATION \
--cron="CRONTAB_EXPRESSION"
백업 일정 삭제
데이터베이스에서 백업 일정을 삭제합니다.
spanner backup-schedules delete SCHEDULE_ID --database=DATABASE_ID
IAM 액세스 제어 정책 설정
백업 일정의 IAM 액세스 제어 정책을 설정합니다.
spanner backup-schedules set-iam-policy SCHEDULE_ID \
--database=DATABASE_ID \
policy.json
IAM 액세스 제어 정책 가져오기
백업 일정의 IAM 액세스 제어 정책을 가져옵니다.
spanner backup-schedules get-iam-policy SCHEDULE_ID --database=DATABASE_ID
백업 스토리지와 데이터베이스 스토리지 비교
백업 스토리지 크기는 생성 시 소스 데이터베이스의 스토리지 크기보다 작거나 클 수 있습니다.
백업에는 데이터 버전 하나만 포함되지만 실시간 데이터베이스에는 진행 중인 작업으로 인해 여러 버전이 포함될 수 있으므로 백업 스토리지가 데이터베이스 스토리지보다 작을 수 있습니다. 데이터 형식과 압축의 차이로 인해 백업 크기가 작아질 수도 있습니다.
반대로 데이터베이스의 상태와 백업을 만드는 시점에 따라 백업 스토리지가 데이터베이스 스토리지보다 클 수 있습니다.
이와 비슷한 이유로 백업에서 데이터베이스를 복원할 때 백업 스토리지가 데이터베이스 스토리지보다 클 수 있습니다. 백업이 생성된 후 많은 대규모 데이터 세트가 삭제되고 압축된 경우에 발생할 수 있습니다. 따라서 백업 크기는 백업이 생성된 시점과 이후 데이터베이스에서의 작업에 따라 달라집니다.
라이브 데이터베이스에 대한 백업 크기를 예측하는 공식은 없습니다. 쓰기 비율이 높은 데이터베이스 (핫 데이터베이스)의 경우 백업이 라이브 데이터베이스보다 작을 가능성이 높습니다. 하지만 다음과 같은 상황에서는 백업 크기가 더 클 수 있습니다.