Di chuyển từ phiên bản Standard sang phiên bản Enterprise

Để di chuyển dữ liệu từ cơ sở dữ liệu Firestore phiên bản tiêu chuẩn sang cơ sở dữ liệu Firestore phiên bản doanh nghiệp, bạn nên sử dụng một trong các lựa chọn sau:

  • Các tính năng nhập và xuất. Các tệp dữ liệu từ một thao tác nhập tương thích với cả phiên bản Enterprise và phiên bản Standard.

  • Mẫu firestore-to-firestore Dataflow. Dịch vụ Dataflow cho phép bạn tạo các quy trình dữ liệu và mẫu firestore-to-firestore sẽ tạo một quy trình hàng loạt giữa các cơ sở dữ liệu Cloud Firestore.

Nhập và xuất là lựa chọn đơn giản hơn để chạy với ít lựa chọn cấu hình hơn.

Mẫu Dataflow có thể tuỳ chỉnh nhiều hơn. Bạn có thể mở rộng mã mẫu để thực hiện các hoạt động di chuyển một phần hoặc chuyển đổi dữ liệu. Bạn cũng có thể kiểm soát số lượng và kích thước của worker.

Cả hai lựa chọn này đều hỗ trợ việc di chuyển giữa các dự án và khu vực.

Di chuyển dữ liệu bằng cách xuất và nhập

Để di chuyển dữ liệu bằng các thao tác xuất và nhập, hãy xem phần Xuất và nhập dữ liệu. Để di chuyển dữ liệu sang cơ sở dữ liệu trong một dự án khác, hãy xem phần Di chuyển dữ liệu giữa các dự án.

Di chuyển dữ liệu bằng mẫu Dataflow

Hãy làm theo hướng dẫn sau để di chuyển dữ liệu bằng mẫu firestore-to-firestore Dataflow.

Trước khi bắt đầu

  1. Trước khi bắt đầu di chuyển dữ liệu, hãy đảm bảo rằng bạn đã bật khả năng khôi phục tại một thời điểm (PITR) trên cơ sở dữ liệu nguồn. Tác vụ Dataflow sử dụng PITR để đọc dữ liệu tại dấu thời gian PITR. Nếu PITR bị tắt, thì công việc sẽ không thành công nếu chạy lâu hơn một giờ.

  2. Chỉ định các vai trò bắt buộc như mô tả trong phần tiếp theo.

Vai trò bắt buộc

Để di chuyển dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác, hãy chỉ định các vai trò sau. Bạn cũng có thể nhận được các quyền cần thiết thông qua vai trò tuỳ chỉnh hoặc các vai trò xác định trước khác:

  1. Để có được các quyền cần thiết để tạo cơ sở dữ liệu mới và truy cập vào dữ liệu Cloud Firestore, hãy yêu cầu quản trị viên cấp cho bạn vai trò Chủ sở hữu Cloud Datastore (roles/datastore.owner) Quản lý danh tính và quyền truy cập (IAM) đối với dự án của bạn.
  2. Để cấp cho công việc Dataflow quyền đọc và ghi vào cơ sở dữ liệu Cloud Firestore, hãy chỉ định vai trò IAM Người dùng Cloud Datastore (roles/datastore.user) cho tài khoản dịch vụ của nhân viên Dataflow (ví dụ: PROJECT_NUMBER-compute@) trong dự án của bạn.

    Để biết thêm thông tin về tính bảo mật của Dataflow, hãy xem phần Tính bảo mật và quyền của Dataflow.

Để biết thêm thông tin về cách cấp vai trò IAM, hãy xem bài viết Quản lý quyền truy cập vào dự án, thư mục và tổ chức.

1. Tạo một cơ sở dữ liệu mới trong phiên bản Firestore Enterprise

Để di chuyển dữ liệu từ cơ sở dữ liệu phiên bản Chuẩn sang cơ sở dữ liệu phiên bản Doanh nghiệp, trước tiên, bạn phải tạo cơ sở dữ liệu đích phiên bản Doanh nghiệp. Xem phần Tạo cơ sở dữ liệu.

2. Chạy mẫu Dataflow firestore-to-firestore

Định cấu hình và chạy tác vụ Dataflow bằng mẫu firestore-to-firestore. Các mẫu này hỗ trợ việc di chuyển toàn bộ cơ sở dữ liệu hoặc chỉ các nhóm tập hợp được chỉ định.

Hạn chế

Hãy lưu ý các giới hạn sau đối với mẫu firestore-to-firestore Dataflow:

  • Cơ sở dữ liệu nguồn phải là cơ sở dữ liệu phiên bản Chuẩn.
  • Quá trình di chuyển sẽ đọc dữ liệu tại một thời điểm đọc cụ thể. Bạn nên bật tính năng khôi phục tại một thời điểm (PITR) trong cơ sở dữ liệu nguồn. Nếu PITR không được bật, dữ liệu sẽ hết hạn sau một giờ và có thể không đủ thời gian để hoàn tất quá trình di chuyển dữ liệu. PITR kéo dài thời gian lưu giữ dữ liệu lên 7 ngày.
  • Chỉ mục không được di chuyển.
  • Lệnh Dataflow không di chuyển các cấu hình cơ sở dữ liệu như chính sách thời gian tồn tại (TTL), bản sao lưu, PITR và khoá mã hoá do khách hàng quản lý (CMEK).

    Bạn phải định cấu hình các chế độ cài đặt này trên cơ sở dữ liệu mới. Để cải thiện tốc độ di chuyển dữ liệu, hãy đợi đến sau khi di chuyển để định cấu hình TTL, bản sao lưu và PITR trên cơ sở dữ liệu đích.

Các ví dụ sau đây minh hoạ cách chạy mẫu bằng Google Cloud CLI.

Di chuyển tất cả dữ liệu

Để di chuyển tất cả dữ liệu, hãy dùng lệnh sau:

gcloud dataflow flex-template run "JOB_NAME" \
  --project "PROJECT" \
  --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Firestore_to_Firestore \
  --region REGION_NAME \
  --parameters "sourceProjectId=SOURCE_PROJECT_ID" \
  --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \
  --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \
  --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \
  --parameters "readTime=READ_TIME"

Thay thế nội dung sau:

  • JOB_NAME: tên của công việc.
  • PROJECT: mã nhận dạng của dự án Google Cloud.
  • REGION_NAME: vị trí Google Cloud mà bạn muốn chạy công việc Dataflow. Sử dụng một vị trí gần với cơ sở dữ liệu của bạn.
  • VERSION: phiên bản của mẫu mà bạn muốn sử dụng. Bạn có thể sử dụng các giá trị sau:

    • latest để sử dụng phiên bản mới nhất của mẫu này. Phiên bản này có trong thư mục mẹ không có ngày trong nhóm – gs://dataflow-templates-REGION_NAME/latest/
    • tên phiên bản, chẳng hạn như 2023-09-12-00_RC00, để sử dụng một phiên bản cụ thể của mẫu. Bạn có thể tìm thấy phiên bản này được lồng trong thư mục mẹ tương ứng có ngày trong nhóm – gs://dataflow-templates-REGION_NAME/
  • SOURCE_PROJECT_ID: mã nhận dạng của dự án nguồn Google Cloudchứa cơ sở dữ liệu Firestore phiên bản tiêu chuẩn.

  • SOURCE_DATABASE_ID: mã nhận dạng của cơ sở dữ liệu Cloud Firestore nguồn.

  • DESTINATION_PROJECT_ID: mã nhận dạng của dự án Google Cloud đích cho cơ sở dữ liệu Cloud Firestore mới.

  • DESTINATION_DATABASE_ID: mã nhận dạng của cơ sở dữ liệu Cloud Firestore đích đến.

  • READ_TIME: dấu thời gian để đọc dữ liệu từ cơ sở dữ liệu nguồn. Đặt thành dấu thời gian ở định dạng RFC 3339, với độ chi tiết theo phút, chẳng hạn như 2026-05-15T16:31:00.00Z.

    Dấu thời gian hợp lệ sớm nhất phụ thuộc vào chế độ cài đặt khôi phục tại một thời điểm (PITR). Xem phần Lấy thời gian của phiên bản sớm nhất.

Di chuyển các nhóm bộ sưu tập được chỉ định

Để chỉ di chuyển một số nhóm bộ sưu tập, hãy dùng lệnh sau:

gcloud dataflow jobs run "JOB_NAME" \
  --project "PROJECT" \
  --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_Firestore_to_Firestore \
  --region REGION_NAME \
  --parameters "sourceProjectId=SOURCE_PROJECT_ID" \
  --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \
  --parameters "collectionGroupIds=COLLECTION_GROUP_IDS" \
  --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \
  --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \
  --parameters "readTime=READ_TIME"

Thay thế nội dung sau:

  • JOB_NAME: tên của công việc.
  • PROJECT: mã nhận dạng của dự án Google Cloud.
  • REGION_NAME: vị trí Google Cloud mà bạn muốn chạy công việc Dataflow. Sử dụng một vị trí gần với cơ sở dữ liệu của bạn.
  • VERSION: phiên bản của mẫu mà bạn muốn sử dụng. Bạn có thể sử dụng các giá trị sau:

    • latest để sử dụng phiên bản mới nhất của mẫu. Phiên bản này có trong thư mục mẹ không có ngày trong nhóm – gs://dataflow-templates-REGION_NAME/latest/
    • tên phiên bản, chẳng hạn như 2023-09-12-00_RC00, để sử dụng một phiên bản cụ thể của mẫu. Bạn có thể tìm thấy phiên bản này được lồng trong thư mục mẹ tương ứng có ngày trong nhóm – gs://dataflow-templates-REGION_NAME/
  • SOURCE_PROJECT_ID: mã nhận dạng của dự án nguồn Google Cloud có chứa cơ sở dữ liệu Firestore phiên bản Chuẩn.

  • SOURCE_DATABASE_ID: mã nhận dạng của cơ sở dữ liệu Cloud Firestore nguồn.

  • COLLECTION_GROUP_IDS: danh sách mã nhận dạng nhóm bộ sưu tập được phân tách bằng dấu phẩy để di chuyển.

    Các bộ sưu tập con không được thêm vào một cách đệ quy. Ví dụ: nếu bạn chỉ định nhóm tập hợp users, thì quá trình di chuyển sẽ không bao gồm tập hợp con messages tại /users/userid/messages trừ phi bạn cũng chỉ định nhóm tập hợp messages.

  • DESTINATION_PROJECT_ID: mã nhận dạng của dự án Google Cloud đích cho cơ sở dữ liệu Cloud Firestore mới.

  • DESTINATION_DATABASE_ID: mã nhận dạng của cơ sở dữ liệu Cloud Firestore đích đến.

  • READ_TIME: dấu thời gian để đọc dữ liệu từ cơ sở dữ liệu nguồn. Đặt thành dấu thời gian ở định dạng RFC 3339, với độ chi tiết theo phút, chẳng hạn như 2026-05-15T16:31:00.00Z.

    Dấu thời gian hợp lệ sớm nhất phụ thuộc vào chế độ cài đặt khôi phục tại một thời điểm (PITR). Xem phần Lấy thời gian của phiên bản sớm nhất.

3. Định cấu hình cơ sở dữ liệu

Tác vụ firestore-to-firestore chỉ di chuyển dữ liệu. Chỉ mục và các chế độ cài đặt cơ sở dữ liệu khác sẽ không được di chuyển. Ngoài việc di chuyển dữ liệu, hãy cân nhắc việc định cấu hình những nội dung sau trên cơ sở dữ liệu mới:

Sau khi định cấu hình cơ sở dữ liệu, bạn có thể tiếp tục kiểm thử ứng dụng bằng cơ sở dữ liệu mới. Để di chuyển hoàn toàn, hãy cập nhật các ứng dụng của bạn để sử dụng cơ sở dữ liệu mới.

Khắc phục sự cố

Đối với các cơ sở dữ liệu lớn, thao tác có thể không thành công nếu đọc quá nhiều dữ liệu cùng một lúc. Cách giải quyết vấn đề này:

Bước tiếp theo