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 membangun 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 mentransformasi data. Anda juga dapat mengontrol jumlah dan ukuran pekerja.

Kedua opsi mendukung migrasi lintas 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 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. datastore.googleapis.com API harus diaktifkan untuk menggunakan template ini.

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

Peran yang diperlukan

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

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

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 berakhir 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, pencadangan, dan PITR di database tujuan.

Contoh berikut menunjukkan cara menjalankan template menggunakan Google Cloud CLI.

Migrasikan 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 Google Cloud project Anda.
  • 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 Google Cloud yang berisi database edisi Firestore Standard.

  • SOURCE_DATABASE_ID: ID database Firestore sumber.

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

  • DESTINATION_DATABASE_ID: ID database Firestore tujuan.

  • READ_TIME: stempel waktu untuk membaca data dari database sumber. Disetel ke stempel waktu dalam format RFC 3339, pada tingkat perincian 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 hanya grup koleksi tertentu, 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 Google Cloud project Anda.
  • 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 Google Cloud sumber yang berisi database edisi Standar Firestore.

  • SOURCE_DATABASE_ID: ID database Firestore sumber.

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

    Subkoleksi tidak disertakan secara rekursif. Misalnya, jika Anda menentukan kelompok koleksi users, maka migrasi tidak akan menyertakan subkoleksi messages di /users/userid/messages kecuali jika Anda juga menentukan kelompok koleksi messages.

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

  • DESTINATION_DATABASE_ID: ID database Firestore tujuan.

  • READ_TIME: stempel waktu untuk membaca data dari database sumber. Disetel ke stempel waktu dalam format RFC 3339, pada perincian 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. Konfigurasi 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 melanjutkan pengujian aplikasi dengan database baru. Untuk migrasi yang lengkap, perbarui 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