이 페이지에서는 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)'
로 설정합니다.
리소스 참조를 사용하여
- RETENTION_PERIOD_SECONDS: 값(초) 뒤에 's'가 와야 합니다. 최댓값은
8467200s
(14주)입니다.
google_firestore_database
유형의 Terraform 리소스입니다.
주간 백업 일정 만들기
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>
- 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)'
로 설정합니다.
리소스 참조를 사용하여
- RETENTION_PERIOD_SECONDS: 값(초) 뒤에 's'가 와야 합니다. 최댓값은
8467200s
(14주)입니다. - DAY: 백업을 수행할 요일입니다. 다음 중 하나로 설정합니다.
- 일요일의 경우
SUNDAY
- 월요일의 경우
MONDAY
- 화요일의 경우
TUESDAY
- 수요일의 경우
WEDNESDAY
- 목요일의 경우
THURSDAY
- 금요일의 경우
FRIDAY
- 토요일의 경우
SATURDAY
- 일요일의 경우
google_firestore_database
유형의 Terraform 리소스입니다.
백업 일정 나열
데이터베이스의 모든 백업 일정을 나열하려면 다음 방법 중 하나를 사용합니다.
gcloud
gcloud firestore backups schedules list
명령어를 사용합니다.
gcloud firestore backups schedules list \ --database='DATABASE_ID'
'(default)'
를 사용합니다.
Firebase CLI
firebase firestore:backups:schedules:list
명령어를 사용합니다.
firebase firestore:backups:schedules:list \ --database 'DATABASE_ID'
'(default)'
를 사용합니다.
백업 일정 설명
백업 일정 정보를 검색하려면 다음 방법 중 하나를 사용합니다.
gcloud
gcloud firestore backups schedules describe
명령어를 사용합니다.
gcloud firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID
- </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>
- 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>
- 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>
- 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)"
LOCATION
을 Cloud Firestore 이름으로 바꿉니다.
볼 수 있습니다
Firebase CLI
firebase firestore:backups:list
명령어를 사용합니다.
firebase firestore:backups:list
--location
플래그를 사용합니다.
firebase firestore:backups:list \ --location=LOCATION
LOCATION
을 Cloud Firestore 이름으로 바꿉니다.
볼 수 있습니다
백업 설명
백업에 관한 세부정보를 보려면 다음 방법 중 하나를 사용합니다.
gcloud
gcloud firestore backups describe
명령어를 사용합니다.
gcloud firestore backups describe \ --location=LOCATION \ --backup=BACKUP_ID
- </ph>
- LOCATION: 데이터베이스의 위치입니다.
- BACKUP_ID: 백업의 ID입니다. 모든 백업을 나열하면 각 백업의 ID를 볼 수 있습니다.
Firebase CLI
firebase firestore:backups:get
명령어를 사용합니다.
firebase firestore:backups:get BACKUP
- </ph>
- BACKUP: 백업의 전체 리소스 이름입니다. 모든 백업을 나열하면 각 백업의 이름을 볼 수 있습니다.
백업 삭제
gcloud
gcloud firestore backups delete
명령어를 사용합니다.
gcloud firestore backups delete \ --location=LOCATION \ --backup=BACKUP_ID
- </ph>
- LOCATION: 데이터베이스의 위치입니다.
- BACKUP_ID: 백업의 ID입니다. 모든 백업을 나열하면 각 백업의 ID를 볼 수 있습니다.
Firebase CLI
firebase firestore:backups:delete
명령어를 사용합니다.
firebase firestore:backups:delete \ BACKUP
- </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>
- 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>
- BACKUP: 백업의 전체 리소스 이름입니다. 모든 백업을 나열하면 각 백업의 이름을 볼 수 있습니다.
- DATABASE_ID: 새 데이터베이스의 데이터베이스 ID입니다. 이미 사용 중인 데이터베이스 ID는 사용할 수 없습니다.