Trang này mô tả cách sử dụng tính năng sao lưu theo lịch biểu Cloud Firestore của chúng tôi. Sử dụng tính năng sao lưu để bảo vệ dữ liệu của bạn khỏi dữ liệu ở cấp ứng dụng lỗi hoặc do vô tình xoá dữ liệu.
Tính năng sao lưu giúp bạn thiết lập lịch sao lưu để lấy dữ liệu hằng ngày hoặc hằng tuần các bản sao lưu của cơ sở dữ liệu được chỉ định. Sau đó, bạn có thể sử dụng các bản sao lưu này để khôi phục sang một cơ sở dữ liệu mới.
Giới thiệu về tính năng sao lưu
Bản sao lưu là một bản sao nhất quán của cơ sở dữ liệu tại một thời điểm nào đó. Bản sao lưu chứa tất cả dữ liệu và cấu hình chỉ mục tại thời điểm đó kịp thời. Bản sao lưu không chứa chính sách về thời gian tồn tại của cơ sở dữ liệu. Bản sao lưu nằm ở cùng vị trí với cơ sở dữ liệu nguồn.
Các bản sao lưu có khoảng thời gian lưu giữ có thể định cấu hình và được lưu trữ cho đến khi lưu giữ khoảng thời gian này sẽ hết hạn hoặc cho đến khi bạn xoá bản sao lưu. Việc xoá cơ sở dữ liệu nguồn sẽ không tự động xoá các bản sao lưu có liên quan.
Cloud Firestore lưu trữ siêu dữ liệu liên quan đến các bản sao lưu và lịch sao lưu liên quan đến cơ sở dữ liệu. Cloud Firestore giữ lại siêu dữ liệu này cho đến khi tất cả bản sao lưu cho cơ sở dữ liệu này hết hạn hoặc bị xoá.
Việc tạo hoặc giữ lại bản sao lưu không ảnh hưởng đến hiệu suất đọc hoặc ghi vào cơ sở dữ liệu trực tiếp.
Chi phí
Khi sử dụng tính năng sao lưu, bạn sẽ phải trả các khoản phí sau:
- Dung lượng lưu trữ mà mỗi bản sao lưu đã sử dụng.
- Đối với hoạt động khôi phục, bạn sẽ bị tính phí dựa trên kích thước của bản sao lưu.
Để biết thêm thông tin chi tiết và mức giá chính xác, hãy xem trang Giá.
Trước khi bắt đầu
Tính năng này cần có gói giá linh hoạt.Vai trò bắt buộc
Để có các quyền mà bạn cần để quản lý bản sao lưu và lịch sao lưu, yêu cầu quản trị viên cấp cho bạn một hoặc nhiều giải pháp Quản lý danh tính và quyền truy cập sau đây vai trò:
roles/datastore.owner
: Có toàn quyền truy cập vào cơ sở dữ liệu Cloud FirestoreCác vai trò sau đây cũng có sẵn nhưng không xuất hiện trong bảng điều khiển Google Cloud. Sử dụng Google Cloud CLI để chỉ định các vai trò này:
roles/datastore.backupsAdmin
: Quyền đọc và ghi đối với bản sao lưuroles/datastore.backupsViewer
: Quyền đọc bản sao lưuroles/datastore.backupSchedulesAdmin
: Quyền đọc và ghi đối với lịch sao lưuroles/datastore.backupSchedulesViewer
: Quyền đọc lịch biểu sao lưuroles/datastore.restoreAdmin
: Quyền bắt đầu hoạt động khôi phục
Tạo và quản lý lịch sao lưu
Các ví dụ bên dưới minh hoạ cách thiết lập lịch sao lưu. Đối với mỗi bạn có thể định cấu hình tối đa một lịch sao lưu hằng ngày và tối đa một lịch sao lưu hằng tuần lịch sao lưu. Bạn không thể định cấu hình nhiều lịch sao lưu hàng tuần cho các ngày khác nhau trong tuần.
Bạn không thể định cấu hình thời gian chính xác trong ngày để sao lưu. Các bản sao lưu được thực hiện tại vào những thời điểm khác nhau mỗi ngày. Để sao lưu hằng tuần lịch biểu, bạn có thể định cấu hình ngày trong tuần để sao lưu.
Tạo lịch sao lưu
Để tạo lịch sao lưu cho cơ sở dữ liệu, hãy sử dụng
Lệnh gcloud firestore backups schedules create
hoặc lệnh firebase firestore:databases:backups:schedules
.
Tạo lịch sao lưu hằng ngày
gcloud
Để tạo lịch sao lưu hằng ngày, hãy đặt cờ--recurrence
thành daily
:
gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=daily \ --retention=RETENTION_PERIOD
Thay thế đoạn mã sau:
- DATABASE_ID: Mã nhận dạng của cơ sở dữ liệu cần sao lưu. Đặt thành
'(default)'
cho cơ sở dữ liệu mặc định. - RETENTION_PERIOD: Đặt giá trị này thành tối đa 14 tuần (
14w
).
Giao diện dòng lệnh (CLI) của Firebase
Để tạo lịch sao lưu hằng ngày, hãy đặt cờ--recurrence
thành DAILY
:
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'DAILY' \ --retention RETENTION_PERIOD
Thay thế đoạn mã sau:
- DATABASE_ID: Mã nhận dạng của cơ sở dữ liệu cần sao lưu. Đặt thành
'(default)'
cho cơ sở dữ liệu mặc định. - RETENTION_PERIOD: Đặt giá trị này thành tối đa 14 tuần (
14w
).
Terraform
Để tạo lịch sao lưu hằng ngày, hãy tạo tài nguyêngoogle_firestore_backup_schedule
.
resource "google_firestore_backup_schedule" "daily-backup" { project = PROJECT_ID database = DATABASE_ID retention = RETENTION_PERIOD_SECONDS daily_recurrence {} }
Thay thế đoạn mã sau:
- PROJECT_ID: Mã dự án.
- DATABASE_ID: Mã nhận dạng của cơ sở dữ liệu cần sao lưu. Đặt thành
'(default)'
cho cơ sở dữ liệu mặc định.
Bạn cũng có thể sử dụng tham chiếu tài nguyên đến một
Tài nguyên Terraform thuộc loại - RETENTION_PERIOD_SECONDS: Đặt thành một giá trị tính bằng giây, sau đó là "s". Giá trị tối đa là
8467200s
(14 tuần).
google_firestore_database
.
Tạo lịch sao lưu hằng tuần
gcloud
Để tạo lịch sao lưu hằng tuần, hãy đặt cờ--recurrence
thành weekly
:
gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=weekly \ --retention=RETENTION_PERIOD \ --day-of-week=DAY
- DATABASE_ID: Mã nhận dạng của cơ sở dữ liệu cần sao lưu. Đặt thành
'(default)'
cho cơ sở dữ liệu mặc định. - RETENTION_PERIOD: Đặt giá trị này thành tối đa 14 tuần (
14w
). - DAY: Ngày trong tuần để bắt đầu sao lưu. Đặt thành
một trong các lệnh sau:
SUN
đại diện cho Chủ NhậtMON
đại diện cho thứ HaiTUE
đại diện cho thứ BaWED
đại diện cho thứ TưTHU
đại diện cho thứ NămFRI
đại diện cho thứ SáuSAT
đại diện cho thứ Bảy
Giao diện dòng lệnh (CLI) của Firebase
Để tạo lịch sao lưu hằng tuần, hãy đặt cờ--recurrence
thành WEEKLY
:
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'WEEKLY' \ --retention RETENTION_PERIOD --day-of-week DAY
- DATABASE_ID: Mã nhận dạng của cơ sở dữ liệu cần sao lưu. Đặt thành
'(default)'
cho cơ sở dữ liệu mặc định. - RETENTION_PERIOD: Đặt giá trị này thành tối đa 14 tuần (
14w
). - DAY: Ngày trong tuần để bắt đầu sao lưu. Đặt thành
một trong các lệnh sau:
SUNDAY
đại diện cho Chủ NhậtMONDAY
đại diện cho thứ HaiTUESDAY
đại diện cho thứ BaWEDNESDAY
đại diện cho thứ TưTHURSDAY
đại diện cho thứ NămFRIDAY
đại diện cho thứ SáuSATURDAY
đại diện cho thứ Bảy
Terraform
Để tạo lịch biểu sao lưu hằng tuần, hãy tạo tài nguyêngoogle_firestore_backup_schedule
.
resource "google_firestore_backup_schedule" "weekly-backup" { project = PROJECT_ID database = DATABASE_ID retention = RETENTION_PERIOD_SECONDS weekly_recurrence { day = DAY } }
Thay thế đoạn mã sau:
- PROJECT_ID: Mã dự án.
- DATABASE_ID: Mã nhận dạng của cơ sở dữ liệu cần sao lưu. Đặt thành
'(default)'
cho cơ sở dữ liệu mặc định.
Bạn cũng có thể sử dụng tham chiếu tài nguyên đến một
Tài nguyên Terraform thuộc loại - RETENTION_PERIOD_SECONDS: Đặt giá trị này thành một giá trị tính bằng giây, theo sau là "s". Giá trị tối đa là
8467200s
(14 tuần). - DAY: Ngày trong tuần để bắt đầu sao lưu. Đặt thành
một trong các lệnh sau:
SUNDAY
đại diện cho Chủ NhậtMONDAY
đại diện cho thứ HaiTUESDAY
đại diện cho thứ BaWEDNESDAY
đại diện cho thứ TưTHURSDAY
đại diện cho thứ NămFRIDAY
đại diện cho thứ SáuSATURDAY
đại diện cho thứ Bảy
google_firestore_database
.
Liệt kê lịch biểu sao lưu
Để liệt kê tất cả lịch sao lưu cho cơ sở dữ liệu, hãy sử dụng một trong các phương pháp sau:
gcloud
Dùng lệnhgcloud firestore backups schedules list
.
gcloud firestore backups schedules list \ --database='DATABASE_ID'
'(default)'
cho cơ sở dữ liệu mặc định.
Giao diện dòng lệnh (CLI) của Firebase
Sử dụng lệnhfirebase firestore:backups:schedules:list
.
firebase firestore:backups:schedules:list \ --database 'DATABASE_ID'
'(default)'
cho cơ sở dữ liệu mặc định.
Mô tả lịch sao lưu
Để truy xuất thông tin về lịch sao lưu, hãy sử dụng một trong các phương pháp sau:
gcloud
Sử dụng lệnhgcloud firestore backups schedules describe
:
gcloud firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID
- DATABASE_ID: Mã nhận dạng của cơ sở dữ liệu cần sao lưu. Đặt thành
'(default)'
cho cơ sở dữ liệu mặc định. - BACKUP_SCHEDULE_ID: Mã của lịch biểu sao lưu. Bạn có thể xem mã nhận dạng của từng lịch sao lưu khi liệt kê tất cả lịch sao lưu.
Cập nhật lịch sao lưu
Để cập nhật khoảng thời gian lưu giữ của lịch sao lưu, hãy sử dụng một trong các phương thức sau:
gcloud
Sử dụng lệnhgcloud firestore backups schedules update
:
gcloud firestore backups schedules update \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID \ --retention=RETENTION_PERIOD
- DATABASE_ID: Mã nhận dạng của cơ sở dữ liệu cần sao lưu. Đặt thành
'(default)'
cho cơ sở dữ liệu mặc định. - BACKUP_SCHEDULE_ID: Mã của lịch biểu sao lưu. Bạn có thể xem mã của từng lịch biểu sao lưu khi bạn liệt kê tất cả lịch sao lưu.
- RETENTION_PERIOD: Đặt giá trị này thành tối đa 14 tuần (
14w
).
Giao diện dòng lệnh (CLI) của Firebase
Sử dụng lệnhfirebase firestore:backups:schedules:update
:
firebase firestore:backups:schedules:update \ BACKUP_SCHEDULE \ --retention RETENTION_PERIOD
- BACKUP_SCHEDULE: Tên tài nguyên đầy đủ của lịch biểu sao lưu. Bạn có thể xem tên của từng lịch biểu sao lưu khi bạn liệt kê tất cả lịch sao lưu.
- RETENTION_PERIOD: Đặt giá trị này thành tối đa 14 tuần (
14w
).
Bạn có thể cập nhật khoảng thời gian lưu giữ của lịch sao lưu, nhưng không thể cập nhật tần suất lặp lại của lịch đó. Nếu bạn cần một lịch sao lưu có tần suất lặp lại khác, hãy xoá lịch sao lưu cũ nếu không cần nữa, rồi tạo một lịch biểu sao lưu mới với tần suất lặp lại mong muốn.
Xoá lịch sao lưu
Để xoá lịch sao lưu, hãy dùng một trong các phương pháp sau:
gcloud
Dùng lệnhgcloud firestore backups schedules delete
:
gcloud firestore backups schedules delete \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID
- DATABASE_ID: Mã nhận dạng của cơ sở dữ liệu cần sao lưu. Đặt thành
'(default)'
cho cơ sở dữ liệu mặc định. - BACKUP_SCHEDULE_ID: Mã của lịch biểu sao lưu. Bạn có thể xem mã của từng lịch biểu sao lưu khi bạn liệt kê tất cả lịch sao lưu.
Giao diện dòng lệnh (CLI) của Firebase
Sử dụng lệnhfirebase firestore:backups:schedules:delete
:
firebase firestore:backups:schedules:delete \ BACKUP_SCHEDULE
- BACKUP_SCHEDULE: Tên tài nguyên đầy đủ của lịch sao lưu. Bạn có thể xem tên của từng lịch biểu sao lưu khi bạn liệt kê tất cả lịch sao lưu.
Xin lưu ý rằng việc xoá lịch sao lưu sẽ không xoá các bản sao lưu đã được tạo theo lịch này. Bạn có thể chờ cho những email này hết hạn sau khoảng thời gian lưu giữ, hoặc để xoá bản sao lưu theo cách thủ công, hãy xem phần xoá bản sao lưu.
Quản lý bản sao lưu
Liệt kê bản sao lưu
Để liệt kê các bản sao lưu hiện có, hãy sử dụng một trong các phương pháp sau:
gcloud
Sử dụng lệnhgcloud firestore backups list
:
gcloud firestore backups list \ --format="table(name, database, state)"
--format="table(name, database, state)"
định dạng đầu ra thành một
dễ đọc hơn.
Để chỉ liệt kê các bản sao lưu từ một vị trí cụ thể, hãy sử dụng cờ --location
:
gcloud firestore backups list \ --location=LOCATION \ --format="table(name, database, state)"
LOCATION
bằng tên của Cloud Firestore
vị trí.
Giao diện dòng lệnh (CLI) của Firebase
Sử dụng lệnhfirebase firestore:backups:list
:
firebase firestore:backups:list
--location
:
firebase firestore:backups:list \ --location=LOCATION
LOCATION
bằng tên của Cloud Firestore
vị trí.
Mô tả bản sao lưu
Để xem chi tiết về bản sao lưu, hãy sử dụng một trong các phương thức sau:
gcloud
Dùng lệnhgcloud firestore backups describe
:
gcloud firestore backups describe \ --location=LOCATION \ --backup=BACKUP_ID
- LOCATION: Vị trí của cơ sở dữ liệu.
- BACKUP_ID: Mã nhận dạng bản sao lưu. Bạn có thể xem mã của từng bản sao lưu khi bạn liệt kê tất cả các bản sao lưu.
Giao diện dòng lệnh (CLI) của Firebase
Sử dụng lệnhfirebase firestore:backups:get
:
firebase firestore:backups:get BACKUP
- BACKUP: Tên tài nguyên đầy đủ của bản sao lưu. Bạn có thể xem tên của từng bản sao lưu khi liệt kê tất cả các bản sao lưu.
Xóa dữ liệu sao lưu
gcloud
Dùng lệnhgcloud firestore backups delete
:
gcloud firestore backups delete \ --location=LOCATION \ --backup=BACKUP_ID
- LOCATION: Vị trí của cơ sở dữ liệu.
- BACKUP_ID: Mã nhận dạng của bản sao lưu. Bạn có thể xem mã của từng bản sao lưu khi bạn liệt kê tất cả các bản sao lưu.
Giao diện dòng lệnh (CLI) của Firebase
Sử dụng lệnhfirebase firestore:backups:delete
:
firebase firestore:backups:delete \ BACKUP
- BACKUP: Tên tài nguyên đầy đủ của một bản sao lưu. Bạn có thể xem tên của từng bản sao lưu khi bạn liệt kê tất cả các bản sao lưu.
Khôi phục dữ liệu từ bản sao lưu cơ sở dữ liệu
Thao tác khôi phục sẽ ghi dữ liệu từ bản sao lưu vào Cloud Firestore mới cơ sở dữ liệu.
Để bắt đầu hoạt động khôi phục, hãy sử dụng một trong các phương pháp sau:
gcloud
Dùng lệnhgcloud firestore databases restore
:
gcloud firestore databases restore \ --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \ --destination-database='DATABASE_ID'
- PROJECT_ID: Mã dự án của bạn.
- LOCATION: Vị trí của bản sao lưu cơ sở dữ liệu và vị trí của cơ sở dữ liệu mới được tạo cho dữ liệu được khôi phục.
- BACKUP_ID: Mã nhận dạng bản sao lưu. Bạn có thể xem mã của từng bản sao lưu khi liệt kê tất cả các bản sao lưu.
- DATABASE_ID: Mã nhận dạng cơ sở dữ liệu cho cơ sở dữ liệu mới. Bạn không thể sử dụng mã nhận dạng cơ sở dữ liệu đã được sử dụng.
metadata
, name
và 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
bao gồm thành phần progressPercentage
, trình bày chi tiết tiến trình khôi phục tính đến thời điểm hiện tại và operationState
chỉ định trạng thái chung của quá trình khôi phục.
Để truy xuất lại thông tin này, hãy sử dụng gcloud firestore operations list
:
gcloud firestore operations list --database=DATABASE_ID
name
từ kết quả được mô tả ở trên, với gcloud firestore operations describe
:
gcloud firestore operations describe OPERATION_NAME
Giao diện dòng lệnh (CLI) của Firebase
Sử dụng lệnhfirebase firestore:databases:restore
:
firebase firestore:databases:restore \ --backup 'BACKUP' \ --database 'DATABASE_ID'
- BACKUP: Tên tài nguyên đầy đủ của bản sao lưu. Bạn có thể xem tên của từng bản sao lưu khi liệt kê tất cả các bản sao lưu.
- DATABASE_ID: Mã nhận dạng cơ sở dữ liệu cho cơ sở dữ liệu mới. Bạn không thể sử dụng mã nhận dạng cơ sở dữ liệu đã được sử dụng.