Hanya berlaku untuk edisi Cloud Firestore Enterprise. |
Anda dapat menggunakan layanan ekspor dan impor terkelola untuk memulihkan data yang tidak sengaja terhapus dan mengekspor data untuk pemrosesan offline. Anda dapat mengekspor semua dokumen atau hanya koleksi tertentu. Demikian pula, Anda dapat mengimpor semua data atau hanya koleksi tertentu dari suatu ekspor. Data yang diekspor dari satu database Cloud Firestore dengan kompatibilitas MongoDB dapat diimpor ke database Cloud Firestore dengan kompatibilitas MongoDB lainnya. Anda juga dapat memuat ekspor Cloud Firestore dengan kompatibilitas MongoDB ke BigQuery.
Halaman ini menjelaskan cara mengekspor dan mengimpor dokumen Cloud Firestore dengan kompatibilitas MongoDB menggunakan
layanan ekspor dan impor terkelola serta Cloud Storage. Layanan
ekspor dan impor terkelola Cloud Firestore dengan kompatibilitas MongoDB tersedia melalui alat command-line
gcloud
dan API Cloud Firestore
dengan kompatibilitas MongoDB (REST, RPC).
Sebelum memulai
Sebelum dapat menggunakan layanan ekspor dan impor terkelola, Anda harus menyelesaikan tugas-tugas berikut:
- Aktifkan penagihan untuk project Google Cloud. Hanya project Google Cloud dengan penagihan aktif yang dapat menggunakan fungsi ekspor dan impor.
- Buat bucket Cloud Storage untuk project Anda di lokasi yang dekat dengan lokasi database Cloud Firestore dengan kompatibilitas MongoDB Anda. Anda tidak dapat menggunakan bucket Requester Pays untuk operasi ekspor dan impor.
-
Pastikan akun Anda memiliki izin yang diperlukan untuk Cloud Firestore dengan kompatibilitas MongoDB dan Cloud Storage. Jika Anda adalah pemilik project, berarti akun Anda memiliki izin yang diperlukan. Jika tidak, peran berikut memberikan izin yang diperlukan untuk operasi ekspor dan impor, serta untuk mengakses Cloud Storage:
- Peran Cloud Firestore dengan kompatibilitas MongoDB:
Owner
,Cloud Datastore Owner
, atauCloud Datastore Import Export Admin
Peran Cloud Storage:
Owner
atauStorage Admin
- Peran Cloud Firestore dengan kompatibilitas MongoDB:
Izin agen layanan
Operasi ekspor dan impor menggunakan agen layanan Cloud Firestore untuk mengizinkan operasi Cloud Storage. Agen layanan Cloud Firestore menggunakan konvensi penamaan berikut:
- Agen layanan Cloud Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
Untuk mempelajari lebih lanjut agen layanan, lihat Agen layanan.
Agen layanan Cloud Firestore memerlukan akses ke bucket Cloud Storage yang digunakan dalam operasi ekspor atau impor. Jika bucket Cloud Storage Anda berada dalam project yang sama dengan database Cloud Firestore, agen layanan Cloud Firestore akan dapat mengakses bucket secara default.
Jika bucket Cloud Storage berada dalam project lain, Anda harus memberi agen layanan Cloud Firestore akses ke bucket Cloud Storage.
Menetapkan peran ke agen layanan
Anda dapat menggunakan alat command line gsutil untuk menetapkan salah satu peran di bawah ini. Misalnya, untuk menetapkan peran Storage Admin ke agen layanan Cloud Firestore, lakukan hal berikut:
gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com:roles/storage.admin \ gs://[BUCKET_NAME]
Ganti PROJECT_NUMBER
dengan nomor project yang
digunakan untuk memberi nama agen layanan Cloud Firestore. Untuk melihat
nama agen layanan, lihat Melihat nama agen layanan.
Atau, Anda dapat menetapkan peran ini menggunakan konsol Google Cloud.
Melihat nama agen layanan
Anda dapat melihat akun yang digunakan operasi impor dan ekspor untuk mengizinkan permintaan dari halaman Import/Export di konsol Google Cloud. Anda juga dapat melihat apakah database menggunakan agen layanan Cloud Firestore atau akun layanan App Engine lama.
- Lihat akun otorisasi di samping label Import/Export jobs run as.
Akun layanan memerlukan Storage Admin
peran untuk bucket
Cloud Storage yang digunakan untuk operasi ekspor atau impor.
Menyiapkan gcloud
untuk project Anda
Anda dapat memulai operasi impor dan ekspor melalui konsol Google Cloud atau
alat command-line gcloud
. Untuk menggunakan gcloud
, siapkan alat command-line dan hubungkan ke project Anda dengan salah satu cara berikut:
Akses
gcloud
dari konsol Google Cloud menggunakan Cloud Shell.Pastikan
gcloud
dikonfigurasi untuk project yang tepat:gcloud config set project [PROJECT_ID]
Mengimpor data
Setelah memiliki file ekspor di Cloud Storage, Anda dapat mengimpor kembali dokumen dalam file tersebut ke project Anda atau ke project lain. Perhatikan hal-hal berikut terkait operasi impor:
Ketika Anda mengimpor data, indeks yang diperlukan akan diupdate menggunakan definisi indeks database Anda saat ini. Ekspor tidak berisi definisi indeks.
Impor tidak menetapkan ID dokumen baru. Impor menggunakan ID yang diambil pada saat ekspor. Saat dokumen sedang diimpor, ID-nya dicadangkan untuk mencegah konflik ID. Jika terdapat dokumen dengan ID yang sama, operasi impor akan menimpa dokumen yang ada.
Jika dokumen dalam database Anda tidak terpengaruh oleh impor, dokumen tersebut akan tetap berada di database setelah impor selesai.
Nama file
.overall_export_metadata
harus sama dengan nama folder induknya:gs://BUCKET_NAME/OPTIONAL_NAMESPACE_PATH/PARENT_FOLDER_NAME/PARENT_FOLDER_NAME.overall_export_metadata
Jika Anda memindahkan atau menyalin file output ekspor, pastikan nama file PARENT_FOLDER_NAME dan
.overall_export_metadata
sama.Impor ke database Cloud Firestore dengan kompatibilitas MongoDB dari ekspor dengan subkoleksi gagal karena subkoleksi tidak didukung di Cloud Firestore dengan kompatibilitas MongoDB.
Impor ke database edisi Cloud Firestore Standard dari ekspor dengan jenis BSON gagal karena jenis BSON tidak didukung di edisi Cloud Firestore Standard.
Impor ke database Cloud Firestore dengan kompatibilitas MongoDB tidak dapat mengimpor data dari namespace non-default (Datastore API).
Impor ke database Cloud Firestore dengan kompatibilitas MongoDB dari file data yang berisi namespace non-default hanya diizinkan jika operasi ekspor menyertakan filter
--namespace-ids
dengan namespace default. Hanya data dari namespace default yang diimpor.
Mengimpor semua dokumen dari ekspor
Konsol Google Cloud
Di konsol Google Cloud, buka halaman Databases.
Pilih database dari daftar database.
Di menu navigasi, klik Import/Export.
Klik Impor.
Di kolom Filename, masukkan nama file
.overall_export_metadata
dari operasi ekspor yang sudah selesai. Anda dapat menggunakan tombol Browse untuk membantu memilih file.Klik Impor.
Konsol akan kembali ke halaman Import/Export. Jika operasi berhasil dimulai, halaman akan menambahkan entri ke halaman impor dan ekspor terbaru. Jika gagal, halaman akan menampilkan pesan error.
gcloud
Gunakan perintah firestore import
untuk mengimpor dokumen dari operasi ekspor sebelumnya.
gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ --database=[DATABASE]
Ganti kode berikut:
BUCKET_NAME/EXPORT_PREFIX
: lokasi file ekspor.DATABASE
: nama database.
Contoh:
gcloud firestore import gs://my-bucket/2017-05-25T23:54:39_76544/ --database='cymbal'
Anda dapat mengonfirmasi lokasi file ekspor di browser Cloud Storage di konsol Google Cloud:
Setelah Anda memulai operasi impor, penutupan terminal tidak akan membatalkan operasi. Baca bagian membatalkan operasi.
Mengimpor koleksi tertentu
Google Cloud Console
Anda tidak dapat memilih koleksi tertentu di konsol. Sebagai gantinya, gunakan gcloud
.
gcloud
Untuk mengimpor koleksi tertentu dari serangkaian file ekspor, gunakan
tanda --collection-ids
. Operasi hanya mengimpor
koleksi dengan ID koleksi yang diberikan.
Tentukan nama database menggunakan tanda --database
.
Hanya ekspor koleksi tertentu yang mendukung impor koleksi tertentu. Anda tidak dapat mengimpor koleksi tertentu jika menggunakan perintah ekspor semua dokumen.
gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ \ --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2] \ --database=[DATABASE]
Mengimpor dari ekspor dengan data PITR
Gunakan langkah-langkah yang sama seperti di bagian Mengimpor semua dokumen atau Mengimpor koleksi tertentu untuk mengimpor data PITR. Jika ada dokumen yang sudah ada dalam database Anda, dokumen tersebut akan ditimpa.
Ekspor data
Operasi ekspor akan menyalin dokumen dalam database Anda ke sekumpulan file dalam bucket Cloud Storage. Perlu diperhatikan bahwa ekspor bukan merupakan snapshot persis dari database yang diambil pada waktu mulai ekspor. Ekspor dapat mencakup perubahan yang dilakukan saat operasi berjalan.
Mengekspor semua dokumen
Konsol Google Cloud
Di konsol Google Cloud, buka halaman Databases.
Pilih database yang diperlukan dari daftar database.
Di menu navigasi, klik Import/Export.
Klik Ekspor.
Klik opsi Export entire database.
Pilih Export current state of database untuk mengekspor data saat ini.
Di bagian Destination, masukkan nama bucket Cloud Storage atau gunakan tombol Browse untuk memilih bucket.
Klik Ekspor.
Konsol akan kembali ke halaman Import/Export. Jika operasi berhasil dimulai, halaman akan menambahkan entri ke halaman impor dan ekspor terbaru. Jika gagal, halaman akan menampilkan pesan error.
gcloud
Gunakan perintah firestore export
untuk mengekspor semua
dokumen dalam database Anda, dengan mengganti [BUCKET_NAME]
dengan nama
bucket Cloud Storage. Tambahkan flag --async
agar alat gcloud
tidak menunggu operasi selesai.
gcloud firestore export gs://[BUCKET_NAME] \ --database=[DATABASE]
Ganti kode berikut:
BUCKET_NAME
: atur ekspor Anda dengan menambahkan awalan file setelah nama bucket, misalnya,BUCKET_NAME/my-exports-folder/export-name
. Jika Anda tidak memberikan imbuhan file, layanan ekspor terkelola akan membuat imbuhan file berdasarkan stempel waktu saat ini.DATABASE
: nama database tempat Anda ingin mengekspor dokumen.
Setelah Anda memulai operasi ekspor, penutupan terminal tidak akan membatalkan operasi. Baca bagian membatalkan operasi.
Mengekspor koleksi tertentu
Konsol Google Cloud
Di konsol Google Cloud, buka halaman Databases.
Pilih database yang diperlukan dari daftar database.
Di menu navigasi, klik Import/Export.
Klik Ekspor.
Klik opsi Export one or more collection groups. Gunakan menu drop-down untuk memilih satu koleksi atau lebih.
Pilih Export current state of database untuk mengekspor data saat ini.
Di bagian Destination, masukkan nama bucket Cloud Storage atau gunakan tombol Browse untuk memilih bucket.
Klik Ekspor.
Konsol akan kembali ke halaman Import/Export. Jika operasi berhasil dimulai, halaman akan menambahkan entri ke halaman impor dan ekspor terbaru. Jika gagal, halaman akan menampilkan pesan error.
gcloud
Untuk mengekspor koleksi tertentu, gunakan
tanda --collection-ids
. Operasi hanya mengekspor
koleksi dengan ID koleksi yang diberikan.
gcloud firestore export gs://[BUCKET_NAME] \ --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2] \ --database=[DATABASE]
Misalnya, Anda dapat mendesain koleksi restaurants
di database foo
untuk menyertakan koleksi tambahan, seperti ratings
, reviews
, atau outlets
. Untuk mengekspor koleksi tertentu restaurants
dan reviews
, perintah Anda akan terlihat seperti berikut:
gcloud firestore export gs://[BUCKET_NAME] \ --collection-ids=restaurants,reviews \ --database='cymbal'
Mengekspor dari stempel waktu PITR
Anda dapat mengekspor database ke Cloud Storage dari data PITR.
Anda dapat mengekspor data PITR dengan stempel waktu satu menit dalam
tujuh hari terakhir, tetapi tidak lebih awal dari earliestVersionTime
. Jika data tidak
lagi ada di stempel waktu yang ditentukan, operasi ekspor akan gagal.
Operasi ekspor PITR mendukung semua filter, termasuk mengekspor semua dokumen dan mengekspor koleksi tertentu.
Perhatikan hal-hal berikut sebelum mengekspor data PITR:
- Tentukan stempel waktu dalam
format RFC 3339. Contoh,
2020-09-01T23:59:30.234233Z
. - Pastikan stempel waktu yang Anda tentukan adalah stempel waktu satu menit terakhir dalam tujuh hari terakhir, tetapi tidak lebih awal dari
earliestVersionTime
. Jika data sudah tidak ada di stempel waktu yang ditentukan, akan terjadi error. - Anda tidak akan ditagih untuk ekspor PITR yang gagal.
Konsol
-
Di konsol Google Cloud, buka halaman Databases.
Buka Databases - Pilih database dari daftar database.
- Di menu navigasi, klik Import/Export.
- Klik Ekspor.
- Konfigurasi sumber ekspor untuk mengekspor seluruh database atau hanya koleksi tertentu.
Di bagian Choose the state of your database to export, pilih Export from an earlier point in time.
Pilih waktu snapshot yang akan digunakan untuk ekspor
- Di bagian Destination, masukkan nama bucket Cloud Storage atau gunakan tombol Browse untuk memilih bucket.
-
Klik Ekspor.
Konsol akan kembali ke halaman Import/Export. Jika operasi berhasil dimulai, halaman akan menambahkan entri ke halaman impor dan ekspor terbaru. Jika gagal, halaman akan menampilkan pesan error.
gcloud
Anda dapat mengekspor database ke Cloud Storage dari
data PITR menggunakan perintah gcloud firestore export
.
Ekspor database, dengan menentukan parameter snapshot-time
ke stempel waktu pemulihan. Jalankan perintah berikut untuk mengekspor database ke bucket Anda.
gcloud firestore export gs://[BUCKET_NAME_PATH] \ --snapshot-time=[PITR_TIMESTAMP]
Dengan PITR_TIMESTAMP
adalah stempel waktu PITR pada tingkat perincian menit, misalnya, 2023-05-26T10:20:00.00Z
.
Tambahkan flag --collection-ids
untuk mengekspor koleksi tertentu.
Mengelola operasi ekspor dan impor
Setelah Anda memulai operasi ekspor atau impor, Cloud Firestore dengan kompatibilitas MongoDB akan menetapkan nama unik untuk operasi tersebut. Anda dapat menggunakan nama operasi untuk menghapus, membatalkan, atau memeriksa status operasi.
Nama operasi diawali dengan projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/
, misalnya:
projects/my-project/databases/my-database/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg
Namun, Anda dapat tidak menyertakan awalan saat menentukan nama operasi untuk perintah describe
, cancel
, dan delete
.
Mencantumkan semua operasi ekspor dan impor
Konsol Google Cloud
Anda dapat melihat daftar operasi ekspor dan impor terbaru di halaman Import/Export di konsol Google Cloud.
Di konsol Google Cloud, buka halaman Databases.
Pilih database yang diperlukan dari daftar database.
Di menu navigasi, klik Import/Export.
gcloud
Gunakan perintah operations list
untuk melihat semua operasi ekspor dan impor yang berjalan dan baru selesai:
gcloud firestore operations list
Memeriksa status operasi
Konsol Google Cloud
Anda dapat melihat status operasi ekspor atau impor terbaru di halaman Import/Export di konsol Google Cloud.
Di konsol Google Cloud, buka halaman Databases.
Pilih database yang diperlukan dari daftar database.
Di menu navigasi, klik Import/Export.
gcloud
Gunakan perintah operations describe
untuk menampilkan status operasi ekspor atau impor.
gcloud firestore operations describe [OPERATION_NAME]
Memperkirakan waktu penyelesaian
Permintaan untuk status operasi yang berjalan lama akan menampilkan metrik workEstimated
dan workCompleted
. Setiap metrik tersebut ditampilkan baik dalam jumlah byte maupun jumlah entity:
workEstimated
menampilkan estimasi total jumlah byte dan dokumen yang akan diproses oleh sebuah operasi. Cloud Firestore dengan kompatibilitas MongoDB mungkin menghilangkan metrik ini jika tidak dapat membuat perkiraan.workCompleted
menunjukkan jumlah byte dan dokumen yang diproses sejauh ini. Setelah operasi selesai, nilai akan menunjukkan jumlah total byte dan dokumen yang benar-benar diproses, dan mungkin lebih besar dari nilaiworkEstimated
.
Bagilah workCompleted
dengan workEstimated
untuk mengetahui perkiraan kasar dari progresnya. Perkiraan ini mungkin tidak akurat karena tergantung pada koleksi statistik yang tertunda.
Membatalkan operasi
Konsol Google Cloud
Anda dapat membatalkan operasi ekspor atau impor yang sedang berjalan di halaman Import/Export di konsol Google Cloud.
Di konsol Google Cloud, buka halaman Databases.
Pilih database yang diperlukan dari daftar database.
Di menu navigasi, klik Import/Export.
Di tabel Recent imports and exports, operasi yang saat ini sedang berjalan menyertakan tombol Cancel di kolom Completed. Klik tombol Cancel untuk menghentikan operasi. Tombol akan berubah menjadi pesan Cancelling kemudian Cancelled saat operasi berhenti sepenuhnya.
gcloud
Gunakan perintah operations cancel
untuk menghentikan operasi yang sedang berlangsung:
gcloud firestore operations cancel [OPERATION_NAME]
Jika operasi yang sedang berjalan dibatalkan, operasi tersebut tidak akan diurungkan. Operasi ekspor yang dibatalkan akan membiarkan dokumen yang telah diekspor di dalam Cloud Storage, sedangkan operasi impor yang dibatalkan akan membiarkan pembaruan yang sudah dilakukan pada database Anda. Anda tidak dapat mengimpor ekspor yang selesai sebagian.
Menghapus operasi
Gunakan perintah gcloud firestore operations delete
untuk menghapus operasi dari daftar operasi terbaru. Perintah ini tidak akan menghapus
file ekspor dari Cloud Storage.
gcloud firestore operations delete [OPERATION_NAME]
Penagihan dan harga untuk operasi ekspor dan impor
Anda harus mengaktifkan penagihan untuk project Google Cloud sebelum menggunakan layanan ekspor dan impor terkelola.
Operasi ekspor dan impor dikenai biaya untuk unit baca dan unit tulis sesuai tarif yang tercantum dalam harga Cloud Firestore dengan kompatibilitas MongoDB.
File output yang disimpan di Cloud Storage memengaruhi biaya penyimpanan data Cloud Storage Anda.
Operasi ekspor atau impor tidak akan memicu notifikasi anggaran Google Cloud hingga operasi selesai. Operasi ekspor dan impor tidak akan memengaruhi penggunaan yang ditampilkan di bagian penggunaan konsol.
Melihat biaya ekspor dan impor
Operasi ekspor dan impor menerapkan label goog-firestoremanaged:exportimport
ke operasi yang ditagih. Di halaman Cloud Billing reports, Anda dapat menggunakan label ini untuk melihat biaya yang terkait dengan operasi impor dan ekspor:
Mengekspor ke BigQuery
Anda dapat memuat data dari ekspor Cloud Firestore dengan kompatibilitas MongoDB ke BigQuery,
tetapi hanya jika Anda menentukan filter collection-ids
. Lihat
Memuat data dari ekspor Cloud Firestore dengan kompatibilitas MongoDB.
Saat memuat data Cloud Firestore dengan kompatibilitas MongoDB ke BigQuery, jenis data BSON
direpresentasikan dengan jenis data STRING
.
Batas kolom BigQuery
BigQuery menetapkan batas 10.000 kolom per tabel. Operasi ekspor Cloud Firestore dengan kompatibilitas MongoDB menghasilkan skema tabel BigQuery untuk setiap koleksi. Dalam skema ini, setiap nama kolom unik dalam koleksi menjadi kolom skema.
Jika skema BigQuery koleksi melebihi 10.000 kolom, operasi ekspor Cloud Firestore dengan kompatibilitas MongoDB berupaya agar tidak melebihi batas kolom dengan memperlakukan kolom peta sebagai byte. Jika konversi ini menghasilkan jumlah kolom kurang dari 10.000, Anda dapat memuat data ke BigQuery, tetapi tidak dapat membuat kueri subkolom dalam bidang peta. Jika jumlah kolom masih melampaui 10.000, operasi ekspor tidak menghasilkan skema BigQuery untuk koleksi dan Anda tidak dapat memuat datanya ke BigQuery.
Mengekspor file format dan metadata
Output ekspor yang dikelola menggunakan format log LevelDB.
File metadata
Operasi ekspor membuat file metadata untuk setiap koleksi
yang Anda tentukan. File metadata biasanya bernama ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata
.
File metadata adalah buffering protokol dan Anda dapat mendekodenya dengan compiler protokol protoc
.
Misalnya, Anda dapat mendekode file metadata untuk menentukan koleksi
yang berada di dalam file ekspor:
protoc --decode_raw < export0.export_metadata