데이터 백업 및 복원

이 페이지에서는 Cloud Firestore 예약된 백업을 사용하는 방법을 설명합니다. 기능을 사용할 수 있습니다. 백업을 사용하여 애플리케이션 수준 데이터 손상이나 우발적인 데이터 삭제로부터 데이터를 보호하세요.

백업을 사용하면 지정된 데이터베이스를 매일 또는 매주 백업하도록 백업 일정을 구성할 수 있습니다. 그런 다음 이러한 백업을 사용하여 데이터를 새 데이터베이스로 복원할 수 있습니다.

백업 정보

백업은 특정 시점의 일관된 데이터베이스 사본입니다. 백업에는 해당 시점의 모든 데이터 및 색인 구성이 포함됩니다. 백업에 데이터베이스 TTL(수명) 정책은 포함되지 않습니다. 백업은 소스 데이터베이스와 동일한 위치에 있습니다.

백업은 보관 기간을 설정할 수 있으며 보관 기간이 만료되거나 백업을 삭제할 때까지 저장됩니다. 소스 데이터베이스를 삭제해도 관련 백업이 자동으로 삭제되지 않습니다.

Cloud Firestore는 백업 및 백업과 관련된 메타데이터를 저장합니다. 데이터베이스와 관련된 일정입니다. Cloud Firestore에서 이 메타데이터를 유지합니다. 데이터베이스의 백업이 만료되거나 삭제될 때까지 모든 백업이 삭제됩니다.

백업을 만들거나 보존해도 라이브 데이터베이스에서 읽기 또는 쓰기 성능에 영향을 주지 않습니다.

비용

백업을 사용하면 다음 항목에 대한 요금이 부과됩니다.

  • 각 백업에서 사용하는 스토리지 용량
  • 복원 작업의 경우 백업 크기에 따라 요금이 청구됨

자세한 내용과 정확한 가격은 가격 책정 페이지를 참조하세요.

시작하기 전에

이 기능을 사용하려면 Blaze 요금제를 이용해야 합니다.

필요한 역할

백업 및 백업 일정을 관리하는 데 필요한 권한을 얻으려면 관리자에게 다음 Identity and Access Management 역할 중 하나 이상을 부여해 달라고 요청하세요.

  • roles/datastore.owner: Cloud Firestore 데이터베이스에 대한 전체 액세스 권한입니다.
  • 다음 역할도 사용할 수 있지만 Google Cloud 콘솔에는 표시되지 않습니다. Google Cloud CLI 사용 다음 역할을 할당합니다.

    • roles/datastore.backupsAdmin: 백업에 대한 읽기 및 쓰기 액세스 권한입니다.
    • roles/datastore.backupsViewer: 백업에 대한 읽기 액세스 권한입니다.
    • roles/datastore.backupSchedulesAdmin: 백업 일정에 대한 읽기 및 쓰기 액세스 권한입니다.
    • roles/datastore.backupSchedulesViewer: 백업 일정에 대한 읽기 액세스 권한입니다.
    • roles/datastore.restoreAdmin: 복원 작업을 시작할 권한입니다.

백업 일정 만들기 및 관리

아래 예시는 백업 일정을 설정하는 방법을 보여줍니다. 데이터베이스마다 최대 1개의 일일 백업 일정과 주간 백업 일정을 구성할 수 있습니다. 다른 요일에 여러 주간 백업 일정을 구성할 수는 없습니다.

정확한 백업 시간은 구성할 수 없습니다. 백업은 매일 다른 시간에 수행됩니다. 주간 백업 일정의 경우 백업을 수행할 요일을 구성할 수 있습니다.

백업 일정 만들기

데이터베이스의 백업 일정을 만들려면 다음을 사용합니다. gcloud firestore backups schedules create 명령어 또는 firebase firestore:databases:backups:schedules 명령어

일간 백업 일정 만들기

gcloud
일일 백업 일정을 만들려면 --recurrence 플래그를 daily로 설정합니다.
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=daily \
--retention=RETENTION_PERIOD

다음을 바꿉니다.

  • DATABASE_ID: 백업할 데이터베이스의 ID입니다. 기본 데이터베이스의 경우 '(default)'로 설정합니다.
  • RETENTION_PERIOD: 이 값을 최대 14주(14w)로 설정합니다.
Firebase CLI
일일 백업 일정을 만들려면 --recurrence 플래그를 DAILY로 설정합니다.
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'DAILY' \
--retention RETENTION_PERIOD

다음을 바꿉니다.

  • DATABASE_ID: 백업할 데이터베이스의 ID입니다. 기본 데이터베이스의 경우 '(default)'로 설정합니다.
  • RETENTION_PERIOD: 이 값을 최대 14주(14w)로 설정합니다.
Terraform
일일 백업 일정을 만들려면 google_firestore_backup_schedule 리소스를 만듭니다.
resource "google_firestore_backup_schedule" "daily-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  daily_recurrence {}
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID
  • DATABASE_ID: 백업할 데이터베이스의 ID입니다. 기본 데이터베이스의 경우 '(default)'로 설정합니다.
  • 리소스 참조를 사용하여 google_firestore_database 유형의 Terraform 리소스입니다.
  • RETENTION_PERIOD_SECONDS: 값(초) 뒤에 's'가 와야 합니다. 최댓값은 8467200s(14주)입니다.

주간 백업 일정 만들기

gcloud
주간 백업 일정을 만들려면 --recurrence 플래그를 weekly로 설정합니다.
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=weekly \
--retention=RETENTION_PERIOD \
--day-of-week=DAY
다음을 바꿉니다.
  • DATABASE_ID: 백업할 데이터베이스의 ID입니다. 기본 데이터베이스의 경우 '(default)'로 설정합니다.
  • RETENTION_PERIOD: 이 값을 최대 14주(14w)로 설정합니다.
  • DAY: 백업을 수행할 요일입니다. 다음 중 하나로 설정합니다.
    • 일요일의 경우 SUN
    • 월요일의 경우 MON
    • 화요일의 경우 TUE
    • 수요일의 경우 WED
    • 목요일의 경우 THU
    • 금요일의 경우 FRI
    • 토요일의 경우 SAT
Firebase CLI
주간 백업 일정을 만들려면 --recurrence 플래그를 WEEKLY로 설정합니다.
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'WEEKLY' \
--retention RETENTION_PERIOD
--day-of-week DAY
드림 다음을 바꿉니다. <ph type="x-smartling-placeholder">
    </ph>
  • DATABASE_ID: 백업할 데이터베이스의 ID입니다. 기본 데이터베이스의 경우 '(default)'로 설정합니다.
  • RETENTION_PERIOD: 이 값을 최대 14주(14w)로 설정합니다.
  • DAY: 백업을 수행할 요일입니다. 다음 중 하나로 설정합니다.
    • 일요일의 경우 SUNDAY
    • 월요일의 경우 MONDAY
    • 화요일의 경우 TUESDAY
    • 수요일의 경우 WEDNESDAY
    • 목요일의 경우 THURSDAY
    • 금요일의 경우 FRIDAY
    • 토요일의 경우 SATURDAY
Terraform
주간 백업 일정을 만들려면 google_firestore_backup_schedule 리소스를 만듭니다.
resource "google_firestore_backup_schedule" "weekly-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  weekly_recurrence {
    day = DAY
  }
}

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID
  • DATABASE_ID: 백업할 데이터베이스의 ID입니다. 기본 데이터베이스의 경우 '(default)'로 설정합니다.
  • 리소스 참조를 사용하여 google_firestore_database 유형의 Terraform 리소스입니다.
  • RETENTION_PERIOD_SECONDS: 값(초) 뒤에 's'가 와야 합니다. 최댓값은 8467200s(14주)입니다.
  • DAY: 백업을 수행할 요일입니다. 다음 중 하나로 설정합니다.
    • 일요일의 경우 SUNDAY
    • 월요일의 경우 MONDAY
    • 화요일의 경우 TUESDAY
    • 수요일의 경우 WEDNESDAY
    • 목요일의 경우 THURSDAY
    • 금요일의 경우 FRIDAY
    • 토요일의 경우 SATURDAY

백업 일정 나열

데이터베이스의 모든 백업 일정을 나열하려면 다음 방법 중 하나를 사용합니다.

gcloud
gcloud firestore backups schedules list 명령어를 사용합니다.
gcloud firestore backups schedules list \
--database='DATABASE_ID'
드림 DATABASE_ID를 데이터베이스의 ID로 바꿉니다. 기본 데이터베이스에는 '(default)'를 사용합니다.
Firebase CLI
firebase firestore:backups:schedules:list 명령어를 사용합니다.
firebase firestore:backups:schedules:list \
--database 'DATABASE_ID'
드림 DATABASE_ID를 데이터베이스의 ID로 바꿉니다. 기본 데이터베이스에는 '(default)'를 사용합니다.

백업 일정 설명

백업 일정 정보를 검색하려면 다음 방법 중 하나를 사용합니다.

gcloud
gcloud firestore backups schedules describe 명령어를 사용합니다.
gcloud firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
드림 다음을 바꿉니다. <ph type="x-smartling-placeholder">
    </ph>
  • DATABASE_ID: 백업할 데이터베이스의 ID입니다. 기본 데이터베이스의 경우 '(default)'로 설정합니다.
  • BACKUP_SCHEDULE_ID: 백업 일정의 ID입니다. 모든 백업 일정을 나열하면 각 백업 일정의 ID를 볼 수 있습니다.

백업 일정 업데이트

백업 일정의 보관 기간을 업데이트하려면 다음 방법 중 하나를 사용합니다.

gcloud
gcloud firestore backups schedules update 명령어를 사용합니다.
gcloud firestore backups schedules update \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID \
--retention=RETENTION_PERIOD
드림 다음을 바꿉니다. <ph type="x-smartling-placeholder">
    </ph>
  • DATABASE_ID: 백업할 데이터베이스의 ID입니다. 기본 데이터베이스의 경우 '(default)'로 설정합니다.
  • BACKUP_SCHEDULE_ID: 백업 일정의 ID입니다. 모든 백업 일정을 나열하면 각 백업 일정의 ID를 볼 수 있습니다.
  • RETENTION_PERIOD: 이 값을 최대 14주(14w)로 설정합니다.
Firebase CLI
firebase firestore:backups:schedules:update 명령어를 사용합니다.
firebase firestore:backups:schedules:update \
BACKUP_SCHEDULE \
--retention RETENTION_PERIOD
드림 다음을 바꿉니다. <ph type="x-smartling-placeholder">
    </ph>
  • BACKUP_SCHEDULE: 백업 일정의 전체 리소스 이름입니다. 모든 백업 일정을 나열하면 각 백업 일정의 이름을 볼 수 있습니다.
  • RETENTION_PERIOD: 이 값을 최대 14주(14w)로 설정합니다.

백업 일정의 보관 기간은 업데이트할 수 있지만 반복은 업데이트할 수 없습니다. 다른 반복이 있는 백업 일정이 필요한 경우 더 이상 필요하지 않은 이전 백업 일정을 삭제하고 원하는 반복으로 새 백업 일정을 만듭니다.

백업 일정 삭제

백업 일정을 삭제하려면 다음 방법 중 하나를 사용합니다.

gcloud
gcloud firestore backups schedules delete 명령어를 사용합니다.
gcloud firestore backups schedules delete \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
드림 다음을 바꿉니다. <ph type="x-smartling-placeholder">
    </ph>
  • DATABASE_ID: 백업할 데이터베이스의 ID입니다. 기본 데이터베이스의 경우 '(default)'로 설정합니다.
  • BACKUP_SCHEDULE_ID: 백업 일정의 ID입니다. 모든 백업 일정을 나열하면 각 백업 일정의 ID를 볼 수 있습니다.
Firebase CLI
firebase firestore:backups:schedules:delete 명령어를 사용합니다.
firebase firestore:backups:schedules:delete \
BACKUP_SCHEDULE
다음을 바꿉니다.
  • BACKUP_SCHEDULE: 백업 일정의 전체 리소스 이름입니다. 모든 백업 일정을 나열하면 각 백업 일정의 이름을 볼 수 있습니다.

백업 일정을 삭제해도 이 일정으로 이미 만든 백업은 삭제되지 않습니다. 보관 기간이 지난 후 만료될 때까지 기다리거나 백업을 수동으로 삭제하려면 백업 삭제를 참조하세요.

백업 관리

백업 표시

사용 가능한 백업을 나열하려면 다음 방법 중 하나를 사용합니다.

gcloud
gcloud firestore backups list 명령어를 사용합니다.
gcloud firestore backups list \
--format="table(name, database, state)"
드림 --format="table(name, database, state)" 플래그는 출력 형식을 더 읽기 쉬운 형식으로 되어 있습니다. 특정 위치의 백업만 나열하려면 --location 플래그를 사용합니다.
gcloud firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"
드림 LOCATIONCloud Firestore 이름으로 바꿉니다. 볼 수 있습니다
Firebase CLI
firebase firestore:backups:list 명령어를 사용합니다.
firebase firestore:backups:list
드림 특정 위치의 백업만 나열하려면 --location 플래그를 사용합니다.
firebase firestore:backups:list \
--location=LOCATION
드림 LOCATIONCloud Firestore 이름으로 바꿉니다. 볼 수 있습니다

백업 설명

백업에 관한 세부정보를 보려면 다음 방법 중 하나를 사용합니다.

gcloud
gcloud firestore backups describe 명령어를 사용합니다.
gcloud firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
드림 다음을 바꿉니다. <ph type="x-smartling-placeholder">
    </ph>
  • LOCATION: 데이터베이스의 위치입니다.
  • BACKUP_ID: 백업의 ID입니다. 모든 백업을 나열하면 각 백업의 ID를 볼 수 있습니다.
Firebase CLI
firebase firestore:backups:get 명령어를 사용합니다.
firebase firestore:backups:get BACKUP
드림 다음을 바꿉니다. <ph type="x-smartling-placeholder">
    </ph>
  • BACKUP: 백업의 전체 리소스 이름입니다. 모든 백업을 나열하면 각 백업의 이름을 볼 수 있습니다.

백업 삭제

백업을 삭제하려면 다음 방법 중 하나를 사용합니다. 경고: 삭제된 백업은 복구할 수 없습니다.
gcloud
gcloud firestore backups delete 명령어를 사용합니다.
gcloud firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
드림 다음을 바꿉니다. <ph type="x-smartling-placeholder">
    </ph>
  • LOCATION: 데이터베이스의 위치입니다.
  • BACKUP_ID: 백업의 ID입니다. 모든 백업을 나열하면 각 백업의 ID를 볼 수 있습니다.
Firebase CLI
firebase firestore:backups:delete 명령어를 사용합니다.
firebase firestore:backups:delete \
BACKUP
드림 다음을 바꿉니다. <ph type="x-smartling-placeholder">
    </ph>
  • BACKUP: 백업의 전체 리소스 이름입니다. 모든 백업을 나열하면 각 백업의 이름을 볼 수 있습니다.

데이터베이스 백업에서 데이터 복원

복원 작업은 백업의 데이터를 새 Cloud Firestore 데이터베이스에 씁니다.

복원 작업을 시작하려면 다음 메서드 중 하나를 사용합니다.

gcloud
gcloud firestore databases restore 명령어를 사용합니다.
gcloud firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID'
드림 다음을 바꿉니다. <ph type="x-smartling-placeholder">
    </ph>
  • PROJECT_ID: 프로젝트 ID입니다.
  • LOCATION: 데이터베이스 백업 위치와 복원된 데이터에 대해 생성된 새 데이터베이스의 위치입니다.
  • BACKUP_ID: 백업의 ID입니다. 모든 백업을 나열하면 각 백업의 ID를 볼 수 있습니다.
  • DATABASE_ID: 새 데이터베이스의 데이터베이스 ID입니다. 이미 사용 중인 데이터베이스 ID는 사용할 수 없습니다.
출력에는 metadata, name, response 구성요소가 포함됩니다.
metadata:
  '@type': type.googleapis.com/google.firestore.admin.v1.RestoreDatabaseMetadata
  backup: projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID
  database: projects/PROJECT_ID/databases/DATABASE_ID
  operationState: PROCESSING
  progressPercentage:
    completedWork: '20'
    estimatedWork: '100'
  startTime: '2023-12-06T14:20:17.398325Z'
name: projects/PROJECT_ID/databases/DATABASE_ID/operations/operation_uuid
response:
  '@type': type.googleapis.com/google.firestore.admin.v1.Database
  createTime: '2023-12-06T14:20:17.398325Z'
  name: projects/PROJECT_ID/databases/DATABASE_ID
  ...
드림 metadata 필드에는 지금까지의 복원 예상 진행률을 자세히 설명하는 progressPercentage 구성요소와 복원의 전체 상태를 지정하는 operationState가 포함됩니다. 이 정보를 다시 검색하려면 gcloud firestore operations list를 사용합니다.
gcloud firestore operations list --database=DATABASE_ID
드림 또는 위에서 설명한 출력의 name 필드를 gcloud firestore operations describe과 함께 사용합니다.
gcloud firestore operations describe OPERATION_NAME
Firebase CLI
firebase firestore:databases:restore 명령어를 사용합니다.
firebase firestore:databases:restore \
--backup 'BACKUP' \
--database 'DATABASE_ID'
드림 다음을 바꿉니다. <ph type="x-smartling-placeholder">
    </ph>
  • BACKUP: 백업의 전체 리소스 이름입니다. 모든 백업을 나열하면 각 백업의 이름을 볼 수 있습니다.
  • DATABASE_ID: 새 데이터베이스의 데이터베이스 ID입니다. 이미 사용 중인 데이터베이스 ID는 사용할 수 없습니다.