Trang này mô tả cách sử dụng tính năng sao lưu theo lịch của Cloud Firestore. Sử dụng bản sao lưu để bảo vệ dữ liệu của bạn khỏi bị hỏng dữ liệu ở cấp ứng dụng hoặc bị xoá dữ liệu do nhầm lẫn.
Tính năng sao lưu cho phép bạn định cấu hình lịch sao lưu để sao lưu hằng ngày hoặc hằng tuần cho 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 dữ liệu vào một cơ sở dữ liệu mới.
Giới thiệu về bản sao lưu
Bản sao lưu là bản sao nhất quán của cơ sở dữ liệu tại một thời điểm. 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 đó.
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.Bản sao lưu có thời gian lưu giữ có thể định cấu hình và được lưu trữ cho đến khi hết thời gian lưu giữ 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 liên quan.
Cloud Firestore lưu trữ siêu dữ liệu liên quan đến 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 của cơ sở dữ liệu 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 trong cơ sở dữ liệu đang hoạt động của bạn.
Chi phí
Khi sử dụng bản sao lưu, bạn sẽ bị tính phí cho những mục sau:
- Dung lượng bộ nhớ mà mỗi bản sao lưu sử dụng.
- Đối với thao tác 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 yêu cầu gói giá Blaze.Vai trò bắt buộc
Để có các quyền cần thiết nhằm quản lý bản sao lưu và lịch sao lưu, hãy yêu cầu quản trị viên cấp cho bạn một hoặc nhiều vai trò Quản lý danh tính và quyền truy cập sau đây:
roles/datastore.owner: Toàn quyền truy cập vào cơ sở dữ liệu Cloud Firestoreroles/datastore.backupsAdmin: Quyền đọc và ghi đối với bản sao lưuroles/datastore.backupsViewer: Quyền đọc dữ liệu sao lưuroles/datastore.backupSchedulesAdmin: Quyền đọc và ghi đối với lịch sao lưuroles/datastore.backupSchedulesViewer: Quyền đọc đối với lịch sao lưuroles/datastore.restoreAdmin: Quyền bắt đầu thao tác khôi phục
Tạo và quản lý lịch sao lưu
Các ví dụ sau đây minh hoạ cách thiết lập lịch sao lưu. Đối với mỗi cơ sở dữ liệu, bạn có thể thiết lập 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. 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. Bản sao lưu được tạo vào các thời điểm khác nhau mỗi ngày. Đối với lịch sao lưu hằng tuần, bạn có thể định cấu hình ngày trong tuần để sao lưu.
Tạo lịch sao lưu
Sử dụng một trong các công cụ sau để tạo lịch sao lưu.
Tạo lịch sao lưu hằng ngày
Google Cloud Console
Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
- Trong danh sách cơ sở dữ liệu, hãy tìm hàng chứa cơ sở dữ liệu. Trong cột Bản sao lưu theo lịch, hãy nhấp vào Xem bản sao lưu hoặc Chỉnh sửa chế độ cài đặt, tuỳ thuộc vào việc bạn đã có lịch sao lưu hay chưa.
- Nhấp vào Chỉnh sửa để chỉnh sửa chế độ cài đặt khôi phục sau thảm hoạ.
- Chọn hộp đánh dấu Hằng ngày, đặt thời gian lưu giữ rồi nhấp vào Lưu.
Giao diện dòng lệnh (CLI) của Firebase
Để tạo lịch sao lưu cho cơ sở dữ liệu, hãy sử dụng lệnhfirebase firestore:databases:backups:schedules:create.
Để 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ế nội dung 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ế nội dung sau:
- PROJECT_ID: Mã của 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).
google_firestore_database.
Tạo lịch sao lưu hằng tuần
Google Cloud Console
Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
- Trong danh sách cơ sở dữ liệu, hãy tìm hàng chứa cơ sở dữ liệu. Trong cột Bản sao lưu theo lịch, hãy nhấp vào Xem bản sao lưu hoặc Chỉnh sửa chế độ cài đặt, tuỳ thuộc vào việc bạn đã có lịch sao lưu hay chưa.
- Nhấp vào Chỉnh sửa để chỉnh sửa chế độ cài đặt khôi phục sau thảm hoạ.
- Chọn hộp đánh dấu Hằng tuần, chọn một ngày sao lưu, đặt thời gian lưu giữ rồi nhấp vào Lưu.
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 và chọn --day-of-week:
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 để sao lưu. Đặt thành một trong các giá trị sau:
SUNDAYcho Chủ NhậtMONDAYcho thứ HaiTUESDAYcho thứ BaWEDNESDAYcho thứ TưTHURSDAYcho thứ NămFRIDAYcho thứ SáuSATURDAYcho thứ Bảy
Terraform
Để tạo lịch 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ế nội dung sau:
- PROJECT_ID: Mã của 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 để sao lưu. Đặt thành một trong các giá trị sau:
SUNDAYcho Chủ NhậtMONDAYcho thứ HaiTUESDAYcho thứ BaWEDNESDAYcho thứ TưTHURSDAYcho thứ NămFRIDAYcho thứ SáuSATURDAYcho 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 một cơ sở dữ liệu, hãy sử dụng một trong các phương thức sau:
Google Cloud Console
Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
- Trong danh sách cơ sở dữ liệu, hãy tìm hàng chứa cơ sở dữ liệu. Trong cột Bản sao lưu theo lịch, hãy nhấp vào Xem bản sao lưu hoặc Chỉnh sửa chế độ cài đặt, tuỳ thuộc vào việc bạn đã có lịch sao lưu hay chưa.
- Trang Khôi phục sau thảm hoạ sẽ mở ra. Trang này mô tả lịch sao lưu và liệt kê các bản sao lưu hiện có.
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 biểu 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 thức sau:
Google Cloud Console
Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
- Trong danh sách cơ sở dữ liệu, hãy tìm hàng chứa cơ sở dữ liệu. Trong cột Bản sao lưu theo lịch, hãy nhấp vào Xem bản sao lưu hoặc Chỉnh sửa chế độ cài đặt, tuỳ thuộc vào việc bạn đã có lịch sao lưu hay chưa.
- Trang Khôi phục sau thảm hoạ sẽ mở ra. Trang này mô tả lịch sao lưu và liệt kê các bản sao lưu hiện có.
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 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 thời gian lưu giữ của một lịch sao lưu, hãy sử dụng một trong các phương thức sau:
Google Cloud Console
Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
- Trong danh sách cơ sở dữ liệu, hãy tìm hàng chứa cơ sở dữ liệu. Trong cột Bản sao lưu theo lịch, hãy nhấp vào Xem bản sao lưu hoặc Chỉnh sửa chế độ cài đặt.
- Nhấp vào Chỉnh sửa để chỉnh sửa chế độ cài đặt khôi phục sau thảm hoạ.
- Chỉnh sửa chế độ cài đặt lịch sao lưu rồi nhấp vào Lưu.
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 sao lưu. Bạn có thể xem tên của từng lịch sao lưu khi 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 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 và tạo một lịch sao lưu mới có tần suất lặp lại mà bạn muốn.
Xoá lịch sao lưu
Để xoá lịch sao lưu, hãy sử dụng một trong các phương thức sau:
Google Cloud Console
Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
- Trong danh sách cơ sở dữ liệu, hãy tìm hàng chứa cơ sở dữ liệu. Trong cột Bản sao lưu theo lịch, hãy nhấp vào Xem bản sao lưu hoặc Chỉnh sửa chế độ cài đặt, tuỳ thuộc vào việc bạn đã có lịch sao lưu hay chưa.
- Nhấp vào Chỉnh sửa để chỉnh sửa chế độ cài đặt khôi phục sau thảm hoạ.
- Chỉnh sửa chế độ cài đặt lịch sao lưu rồi nhấp vào 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 sao lưu khi 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ể đợi các bản sao lưu hết hạn sau 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ê các 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 thức sau:
Google Cloud Console
Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
- Trong danh sách cơ sở dữ liệu, hãy tìm hàng chứa cơ sở dữ liệu. Trong cột Bản sao lưu theo lịch, hãy nhấp vào Xem bản sao lưu hoặc Chỉnh sửa chế độ cài đặt, tuỳ thuộc vào việc bạn đã có lịch sao lưu hay chưa.
- Nhấp vào Chỉnh sửa để chỉnh sửa chế độ cài đặt khôi phục sau thảm hoạ.
- Chỉnh sửa chế độ cài đặt lịch sao lưu rồi nhấp vào Lưu.
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 một vị trí Cloud Firestore.
Mô tả bản sao lưu
Để xem thông tin chi tiết về một bản sao lưu, hãy sử dụng một trong các phương thức sau:
Google Cloud Console
Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
- Trong danh sách cơ sở dữ liệu, hãy tìm hàng chứa cơ sở dữ liệu. Trong cột Bản sao lưu theo lịch, hãy nhấp vào Xem bản sao lưu hoặc Chỉnh sửa chế độ cài đặt, tuỳ thuộc vào việc bạn đã có lịch sao lưu hay chưa.
- Trang Khôi phục sau thảm hoạ sẽ mở ra. Trang này mô tả lịch sao lưu và liệt kê các bản sao lưu hiện có.
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 một 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ả bản sao lưu.
Xóa dữ liệu sao lưu
Để xoá một bản sao lưu, hãy sử dụng một trong các phương thức sau.
Google Cloud Console
Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
- Trong danh sách cơ sở dữ liệu, hãy tìm hàng chứa cơ sở dữ liệu. Trong cột Bản sao lưu theo lịch, hãy nhấp vào Xem bản sao lưu hoặc Chỉnh sửa chế độ cài đặt, tuỳ thuộc vào việc bạn đã có lịch sao lưu hay chưa. Trang Khôi phục sau thảm hoạ sẽ mở ra. Trang này mô tả lịch sao lưu và liệt kê các bản sao lưu hiện có.
- Trong bảng Bản sao lưu, hãy tìm hàng chứa bản sao lưu và trong cột Thao tác, hãy nhấp vào Xem thêm(). Nhấp vào Xoá.
- Xác nhận hành động bằng cách sử dụng trường văn bản rồi nhấp vào Xoá.
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 liệt kê tất 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 một cơ sở dữ liệu Cloud Firestore mới.
Để bắt đầu thao tác khôi phục, hãy sử dụng một trong các phương thức sau:
Google Cloud Console
Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).
- Trong danh sách cơ sở dữ liệu, hãy tìm hàng chứa cơ sở dữ liệu. Trong cột Bản sao lưu theo lịch, hãy nhấp vào Xem bản sao lưu hoặc Chỉnh sửa chế độ cài đặt, tuỳ thuộc vào việc bạn đã có lịch sao lưu hay chưa. Trang Khôi phục sau thảm hoạ sẽ mở ra. Trang này mô tả lịch sao lưu và liệt kê các bản sao lưu hiện có.
- Trong bảng Bản sao lưu, hãy tìm hàng của một bản sao lưu và trong cột Thao tác, hãy nhấp vào Xem thêm(). Nhấp vào Khôi phục bằng Cloud Shell.
-
Bảng điều khiển Cloud Shell sẽ mở ra bằng lệnh gcloud CLI để khôi phục từ bản sao lưu đã chọn. Thay thế ID_OF_NEW_DATABASE bằng mã nhận dạng cho cơ sở dữ liệu rồi chạy lệnh.
Khi chạy lệnh này, bạn sẽ nhận được phản hồi kèm theo thông tin khác về thao tác. Cơ sở dữ liệu sẽ sớm xuất hiện trong danh sách cơ sở dữ liệu của bạn. Thao tác khôi phục sẽ mất một chút thời gian và phải hoàn tất trước khi bạn có thể truy cập vào cơ sở dữ liệu.
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 một 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ả 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 dùng.
Hạn chế
Thao tác khôi phục không khôi phục App Engine dữ liệu tìm kiếm hoặc thực thể blob từ cơ sở dữ liệu (default). Dữ liệu này chỉ hợp lệ cho cơ sở dữ liệu (default) và sẽ không hữu ích nếu bạn khôi phục từ (default) sang một cơ sở dữ liệu không hỗ trợ dữ liệu đó, vì vậy, dữ liệu này sẽ bị loại trừ khỏi bản sao lưu.
Việc cần làm sau khi khôi phục
Sau khi hoàn tất quá trình khôi phục, bạn nên làm như sau:
Xác minh rằng các chế độ kiểm soát IAM thích hợp được áp dụng cho cơ sở dữ liệu mới của bạn.
Nếu trước đây bạn đã sử dụng chính sách TTL, hãy áp dụng lại chính sách đó cho cơ sở dữ liệu mới. Chính sách TTL không được đưa vào bản sao lưu và không được tự động áp dụng lại cho cơ sở dữ liệu đã khôi phục.