Projeler arasında veri taşıma

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, bir geliştirme ortamı oluşturmak veya bir uygulamayı kalıcı olarak başka bir projeye taşımanın bir parçası olarak yararlı olabilir. Bu sayfadaki örnekte, bir kaynak projeden verilerin nasıl dışarı aktarılacağı ve ardından bu verilerin bir hedef projeye nasıl aktarılacağı gösterilmektedir. Verileri projeler arasında taşımak aşağıdaki adımları içerir:

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

Sen başlamadan önce

Yönetilen dışa ve içe aktarma hizmetini kullanabilmeniz için aşağıdaki görevleri tamamlamanız gerekir:

  1. Hem kaynak projeniz hem de hedef projeniz için faturalandırmayı etkinleştirin. Dışa aktarma ve içe aktarma işlevini yalnızca faturalandırmanın etkin olduğu Google Cloud projeleri kullanabilir.
  2. Kaynak projenizde ve hedef projenizde hesabınızın gerekli Cloud IAM izinlerine sahip olduğundan emin olun. Her iki projenin de proje sahibiyseniz hesabınız gerekli izinlere sahiptir. 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 veya Cloud Datastore Import Export Admin

    Bir proje sahibi, Erişim verme bölümündeki adımları izleyerek bu rollerden birini verebilir.

  3. gcloud komut satırı aracını kurun ve projenize aşağıdaki yollardan biriyle bağlanın:

  4. Yeni projenizde dizinleri ayarlayın. Bileşik dizinler kaynak ve hedef projeler arasında eşleşmelidir. Her belgeyi birden çok kez işlemek zorunda kalmamak için öncelikle dizinler ayarlanmalıdır.

Kaynak projeden verileri dışarı aktarın

Cloud Firestore dışa aktarma dosyalarınız için bir Cloud Storage paketi oluşturarak ve bir dışa aktarma işlemi başlatarak verilerinizi dışa aktarın.

Cloud Storage paketi oluşturma

Cloud Firestore veritabanınızla aynı konumda bir Cloud Storage paketi oluşturun . Veritabanı konumunuzu görüntülemek için proje konum ayarınıza bakın. İhracat ve ithalat işlemleri için Talep Eden Ödemeler grubunu kullanamazsınız.

Cloud Storage paketiniz kaynak projenizde değilse kaynak projenin varsayılan hizmet hesabına pakete erişim izni vermeniz gerekir. Her Google Cloud projesinin PROJECT_ID @appspot.gserviceaccount.com adında otomatik olarak oluşturulmuş bir varsayılan hizmet hesabı vardır. Cloud Firestore dışa aktarma işlemleri, Cloud Storage paket işlemlerini yetkilendirmek için bu varsayılan hizmet hesabını kullanır. Kaynak grubunuza varsayılan hizmet hesabı erişimi vermek için ona Storage Admin rolünü verin.

Bu rolü Cloud Shell'de bulunan gsutil aracıyla verebilirsiniz:

Cloud Shell'i başlatın

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ırakın (isteğe bağlı)

Siz bir dışarı aktarma işlemi gerçekleştirirken uygulamanız veritabanınıza yazmaya devam ederse, bu yazma işlemlerinin tümünü dışarı aktarma dosyalarınızda yakalayamayabilirsiniz. Verileri tutarlı bir durumdan dışarı aktarmak için güvenlik kurallarınızı güncelleyerek ve tüm Yönetici SDK işlemlerini durdurarak veritabanınıza yazmayı devre dışı bırakın.

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

    Konsolun Cloud Firestore Kuralları sekmesinde , tüm yazma işlemlerini reddetmek için kaynak proje güvenlik kurallarınızı 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
        }
      }
    
  2. Yönetici SDK'larından yazmayı durdurma

    Güvenlik kuralları , Firebase Yönetici SDK'sı veya Google Cloud Sunucu İstemci Kitaplığı 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ızdan yazma işlemlerini durdurduğunuzdan emin olun.

Dışa aktarma işlemine başlayın

Kaynak projenizdeki verileri dışa aktarmak için gcloud firestore export komutunu kullanın. Tüm verilerinizi veya yalnızca belirli koleksiyonlarınızı dışa aktarabilirsiniz. [SOURCE_BUCKET] kısmını Cloud Storage paketinizin adıyla değiştirin:

Tüm verileri dışa aktar
gcloud firestore export gs://[SOURCE_BUCKET] --async
Belirli koleksiyonları dışa aktar
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 not edin. Varsayılan olarak Cloud Firestore, dışa aktarma dosyalarınıza zaman damgasına dayalı bir ön düzeltme ekler:

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

Dışa aktarma işlemi çalışırken, işleminizin ilerleyişini görüntülemek için firestore operations list komutunu kullanabilirsiniz:

gcloud firestore operations list

Verileri hedef projeye aktarın

Ardından hedef projenin Cloud Firestore veri dosyalarınıza erişmesine izin verin 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şlamadan önce hedef projenizin Cloud Firestore veri dosyalarınıza erişebildiğinden emin olmalısınız.

Veri dosyalarını yerel bir pakete taşıyın

Kaynak paket konumunuz hedef projenizin Cloud Firestore konumundan farklıysa veri dosyalarınızı hedef projenizle aynı konumdaki Cloud Storage paketine taşımanız gerekir.

Paketleri Taşıma ve Yeniden Adlandırma bölümündeki adımları izleyerek veri dosyalarınızı başka bir Cloud Storage paketine taşıyın. Aşağıdaki adımların tümü için bu yeni paketi [SOURCE_BUCKET] olarak kullanın.

Proje hizmeti hesabının kaynak paketinize erişmesine izin 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 . Varsayılan hizmet hesabına kaynak paketinize erişim izni vermek için, pakete erişmesi için uygun izinleri verin.

Cloud Shell'de bulunan gsutil aracıyla gerekli rolleri verebilirsiniz:

Cloud Shell'i başlatın

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

Bu rolü Google Cloud konsolunda da verebilirsiniz .

Bir içe aktarma işlemi başlatma

İçe aktarma işlemine başlamadan önce gcloud 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şleminizin outputUriPrefix önekle 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 ilerleyişini görüntülemek için firestore operations list komutunu kullanabilirsiniz:

gcloud firestore operations list