Buka konsol

Memindahkan data antar-project

Halaman ini menjelaskan cara menggunakan fitur impor dan ekspor terkelola untuk memindahkan data Cloud 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:

  1. Membuat bucket Cloud Storage untuk menyimpan data dari project sumber.
  2. Mengekspor data dari project sumber ke bucket.
  3. Memberi izin kepada project tujuan untuk membaca dari bucket.
  4. Mengimpor data dari bucket ke project tujuan.

Sebelum memulai

Sebelum dapat menggunakan layanan ekspor dan impor terkelola, Anda harus menyelesaikan tugas-tugas berikut:

  1. Aktifkan penagihan untuk project sumber dan project tujuan Anda. Hanya project GCP dengan penagihan aktif yang dapat menggunakan fungsi ekspor dan impor.
  2. Pastikan akun Anda memiliki izin Cloud 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 Cloud IAM berikut akan memberikan izin yang diperlukan untuk operasi ekspor dan impor Cloud Firestore:

    Owner, Cloud Datastore Owner, atau Cloud Datastore Import Export Admin

    Pemilik project dapat memberikan salah satu dari peran tersebut dengan mengikuti langkah-langkah di bagian Memberikan akses.

  3. Siapkan fitur command-line gcloud lalu hubungkan ke project Anda dengan salah satu cara berikut:

Mengekspor data dari project sumber

Ekspor data Anda dengan membuat bucket Cloud Storage untuk file ekspor Cloud Firestore dan memulai operasi ekspor.

Buat bucket Cloud Storage

Buat bucket Cloud Storage di lokasi yang sama dengan database Cloud Firestore Anda. Untuk melihat lokasi database Anda, lihat setelan lokasi project. Anda tidak dapat menggunakan bucket Pemohon Membayar untuk operasi ekspor dan impor.

Jika bucket Cloud Storage Anda tidak ada dalam project sumber, Anda harus memberi akun layanan default project sumber akses ke bucket tersebut. Setiap project GCP memiliki akun layanan default yang dibuat otomatis dengan nama PROJECT_ID@appspot.gserviceaccount.com. Operasi ekspor Cloud Firestore menggunakan akun layanan default ini untuk mengotorisasi operasi bucket Cloud Storage. Untuk memberi akun layanan default akses ke bucket sumber Anda, berikan peran Storage Admin ke akun tersebut.

Anda dapat memberikan peran ini dengan fitur gsutil yang tersedia di Cloud Shell:

Mulai Cloud Shell

gsutil iam ch serviceAccount:[SOURCE_PROJECT_ID]@appspot.gserviceaccount.com:admin \
gs://[BUCKET_NAME]

Anda juga dapat memberikan peran ini di Google Cloud Platform 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.

  1. Mengupdate aturan keamanan

    Di tab Aturan Cloud Firestore pada konsol, update aturan keamanan project sumber untuk menolak semua penulisan. 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
        }
      }
    
  2. Menghentikan penulisan dari Admin SDK

    Aturan keamanan tidak menghentikan penulisan yang berasal dari lingkungan server 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 beta 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 beta firestore export gs://[SOURCE_BUCKET] --async
Mengekspor koleksi tertentu
gcloud beta firestore export gs://[SOURCE_BUCKET] --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2] --async

Catat outputURIPrefix operasi ekspor Anda karena akan digunakan nanti. Secara default, Cloud 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 operasinya:

gcloud beta firestore operations list

Mengimpor data ke project tujuan

Selanjutnya, beri project tujuan akses ke file data Cloud Firestore Anda dan mulai operasi impor.

Beri project tujuan akses ke file data Anda

Sebelum dapat memulai operasi impor, Anda harus memastikan project tujuan dapat mengakses file data Cloud Firestore.

Pindahkan file data ke bucket lokal

Jika lokasi bucket sumber berbeda dengan lokasi Cloud 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].

Beri akun layanan project akses ke bucket sumber Anda

Jika bucket sumber tidak ada dalam project tujuan, Anda harus memberi akun layanan default project tujuan akses ke bucket sumber Anda. Akun layanan default diberi nama [DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com. Untuk memberi akun layanan default akses ke bucket sumber Anda, berikan peran Storage Admin.

Anda dapat memberikan peran ini dengan fitur gsutil yang tersedia di Cloud Shell:

Mulai Cloud Shell

gsutil iam ch serviceAccount:[DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com:storage.admin \
gs://[SOURCE_BUCKET]

Anda juga dapat memberikan peran ini di GCP console.

Mulai operasi impor

Sebelum memulai operasi impor, pastikan gcloud dikonfigurasikan untuk project yang benar:

gcloud config set project [DESTINATION_PROJECT_ID]

Gunakan perintah gcloud beta firestore import untuk mengimpor data dalam bucket sumber ke project tujuan Anda:

gcloud beta firestore import gs://[SOURCE_BUCKET]/[EXPORT_PREFIX] --async

Dengan [EXPORT_PREFIX] cocok dengan awalan di outputUriPrefix operasi ekspor Anda. Contoh:

gcloud beta 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 operasinya:

gcloud beta firestore operations list