Bu sayfada, Cloud Firestore verilerini bir projeden diğerine taşımak için yönetilen içe ve dışa aktarma özelliklerinin nasıl kullanılacağı açıklanmaktadır. Bu, geliştirme ortamı oluştururken veya bir uygulamayı kalıcı olarak başka bir projeye taşırken yararlı olabilir. Bu sayfadaki örnek, verilerin bir kaynak projeden nasıl dışa aktarılacağını ve ardından hedef projeye nasıl içe aktarılacağını gösterir. Verileri projeler arasında taşıma işlemi aşağıdaki adımları içerir:
- Kaynak projenizdeki verileri tutacak bir Cloud Storage paketi oluşturun.
- Kaynak projenizdeki verileri pakete aktarın.
- Hedef projenize paketten okuma izni verin.
- Paketteki verileri hedef projenize aktarın.
Başlamadan önce
Yönetilen dışa ve içe aktarma hizmetini kullanabilmek için aşağıdaki görevleri tamamlamanız gerekir:
- Hem kaynak projeniz hem de hedef projeniz için faturalandırmayı etkinleştirin. Dışa ve içe aktarma işlevini yalnızca faturalandırma özelliği etkinleştirilmiş Google Cloud projeler kullanabilir.
-
Hesabınızın kaynak projenizde ve hedef projenizde gerekli Cloud IAM izinlerine sahip olduğundan emin olun. Her iki projenin de proje sahibiyseniz hesabınızda gerekli izinler vardır. Aksi takdirde, aşağıdaki Cloud IAM rolleri Cloud Firestore dışa ve içe aktarma işlemleri için gerekli izinleri verir:
Owner
,Cloud Datastore Owner
veyaCloud Datastore Import Export Admin
Proje sahipleri, Erişim verme bölümündeki adımları uygulayarak bu rollerden birini verebilir.
-
gcloud
komut satırı aracını kurun ve aşağıdaki yöntemlerden birini kullanarak projenize bağlanın:-
Cloud Shell kullanarak Google Cloud konsolundan
gcloud
erişin.gcloud
cihazının doğru proje için yapılandırıldığından emin olun:gcloud config set project [SOURCE_PROJECT_ID]
-
-
Yeni projenizde dizinler oluşturun. Birleşik dizinler, kaynak ve hedef projeler arasında eşleşmelidir. Her belgenin birden fazla kez işlenmesini önlemek için önce dizinler oluşturulmalıdır.
Verileri kaynak projeden dışa aktarma
Cloud Storage paket oluşturarak ve dışa aktarma işlemi başlatarak verilerinizi dışa aktarın.Cloud Firestore
Cloud Storage paketi oluşturma
Cloud Firestore veritabanınızla aynı konumda bir Cloud Storage paketi oluşturun. Veritabanınızın konumunu görüntülemek için proje konum ayarınıza bakın. Dışa aktarma ve içe aktarma işlemleri için istekte bulunanın ödeme yaptığı bir paket kullanamazsınız.
Cloud Storage paketinizkaynak projenizde değilse kaynak projenin varsayılan hizmet hesabına pakete erişim izni vermeniz gerekir. Her Google Cloud projesinde, PROJECT_ID@appspot.gserviceaccount.com
adında otomatik olarak oluşturulan bir varsayılan hizmet hesabı bulunur. Cloud Firestore
Dışa aktarma işlemleri, Cloud Storage
bucket işlemlerini yetkilendirmek için bu varsayılan hizmet hesabını kullanır. Varsayılan hizmet hesabına kaynak paketinize erişim izni vermek için hesaba Storage Admin
rolünü verin.
Bu rolü, Cloud Shell bölümünde bulunan gsutil
aracıyla verebilirsiniz:
gsutil iam ch serviceAccount:[service-PROJECT_NUMBER]@gcp-sa-firestore.iam.gserviceaccount.com :roles/storage.admin\ gs://[BUCKET_NAME]@
Bu rolü Google Cloud konsolunda da verebilirsiniz.
Yazma işlemlerini devre dışı bırakma (isteğe bağlı)
Dışa aktarma işlemi gerçekleştirirken uygulamanız veritabanınıza yazmaya devam ederse bu yazma işlemlerinin tamamını dışa aktarma dosyalarınıza dahil etmeyebilirsiniz. Verileri tutarlı bir durumdan dışa aktarmak için güvenlik kurallarınızı güncelleyerek ve tüm Admin SDK işlemlerini durdurarak veritabanınıza yazma işlemlerini devre dışı bırakın.
Güvenlik kurallarını güncelleme
Konsolun Cloud Firestore Kurallar sekmesinde kaynak proje güvenlik kurallarınızı tüm yazma işlemlerini reddedecek şekilde güncelleyin. Örneğin:
// 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 } }
Yönetici SDK'larından yazma işlemlerini durdurma
Güvenlik kuralları, Firebase Admin SDK veya Google Cloud Server Client Library kullanılarak oluşturulan ayrıcalıklı sunucu ortamlarından gelen yazma işlemlerini durdurmaz. Sunucularınızı kapatarak veya güncelleyerek yönetici sunucularınızdaki yazma işlemlerini durdurduğunuzdan emin olun.
Dışa aktarma işlemi başlatma
Kaynak projenizdeki verileri dışa aktarmak için gcloud firestore export
komutunu kullanın. Tüm verilerinizi veya yalnızca belirli koleksiyonları dışa aktarabilirsiniz. [SOURCE_BUCKET]
ifadesini Cloud Storage paketinizin adıyla değiştirin:
- Tüm verileri dışa aktarma
-
gcloud firestore export gs://[SOURCE_BUCKET] --async
- Belirli koleksiyonları dışa aktarma
-
gcloud firestore export gs://[SOURCE_BUCKET] --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2] --async
Daha sonra kullanacağınız için dışa aktarma işleminizin outputURIPrefix
değerini not alın. Cloud Firestore, dışa aktarma dosyalarınıza varsayılan olarak zaman damgasına göre bir önek ekler:
outputUriPrefix: gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418
Dışa aktarma işlemi çalışırken işleminizin ilerleme durumunu görüntülemek için firestore operations list
komutunu kullanabilirsiniz:
gcloud firestore operations list
Verileri hedef projeye aktarma
Ardından, hedef projeye Cloud Firestore veri dosyalarınıza erişim izni verin ve içe aktarma işlemini başlatın.
Hedef projeye veri dosyalarınıza erişim izni verme
İçe aktarma işlemine başlamadan önce hedef projenizin Cloud Firestore veri dosyalarınıza erişebildiğinden emin olmanız gerekir.
Veri dosyalarını yerel bir pakete taşıma
Kaynak paketin konumunuz, hedef projenizin Cloud Firestore konumundan farklıysa veri dosyalarınızı hedef projenizle aynı konumdaki bir Cloud Storage paketine taşımanız gerekir.
Paketleri Taşıma ve Yeniden Adlandırma bölümündeki adımları uygulayarak veri dosyalarınızı başka bir Cloud Storage paketine taşıyın.
Aşağıdaki tüm adımlarda bu yeni paketi [SOURCE_BUCKET]
olarak kullanın.
Proje hizmet hesabına kaynak paketinize erişim izni verin.
Kaynak paketiniz hedef projenizde değilse hedef projenin varsayılan hizmet hesabına kaynak paketinize erişim izni vermeniz gerekir. Varsayılan hizmet hesabının adı [DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com
'dır. Varsayılan hizmet hesabına kaynak paketinize erişim izni vermek için pakete erişim izni verin.
Cloud Shell'de bulunan gsutil
aracıyla gerekli rolleri verebilirsiniz:
gsutil iam ch serviceAccount:[DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com:legacyBucketReader,legacyObjectReader \ gs://[SOURCE_BUCKET]
Bu rolü Google Cloud konsolunda da verebilirsiniz.
İçe aktarma işlemi başlatma
İçe aktarma işlemine başlamadan önce gcloud
aracının doğru proje için yapılandırıldığından emin olun:
gcloud config set project [DESTINATION_PROJECT_ID]
Kaynak paketinizdeki verileri hedef projenize aktarmak için gcloud firestore import
komutunu kullanın:
gcloud firestore import gs://[SOURCE_BUCKET]/[EXPORT_PREFIX] --async
Burada [EXPORT_PREFIX]
, dışa aktarma işleminizdeki outputUriPrefix
ön ekiyle eşleşir. Örneğin:
gcloud firestore import gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418 --async
Dışa aktarma işlemi çalışırken işleminizin ilerleme durumunu görüntülemek için firestore operations list
komutunu kullanabilirsiniz:
gcloud firestore operations list