Bermigrasi dari edisi Standard ke edisi Enterprise

Untuk memigrasikan data dari database edisi Firestore Standard ke database edisi Firestore Enterprise, sebaiknya gunakan salah satu opsi berikut:

  • Fitur impor dan ekspor. File data dari operasi impor kompatibel dengan edisi Enterprise dan edisi Standard.

  • Template Dataflow firestore-to-firestore. Layanan Dataflow memungkinkan Anda membuat pipeline data dan template firestore-to-firestore membuat pipeline batch antara database Firestore.

Impor dan ekspor adalah opsi yang lebih sederhana untuk dijalankan dengan opsi konfigurasi yang lebih sedikit.

Template Dataflow lebih dapat disesuaikan. Anda dapat memperluas kode template untuk melakukan migrasi sebagian atau mengubah data. Anda juga dapat mengontrol jumlah dan ukuran pekerja.

Kedua opsi mendukung migrasi di seluruh project dan region.

Memigrasikan data dengan ekspor dan impor

Untuk memigrasikan data dengan operasi ekspor dan impor, lihat Mengekspor dan mengimpor data. Untuk memindahkan data ke database di project lain, lihat Memindahkan data antar-project.

Memigrasikan data dengan template Dataflow

Gunakan petunjuk berikut untuk memigrasikan data dengan template Dataflow firestore-to-firestore.

Sebelum memulai

  1. Sebelum memulai migrasi data, pastikan bahwa pemulihan point-in-time (PITR) diaktifkan di database sumber. Tugas Dataflow menggunakan PITR untuk membaca data pada stempel waktu PITR. Jika PITR dinonaktifkan, tugas akan gagal jika berjalan lebih dari satu jam.

  2. Tetapkan peran yang diperlukan yang dijelaskan di bagian berikutnya.

Peran yang diperlukan

Untuk memigrasikan data dari satu database ke database lain, tetapkan peran berikut. Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya:

  1. Untuk mendapatkan izin yang diperlukan untuk membuat database baru dan mengakses data Firestore, minta administrator Anda untuk memberi Anda peran Cloud Datastore Owner (roles/datastore.owner) Identity and Access Management (IAM) di project Anda.
  2. Untuk memberikan akses baca dan tulis tugas Dataflow ke database Firestore Anda, tetapkan akun layanan pekerja Dataflow (misalnya, PROJECT_NUMBER-compute@developer.gserviceaccount.com) peran IAM Cloud Datastore User (roles/datastore.user) di project Anda.

    Untuk mengetahui informasi selengkapnya tentang keamanan Dataflow, lihat Keamanan dan izin Dataflow.

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran IAM, lihat Mengelola akses ke project, folder, dan organisasi.

1. Membuat database edisi Firestore Enterprise baru

Untuk memigrasikan data dari database edisi Standard ke database edisi Enterprise, Anda harus membuat database tujuan edisi Enterprise terlebih dahulu. Lihat Membuat database.

2. Menjalankan template Dataflow firestore-to-firestore

Konfigurasi dan jalankan tugas Dataflow Anda dengan template firestore-to-firestore. Template ini mendukung migrasi seluruh database atau hanya kelompok koleksi tertentu.

Batasan

Pertimbangkan batasan berikut untuk template Dataflow firestore-to-firestore:

  • Database sumber harus berupa database edisi Standard.
  • Migrasi membaca data pada waktu baca tertentu. Sebaiknya aktifkan pemulihan point-in-time (PITR) di database sumber. Jika PITR tidak diaktifkan, data akan habis masa berlakunya setelah satu jam dan waktu tersebut mungkin tidak cukup untuk menyelesaikan migrasi data. PITR memperpanjang retensi data hingga tujuh hari.
  • Indeks tidak dimigrasikan.
  • Tugas Dataflow tidak memigrasikan konfigurasi database seperti kebijakan time to live (TTL), cadangan, PITR, dan kunci enkripsi yang dikelola pelanggan (CMEK).

    Anda harus mengonfigurasi setelan ini di database baru. Untuk meningkatkan kecepatan migrasi data, tunggu hingga setelah migrasi untuk mengonfigurasi TTL, cadangan, dan PITR di database tujuan.

Contoh berikut menunjukkan cara menjalankan template menggunakan Google Cloud CLI.

Memigrasikan semua data

Untuk memigrasikan semua data, gunakan perintah berikut:

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"

Ganti kode berikut:

  • JOB_NAME: nama untuk tugas.
  • PROJECT: ID project Anda Google Cloud .
  • REGION_NAME: Google Cloud lokasi tempat Anda ingin menjalankan tugas Dataflow. Gunakan lokasi yang dekat dengan database Anda.
  • VERSION: versi template yang ingin Anda gunakan. Anda dapat menggunakan nilai berikut:

  • SOURCE_PROJECT_ID: ID project sumber yang berisi database edisi Firestore Standard. Google Cloud

  • SOURCE_DATABASE_ID: ID database Firestore sumber.

  • DESTINATION_PROJECT_ID: ID project tujuan untuk database Firestore baru. Google Cloud

  • DESTINATION_DATABASE_ID: ID database Firestore tujuan.

  • READ_TIME: stempel waktu untuk membaca data dari database sumber. Tetapkan ke stempel waktu dalam format RFC 3339, dengan granularitas menit seperti 2026-05-15T16:31:00.00Z.

    Stempel waktu valid paling awal bergantung pada setelan pemulihan point-in-time (PITR) Anda. Lihat Mendapatkan waktu versi paling awal.

Memigrasikan kelompok koleksi tertentu

Untuk memigrasikan kelompok koleksi tertentu saja, gunakan perintah berikut:

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"

Ganti kode berikut:

  • JOB_NAME: nama untuk tugas.
  • PROJECT: ID project Anda Google Cloud .
  • REGION_NAME: Google Cloud lokasi tempat Anda ingin menjalankan tugas Dataflow. Gunakan lokasi yang dekat dengan database Anda.
  • VERSION: versi template yang ingin Anda gunakan. Anda dapat menggunakan nilai berikut:

  • SOURCE_PROJECT_ID: ID project sumber yang berisi database edisi Firestore Standard. Google Cloud

  • SOURCE_DATABASE_ID: ID database Firestore sumber.

  • COLLECTION_GROUP_IDS: daftar ID kelompok koleksi yang dipisahkan koma untuk dimigrasikan.

    Sub-koleksi tidak disertakan secara rekursif. Misalnya, jika Anda menentukan kelompok koleksi users, migrasi tidak akan menyertakan messages sub-koleksi di /users/userid/messages kecuali jika Anda juga menentukan kelompok koleksi messages.

  • DESTINATION_PROJECT_ID: ID project tujuan untuk database Firestore baru. Google Cloud

  • DESTINATION_DATABASE_ID: ID database Firestore tujuan.

  • READ_TIME: stempel waktu untuk membaca data dari database sumber. Tetapkan ke stempel waktu dalam format RFC 3339, dengan granularitas menit seperti 2026-05-15T16:31:00.00Z.

    Stempel waktu valid paling awal bergantung pada setelan pemulihan point-in-time (PITR) Anda. Lihat Mendapatkan waktu versi paling awal.

3. Mengonfigurasi database

Tugas firestore-to-firestore hanya memigrasikan data. Indeks dan setelan database lainnya tidak dimigrasikan. Selain memigrasikan data, pertimbangkan untuk mengonfigurasi hal berikut di database baru:

Setelah mengonfigurasi database, Anda dapat terus menguji aplikasi dengan database baru. Untuk migrasi lengkap, update aplikasi Anda agar menggunakan database baru.

Pemecahan masalah

Untuk database besar, tugas mungkin gagal jika membaca terlalu banyak data sekaligus. Untuk mengatasi hal ini:

Langkah berikutnya