Sao lưu và khôi phục dữ liệu

Trang này mô tả cách sử dụng tính năng sao lưu theo lịch trình của Cloud Firestore. Sử dụng các 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 khỏi việc vô tình xóa dữ liệu.

Sao lưu cho phép bạn định cấu hình lịch sao lưu để thực hiện sao lưu hàng ngày hoặc hàng tuần đối với 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 sang 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ả các cấu hình dữ liệu và chỉ mục tại thời điểm đó. Một bản sao lưu không chứa cơ sở dữ liệu về thời gian tồn tại các chính sách . 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 hết thời gian lưu giữ hoặc cho đến khi bạn xóa bản sao lưu. Việc xóa cơ sở dữ liệu nguồn không tự động xóa các bản sao lưu liên quan.

Cloud Firestore lưu trữ siêu dữ liệu liên quan đế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ả các bản sao lưu cơ sở dữ liệu hết hạn hoặc bị xóa.

Việc tạo hoặc giữ lại các 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 trực tiếp của bạn.

Chi phí

Khi sử dụng bản sao lưu, bạn sẽ bị tính phí như sau:

  • Dung lượng lưu trữ được sử dụng bởi mỗi bản sao lưu.
  • Đố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 chi tiết và mức giá chính xác, hãy xem trang Định 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ác quyền bạn cần để 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:

  • roles/datastore.owner : Toàn quyền truy cập vào cơ sở dữ liệu Cloud Firestore
  • Các vai trò sau đây cũng có sẵn nhưng không hiển thị trong Bảng điều khiển Google Cloud Platform. Sử dụng Google Cloud CLI để chỉ định các vai trò sau:

    • roles/datastore.backupsAdmin : Quyền đọc và ghi vào bản sao lưu
    • roles/datastore.backupsViewer : Đọc quyền truy cập vào bản sao lưu
    • roles/datastore.backupSchedulesAdmin : Quyền đọc và ghi vào lịch trình sao lưu
    • roles/datastore.backupSchedulesViewer : Đọc quyền truy cập vào lịch trình sao lưu
    • roles/datastore.restoreAdmin : Quyền bắt đầu các hoạt động khôi phục

Tạo và quản lý lịch trình sao lưu

Các ví dụ dưới đây minh họa 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ể đị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. 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 của bản sao lưu. Việc sao lưu được thực hiện vào những 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 trình sao lưu

Để tạo lịch sao lưu cho cơ sở dữ liệu, hãy sử dụng lệnh gcloud alpha firestore backups schedules create .

Tạo lịch trình sao lưu hàng ngày

Để tạo lịch sao lưu hàng ngày, hãy đặt cờ --recurrence thành daily :

gcloud alpha firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=daily \
--retention=RETENTION_PERIOD

Thay thế như sau:

  • DATABASE_ID : ID 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 : Để lặp lại sao lưu daily , hãy đặt giá trị này thành giá trị tối đa 7 ngày ( 7d ). Nếu bạn đặt định kỳ sao lưu weekly , hãy đặt giá trị này thành giá trị tối đa 14 tuần ( 14w ).

Tạo lịch trình sao lưu hàng tuần

Để tạo lịch sao lưu hàng tuần, hãy đặt cờ --recurrence thành weekly :

gcloud alpha firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=weekly \
--retention=RETENTION_PERIOD \
--day-of-week=DAY

Thay thế như sau:

  • DATABASE_ID : ID 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 : Để lặp lại sao lưu weekly , hãy đặt giá trị này thành giá trị tối đa 14 tuần ( 14w ).
  • DAY : Ngày trong tuần để sao lưu. Đặt thành một trong các tùy chọn sau:
    • SUN cho ngày chủ nhật
    • MON cho thứ Hai
    • TUE cho thứ ba
    • WED cho Thứ Tư
    • THU cho thứ năm
    • FRI cho thứ sáu
    • SAT vào thứ Bảy

Liệt kê lịch trình sao lưu

Để liệt kê tất cả các lịch trình sao lưu cho cơ sở dữ liệu, hãy sử dụng lệnh gcloud alpha firestore backups schedules list . Lệnh này trả về thông tin về tất cả các lịch trình sao lưu.

gcloud alpha firestore backups schedules list \
--database='DATABASE_ID'

Thay thế DATABASE_ID bằng ID của cơ sở dữ liệu. Sử dụng (default) cho cơ sở dữ liệu mặc định.

Mô tả lịch trình sao lưu

Để truy xuất thông tin về lịch sao lưu, hãy sử dụng lệnh gcloud alpha firestore backups schedules describe :

gcloud alpha firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID

Thay thế như sau:

  • DATABASE_ID : ID 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 : ID của lịch trình dự phòng. Bạn có thể xem ID của từng lịch trình sao lưu khi liệt kê tất cả các lịch trình sao lưu .

Cập nhật lịch sao lưu

Để cập nhật thời gian lưu giữ của lịch sao lưu, hãy sử dụng lệnh gcloud alpha firestore backups schedules update :

gcloud alpha firestore backups schedules update \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
--retention=RETENTION_PERIOD

Thay thế như sau:

  • DATABASE_ID : ID 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 : ID của lịch trình dự phòng. Bạn có thể xem ID của mỗi lịch trình sao lưu khi liệt kê tất cả các lịch trình sao lưu .
  • RETENTION_PERIOD : Nếu bạn đặt lặp lại sao lưu daily , hãy đặt giá trị này thành giá trị tối đa 7 ngày ( 7d ). Nếu bạn đặt định kỳ sao lưu weekly , hãy đặt giá trị này thành giá trị tối đa 14 tuần ( 14w ).

Xóa lịch sao lưu

Để xóa lịch sao lưu, hãy sử dụng lệnh gcloud alpha firestore backups schedules delete :

gcloud alpha firestore backups schedules delete \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID

Thay thế như sau:

  • DATABASE_ID : ID 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 : ID của lịch trình dự phòng. Bạn có thể xem ID của từng lịch trình sao lưu khi liệt kê tất cả các lịch trình sao lưu .

Lưu ý rằng việc xóa lịch sao lưu sẽ không xóa các bản sao lưu đã được tạo theo lịch này. Bạn có thể đợi chúng hết hạn sau khoảng thời gian lưu giữ hoặc xóa bản sao lưu theo cách thủ công, hãy xem xóa 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 có sẵn, hãy sử dụng lệnh gcloud alpha firestore backups list :

gcloud alpha firestore backups list \
--format="table(name, database, state)"

Cờ --format="table(name, database, state)" định dạng đầu ra thành định dạng 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 alpha firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"

Thay thế LOCATION bằng tên của vị trí Cloud Firestore.

Mô tả một bản sao lưu

Để xem chi tiết về bản sao lưu, hãy sử dụng lệnh gcloud alpha firestore backups describe :

gcloud alpha firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID

Xóa bản sao lưu

Để xóa bản sao lưu, hãy sử dụng lệnh gcloud alpha firestore backups delete :

gcloud alpha firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID

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 ghi dữ liệu từ bản sao lưu vào cơ sở dữ liệu Cloud Firestore mới. Để bắt đầu thao tác khôi phục, hãy sử dụng lệnh gcloud alpha firestore databases restore :

gcloud alpha firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID'
  • PROJECT_ID : ID dự án của bạn.
  • LOCATION : Vị trí 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 : ID của bản sao lưu. Bạn có thể xem ID của mỗi bản sao lưu khi liệt kê tất cả các bản sao lưu .
  • DATABASE_ID : ID cơ sở dữ liệu cho cơ sở dữ liệu mới. Bạn không thể sử dụng ID cơ sở dữ liệu đã được sử dụng.

Đầu ra sẽ bao gồm các thành phần metadata , nameresponse :

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
  ...

Trường metadata bao gồm thành phần progressPercentage , nêu chi tiết tiến trình ước tính của quá trình khôi phục cho đến nay và operationState chỉ định trạng thái tổng thể của quá trình khôi phục.

Để lấy lại thông tin này, hãy sử dụng gcloud firestore operations list :

gcloud firestore operations list --database=DATABASE_ID

hoặc bằng cách sử dụng trường name từ đầu ra được mô tả ở trên, với gcloud firestore operations describe :

gcloud firestore operations describe OPERATION_NAME