Projeler arasında veri taşıma

Bu sayfada, yönetilen içe ve dışa aktarma özelliklerinin nasıl kullanılacağı açıklanmaktadır. Cloud Firestore verilerini başka bir cihazdan devreye girer. Bu, geliştirme ortamı kurulurken faydalı olabilir veya bir uygulamayı başka bir projeye kalıcı olarak taşıma kapsamında değerlendirilebilir. Bu sayfadaki örnekte, bir ve ardından bu verileri bir hedef projeye aktarmaktır. Veriler taşınıyor şu adımları içerir:

  1. Kaynak projenizdeki verileri tutmak için bir Cloud Storage paketi oluşturun.
  2. Kaynak projenizdeki verileri pakete aktarın.
  3. Hedef projenize paketten okuma izni verin.
  4. Paketteki verileri hedef projenize aktarın.

Başlamadan önce

Yönetilen dışa aktarma ve içe aktarma hizmetini kullanabilmek için şu görevlerden yararlanabilirsiniz:

  1. Etkinleştir hem kaynak projeniz hem de faturalandırmanız için seçin. Yalnızca Google Cloud faturalandırmanın etkin olduğu projelerde dışa ve içe aktarma işlemleri kullanılabilir.
  2. Hesabınızın gerekli Cloud IAM'ye sahip olduğundan emin olun kaynak projenizdeki izinleri ve söz konusu olabilir. Her iki projenin sahibi olarak hesabınız, izin verir. Aksi takdirde aşağıdaki Cloud IAM rolleri Cloud Firestore için gerekli izinleri verin dışa ve içe aktarma işlemleri:

    Owner, Cloud Datastore Owner veya Cloud Datastore Import Export Admin

    Proje sahibi şu rollerden birini verebilir: adım Erişim izni verin.

  3. gcloud komut satırı aracını kurup projenize bağlanın aktarabilirsiniz:

  4. Yeni projenizde dizinleri ayarlayın. Bileşik dizinler, iki ayrı proje başlatma belgesi hazırlamak hayati önem taşır. Dizinler ayarlanmalıdır her belgeyi birkaç kez işlemek zorunda kalmamak için öncelikle.

Kaynak projeden verileri dışa aktarma

Şu alan için Cloud Storage paketi oluşturarak verilerinizi dışa aktarabilirsiniz: Cloud Firestore dosyaları dışa aktarma ve dışa aktarma işlemi başlatma.

Cloud Storage paketi oluşturma

Oluştur: Cloud Storage paketinin Cloud Firestore'unuzla aynı konumda olması gerekir Veritabanı konumunuzu görüntülemek için proje konumu ayarına dikkat edin. Dışa ve içe aktarma işlemleri için İstek Sahibi Ödemesi paketi kullanamazsınız.

Cloud Storage paketiniz kaynak projesinin bir yolunu bulmak için kaynak projenin pakete varsayılan hizmet hesabı erişimi sağlar. Her bir Google Cloud projesi PROJECT_ID@appspot.gserviceaccount.com adında, otomatik olarak oluşturulmuş bir varsayılan hizmet hesabı var. Cloud Firestore dışa aktarma işlemleri, Cloud Storage'ı yetkilendirmek için bu varsayılan hizmet hesabını kullanır paket işlemleri. To kaynak paketinize varsayılan hizmet hesabı erişimi sağlamak üzere Storage Admin çok önemlidir.

Bu rolü gsutil aracı Cloud Shell'de kullanılabilir:

Cloud Shell'i başlatma

gsutil iam ch serviceAccount:[service-PROJECT_NUMBER]@gcp-sa-firestore.iam.gserviceaccount.com :roles/storage.admin\
gs://[BUCKET_NAME]@

Bu rolü Google Cloud Console'da da verebilirsiniz.

Yazma işlemlerini devre dışı bırak (isteğe bağlı)

Uygulamanız, dışa aktarma işlemi sırasında veritabanınıza yazmaya devam ediyorsa işlemi için, bu yazma işlemlerinin tamamını dışa aktarma dosyalarınıza kaydedemeyebilirsiniz. Alıcı: Verileri tutarlı bir durumda dışa aktarın, ve tüm Yönetici SDK'sı işlemlerini durdurmanız gerekebilir.

  1. Güvenlik kurallarını güncelleme

    Cloud Firestore'da Kurallar sekmesi hepsini reddetmek için kaynak proje güvenlik kurallarınızı güncelleyin. yazar. Ö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
        }
      }
    
  2. Yönetici SDK'larından yazma işlemlerini durdurma

    Güvenlik kuralları, ayrıcalıklı sunucudan gelen yazma işlemlerini durdurmaz Firebase Yöneticisi kullanılarak oluşturulmuş ortamlar SDK veya Google Cloud Sunucu İstemcisi Kitaplık. Yönetici sunucularınızdan yazma işlemlerini şu tarihe kadar durdurduğunuzdan emin olun: sunucularınızı kapatmak veya güncellemek.

Dışa aktarma işlemi başlatma

Dışa aktarmak için gcloud firestore export komutunu kullanın verileri toplayabilirsiniz. Tüm verilerinizi veya yalnızca belirli koleksiyonlarda kullanılabilir. [SOURCE_BUCKET] yerine Cloud Storage paketi:

Tüm verileri dışa aktar
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

Aşağıdaki verileri kullanarak dışa aktarma işleminize ait outputURIPrefix not alın: ele alacağız. Cloud Firestore, dışa aktarma işleminize varsayılan olarak bir ön ek ekler bir zaman damgasına göre düzenlemek için:

outputUriPrefix: gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418

Dışa aktarma işlemi çalışırken firestore operations list kullanabilirsiniz. komutunu kullanın:

gcloud firestore operations list

Verileri hedef projeye aktarma

Ardından, hedef projenin Cloud Firestore veri dosyalarını kullanın ve bir içe aktarma işlemi başlatın.

Hedef projenin veri dosyalarınıza erişmesine izin verin

Bir içe aktarma işlemine başlayabilmeniz için hedef projenizin Cloud Firestore'unuza erişebildiğinden emin olun veri dosyası olarak kaydeder.

Veri dosyalarını yerel pakete taşıma

Kaynak paketinizin konumu Hedef projenizin Cloud Firestore konumu. Taşınmanız gerekir. veri dosyalarınızı aynı zamanda bir Cloud Storage paketine olarak belirleyin.

Aşağıdaki adımları uygulayarak veri dosyalarınızı başka bir Cloud Storage paketine taşıyın. Paketleri Taşıma ve Yeniden Adlandırma konusuna bakın. Aşağıdaki tüm adımlar için 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ının kaynak paketinize erişmesini sağlayın. İlgili içeriği oluşturmak için kullanılan varsayılan hizmet hesabı adlandırıldı [DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com Alıcı: varsayılan hizmet hesabının kaynak paketinize erişmesine izin verin, uygun izinlere sahip olmanız gerekir.

Rolünüzle birlikte gerekli rolleri gsutil aracı Cloud Shell'de kullanılabilir:

Cloud Shell'i başlatma

gsutil iam ch serviceAccount:[DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com:legacyBucketReader,legacyObjectReader \
gs://[SOURCE_BUCKET]

Bu rolü Google Cloud Console'da da verebilirsiniz.

İçe aktarma işlemi başlatma

İçe aktarma işlemine başlamadan önce gcloud uygulamasının yapılandırıldığından emin olun doğru proje için:

gcloud config set project [DESTINATION_PROJECT_ID]

Verileri gcloud firestore import komutunu kullanarak içe aktarma kaynak paketinizi hedef projenize aktarın:

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

Burada [EXPORT_PREFIX], dışa aktarma işleminizdeki önekle eşleşir. outputUriPrefix. Örneğin:

gcloud firestore import gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418 --async

Dışa aktarma işlemi çalışırken firestore operations list kullanabilirsiniz. komutunu kullanın:

gcloud firestore operations list