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 templatefirestore-to-firestoremembuat 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
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.
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:
- 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. -
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:latestuntuk menggunakan template versi terbaru, yang tersedia di folder induk tanpa tanggal di bucket— gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00, untuk menggunakan template versi tertentu, yang dapat ditemukan bertingkat di masing-masing folder induk yang diberi tanggal dalam bucket—gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: ID project sumber yang berisi database edisi Firestore Standard. Google CloudSOURCE_DATABASE_ID: ID database Firestore sumber.DESTINATION_PROJECT_ID: ID project tujuan untuk database Firestore baru. Google CloudDESTINATION_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 seperti2026-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:latestuntuk menggunakan template versi terbaru, yang tersedia di folder induk tanpa tanggal di bucket— gs://dataflow-templates-REGION_NAME/latest/- nama versi, seperti
2023-09-12-00_RC00, untuk menggunakan template versi tertentu, yang dapat ditemukan bertingkat di masing-masing folder induk yang diberi tanggal dalam bucket—gs://dataflow-templates-REGION_NAME/
SOURCE_PROJECT_ID: ID project sumber yang berisi database edisi Firestore Standard. Google CloudSOURCE_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 menyertakanmessagessub-koleksi di/users/userid/messageskecuali jika Anda juga menentukan kelompok koleksimessages.DESTINATION_PROJECT_ID: ID project tujuan untuk database Firestore baru. Google CloudDESTINATION_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 seperti2026-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:
Indeks: Database edisi Firestore Enterprise tidak secara ketat memerlukan indeks untuk menjalankan kueri dan tidak membuat indeks otomatis secara default. Lihat hal berikut untuk membuat indeks untuk kueri Anda:
- Ringkasan indeks edisi Firestore Enterprise.
- Mengoptimalkan performa kueri dengan indeks.
- Anda dapat menggunakan Firebase CLI untuk mengekspor indeks dan men-deploy-nya ke database baru.
- Gunakan Query Insights untuk mengidentifikasi kueri yang dapat Anda optimalkan dengan indeks.
TTL: Membuat kebijakan TTL.
Cadangan: Menyiapkan cadangan.
PITR: Mengaktifkan PITR.
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:
Tingkatkan
maxNumWorkersnilai.
Langkah berikutnya
- Pelajari cara membuat kueri data dengan operasi Pipeline.
- Pelajari cara mengoptimalkan kueri di edisi Firestore Enterprise
- Pahami cara database edisi Enterprise melakukan penskalaan.