Memindahkan data antar-project
Halaman ini menjelaskan cara menggunakan fitur impor dan ekspor terkelola untuk memindahkan data Firestore dari satu project ke project lainnya. Cara ini dapat berguna untuk menyiapkan lingkungan pengembangan atau sebagai bagian dari migrasi aplikasi secara permanen ke project lain. Contoh di halaman ini menunjukkan cara mengekspor data dari project sumber, lalu mengimpor data tersebut ke project tujuan. Memindahkan data antar-project melibatkan langkah-langkah berikut:
- Membuat bucket Cloud Storage untuk menyimpan data dari project sumber.
- Mengekspor data dari project sumber ke bucket.
- Memberi izin kepada project tujuan untuk membaca dari bucket.
- Mengimpor data dari bucket ke project tujuan.
Sebelum memulai
Sebelum dapat menggunakan layanan ekspor dan impor terkelola, Anda harus menyelesaikan tugas-tugas berikut:
- Aktifkan penagihan untuk project sumber dan project tujuan Anda. Hanya project Google Cloud dengan penagihan aktif yang dapat menggunakan fungsi ekspor dan impor.
-
Pastikan akun Anda memiliki izin IAM yang diperlukan dalam project sumber dan project tujuan Anda. Jika Anda adalah pemilik kedua project, berarti akun Anda memiliki izin yang diperlukan. Jika tidak, peran IAM berikut akan memberikan izin yang diperlukan untuk operasi ekspor dan impor Firestore:
Owner
,Cloud Datastore Owner
, atauCloud Datastore Import Export Admin
Pemilik project dapat memberikan salah satu dari peran tersebut dengan mengikuti langkah-langkah di bagian Memberikan akses.
-
Siapkan alat command line
gcloud
lalu hubungkan ke project Anda dengan salah satu cara berikut:-
Akses
gcloud
dari Google Cloud Console menggunakan Cloud Shell.Pastikan
gcloud
dikonfigurasi untuk project yang tepat:gcloud config set project [SOURCE_PROJECT_ID]
-
-
Siapkan indeks di project baru Anda. Indeks komposit harus sesuai antara project sumber dan tujuan. Indeks harus disiapkan terlebih dahulu agar tidak perlu memproses setiap dokumen beberapa kali.
Mengekspor data dari project sumber
Ekspor data Anda dengan membuat bucket Cloud Storage untuk file ekspor Firestore dan memulai operasi ekspor.
Membuat bucket Cloud Storage
Buat bucket Cloud Storage di lokasi yang sama dengan database Firestore Anda. Untuk melihat lokasi database Anda, lihat setelan lokasi project. Anda tidak dapat menggunakan bucket Requester Pays untuk operasi ekspor dan impor.
Jika bucket Cloud Storage Anda tidak ada dalam project sumber, Anda harus memberi akses ke bucket tersebut bagi akun layanan default project sumber. Setiap project Google Cloud memiliki akun layanan default yang dibuat secara otomatis dengan nama PROJECT_ID@appspot.gserviceaccount.com
. Operasi ekspor Firestore menggunakan akun layanan default ini untuk mengizinkan operasi bucket Cloud Storage. Untuk memberi akses ke bucket sumber Anda bagi akun layanan default, berikan peran Storage Admin
tersebut.
Anda dapat memberikan peran ini dengan alat gsutil
yang tersedia di Cloud Shell:
gsutil iam ch serviceAccount:[service-PROJECT_NUMBER]@gcp-sa-firestore.iam.gserviceaccount.com :roles/storage.admin\ gs://[BUCKET_NAME]@
Anda juga dapat memberikan peran ini di Google Cloud Console.
Menonaktifkan operasi tulis (opsional)
Jika aplikasi Anda terus menulis ke database saat Anda melakukan operasi ekspor, Anda mungkin tidak akan menangkap semua penulisan tersebut dalam file ekspor. Untuk mengekspor data dari kondisi yang konsisten, nonaktifkan penulisan ke database dengan mengupdate aturan keamanan dan menghentikan semua operasi Admin SDK.
Memperbarui aturan keamanan
Di tab Rules di bagian Firestore pada konsol, perbarui aturan keamanan project sumber untuk menolak semua operasi tulis. Contoh:
// Deny write access to all users under any conditions service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow write: if false; } // Reads do not affect export operations // Add your read rules here } }
Menghentikan penulisan dari Admin SDK
Aturan keamanan tidak menghentikan operasi tulis yang berasal dari lingkungan server dengan hak istimewa yang dibuat menggunakan Firebase Admin SDK atau Library Klien Google Cloud Server. Pastikan untuk menghentikan operasi penulisan dari server admin dengan menonaktifkan atau mengupdate server Anda.
Memulai operasi ekspor
Gunakan perintah gcloud firestore export
untuk mengekspor data dari project sumber Anda. Anda dapat mengekspor semua data atau hanya koleksi tertentu. Ganti [SOURCE_BUCKET]
dengan nama bucket Cloud Storage Anda:
- Mengekspor semua data
-
gcloud firestore export gs://[SOURCE_BUCKET] --async
- Mengekspor koleksi tertentu
-
gcloud firestore export gs://[SOURCE_BUCKET] --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2] --async
Catat outputURIPrefix
operasi ekspor Anda yang akan digunakan nanti. Secara default, Firestore menambahkan awalan ke file ekspor Anda berdasarkan stempel waktu:
outputUriPrefix: gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418
Saat operasi ekspor berjalan, Anda dapat menggunakan perintah firestore operations list
untuk melihat progres operasi tersebut:
gcloud firestore operations list
Mengimpor data ke project tujuan
Selanjutnya, beri akses ke file data Firestore Anda bagi project tujuan dan mulai operasi impor.
Memberi akses ke file data Anda bagi project tujuan
Sebelum dapat memulai operasi impor, Anda harus memastikan project tujuan dapat mengakses file data Firestore.
Memindahkan file data ke bucket lokal
Jika lokasi bucket sumber berbeda dengan lokasi Firestore project tujuan, Anda harus memindahkan file data ke bucket Cloud Storage di lokasi yang sama dengan project tujuan Anda.
Pindahkan file data Anda ke bucket Cloud Storage dengan mengikuti langkah-langkah di bagian Memindahkan dan Mengganti Nama Bucket.
Untuk semua langkah berikut, gunakan bucket baru ini sebagai [SOURCE_BUCKET]
.
Memberi akses ke bucket sumber Anda bagi akun layanan project
Jika bucket sumber tidak ada dalam project tujuan, Anda harus memberi akses ke bucket sumber Anda bagi akun layanan default project tujuan. Akun layanan default diberi nama [DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com
. Untuk memberi akun layanan default akses ke bucket sumber, berikan izin yang sesuai untuk mengakses bucket.
Anda dapat memberikan peran yang diperlukan dengan alat gsutil
yang tersedia di Cloud Shell:
gsutil iam ch serviceAccount:[DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com:legacyBucketReader,legacyObjectReader \ gs://[SOURCE_BUCKET]
Anda juga dapat memberikan peran ini di Google Cloud Console.
Memulai operasi impor
Sebelum memulai operasi impor, pastikan gcloud
dikonfigurasi untuk project yang tepat:
gcloud config set project [DESTINATION_PROJECT_ID]
Gunakan perintah gcloud firestore import
untuk mengimpor data dalam bucket sumber ke project tujuan Anda:
gcloud firestore import gs://[SOURCE_BUCKET]/[EXPORT_PREFIX] --async
Dengan [EXPORT_PREFIX]
cocok dengan awalan di outputUriPrefix
operasi ekspor Anda. Contoh:
gcloud firestore import gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418 --async
Saat operasi ekspor berjalan, Anda dapat menggunakan perintah firestore operations list
untuk melihat progres operasi tersebut:
gcloud firestore operations list