Verileri Firestore Standard sürümü veri tabanından Firestore Enterprise sürümü veri tabanına taşımak için aşağıdaki seçeneklerden birini kullanmanızı öneririz:
İçe ve dışa aktarma özellikleri. İçe aktarma işleminden elde edilen veri dosyaları hem Enterprise sürümü hem de Standard sürümüyle uyumludur.
firestore-to-firestoreDataflow şablonu. Dataflow hizmeti, veri ardışık düzenleri oluşturmanıza olanak tanır.firestore-to-firestoreşablonu ise Cloud Firestore veritabanları arasında toplu ardışık düzen oluşturur.
İçe ve dışa aktarma, daha az yapılandırma seçeneğiyle çalışmak için daha basit bir seçenektir.
Dataflow şablonu daha fazla özelleştirilebilir. Şablon kodunu genişleterek kısmi taşıma işlemleri gerçekleştirebilir veya verileri dönüştürebilirsiniz. Çalışan sayısını ve boyutunu da kontrol edebilirsiniz.
Her iki seçenek de projeler ve bölgeler arası taşımaları destekler.
Verileri dışa ve içe aktarma ile taşıma
Dışa ve içe aktarma işlemleriyle veri taşımak için Verileri dışa ve içe aktarma başlıklı makaleyi inceleyin. Verileri başka bir projedeki veritabanına taşımak için Verileri projeler arasında taşıma başlıklı makaleyi inceleyin.
Verileri Dataflow şablonuyla taşıma
Verileri firestore-to-firestore Dataflow şablonuyla taşımak için aşağıdaki talimatları uygulayın.
Başlamadan önce
Veri taşıma işlemine başlamadan önce kaynak veritabanında belirli bir noktaya geri yükleme (PITR) özelliğinin etkinleştirildiğinden emin olun. Dataflow işi, PITR zaman damgasındaki verileri okumak için PITR'yi kullanır. PITR devre dışı bırakılırsa iş bir saatten uzun sürdüğünde başarısız olur.
Bir sonraki bölümde açıklanan gerekli rolleri atayın.
Gerekli roller
Verileri bir veritabanından diğerine taşımak için aşağıdaki rolleri atayın. Gerekli izinleri özel roller veya diğer önceden tanımlanmış roller aracılığıyla da alabilirsiniz:
- Yeni bir veritabanı oluşturmak ve Cloud Firestore verilerine erişmek için gereken izinleri almak üzere yöneticinizden projenizde Cloud Datastore Sahibi (
roles/datastore.owner) Identity and Access Management (IAM) rolünü vermesini isteyin. -
Dataflow işine Cloud Firestore veritabanlarınıza okuma ve yazma erişimi vermek için projenizde Dataflow worker hizmet hesabına (ör.
PROJECT_NUMBER-compute@) Cloud Datastore Kullanıcısı (roles/datastore.user) IAM rolünü atayın.Dataflow güvenliği hakkında daha fazla bilgi için Dataflow güvenliği ve izinleri başlıklı makaleyi inceleyin.
IAM rolleri verme hakkında daha fazla bilgi için Projelere, klasörlere ve kuruluşlara erişimi yönetme başlıklı makaleyi inceleyin.
1. Yeni bir Firestore Enterprise Edition veritabanı oluşturma
Verileri bir Standard sürümü veritabanından Enterprise sürümü veritabanına taşımak için öncelikle Enterprise sürümü hedef veritabanını oluşturmanız gerekir. Veritabanı oluşturma başlıklı makaleyi inceleyin.
2. Dataflow firestore-to-firestore şablonunu çalıştırın.
Dataflow şablonuyla firestore-to-firestore işinizi yapılandırın ve çalıştırın.
Şablonlar, tüm veritabanının veya yalnızca belirtilen koleksiyon gruplarının taşınmasını destekler.
Sınırlamalar
firestore-to-firestore
Dataflow şablonuyla ilgili aşağıdaki sınırlamaları göz önünde bulundurun:
- Kaynak veritabanı, Standard Edition veritabanı olmalıdır.
- Taşıma işlemi, verileri belirli bir okuma zamanında okur. Kaynak veritabanında belirli bir noktadan önceyi kurtarma (PITR) özelliğini etkinleştirmenizi öneririz. PITR etkinleştirilmemişse verilerin süresi bir saat sonra dolar ve bu süre, veri taşıma işleminin tamamlanması için yeterli olmayabilir. PITR, veri saklama süresini yedi güne çıkarır.
- Dizinler taşınmaz.
Dataflow işi, geçerlilik süresi (TTL) politikaları, yedeklemeler, PITR ve müşteri tarafından yönetilen şifreleme anahtarları (CMEK) gibi veritabanı yapılandırmalarını taşımaz.
Bu ayarları yeni veritabanında yapılandırmanız gerekir. Veri taşıma hızını artırmak için hedef veritabanında TTL, yedeklemeler ve PITR'yi yapılandırmak üzere taşıma işleminin tamamlanmasını bekleyin.
Aşağıdaki örneklerde, şablonun Google Cloud CLI kullanılarak nasıl çalıştırılacağı gösterilmektedir.
Tüm verileri taşıma
Tüm verileri taşımak için aşağıdaki komutu kullanın:
gcloud dataflow flex-template run "JOB_NAME" \ --project "PROJECT" \ --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Firestore_to_Firestore \ --region REGION_NAME \ --parameters "sourceProjectId=SOURCE_PROJECT_ID" \ --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \ --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \ --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \ --parameters "readTime=READ_TIME"
Aşağıdakini değiştirin:
JOB_NAME: İş için bir ad.PROJECT: Google Cloud projenizin kimliği.REGION_NAME: Dataflow işini çalıştırmak istediğiniz Google Cloud konum. Veritabanlarınızın yakınında bir konum kullanın.VERSION: Kullanmak istediğiniz şablonun sürümü. Aşağıdaki değerleri kullanabilirsiniz:- Şablonun en son sürümünü kullanmak için
latest. Bu sürüm, paketteki tarihsiz üst klasörde bulunur: gs://dataflow-templates-REGION_NAME/latest/ - Şablonun belirli bir sürümünü kullanmak için
2023-09-12-00_RC00gibi sürüm adı. Bu sürüm, paketteki ilgili tarihli üst klasörde iç içe yerleştirilmiş olarak bulunabilir. gs://dataflow-templates-REGION_NAME/
- Şablonun en son sürümünü kullanmak için
SOURCE_PROJECT_ID: Firestore Standard sürümü veritabanını içeren kaynak Google Cloud projesinin kimliği.SOURCE_DATABASE_ID: Kaynak Cloud Firestore veritabanının kimliği.DESTINATION_PROJECT_ID: Yeni Cloud Firestore veritabanı için hedef Google Cloud projesinin kimliği.DESTINATION_DATABASE_ID: Hedef Cloud Firestore veritabanının kimliği.READ_TIME: Kaynak veritabanından veri okumak için kullanılan zaman damgası.2026-05-15T16:31:00.00Zgibi dakika ayrıntı düzeyinde RFC 3339 biçiminde bir zaman damgası olarak ayarlayın.En erken geçerli zaman damgası, belirli bir noktadan önceyi kurtarma (PITR) ayarlarınıza bağlıdır. En eski sürümün zamanını alma başlıklı makaleyi inceleyin.
Belirtilen koleksiyon gruplarını taşıma
Yalnızca belirli koleksiyon gruplarını taşımak için aşağıdaki komutu kullanın:
gcloud dataflow jobs run "JOB_NAME" \ --project "PROJECT" \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_Firestore_to_Firestore \ --region REGION_NAME \ --parameters "sourceProjectId=SOURCE_PROJECT_ID" \ --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \ --parameters "collectionGroupIds=COLLECTION_GROUP_IDS" \ --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \ --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \ --parameters "readTime=READ_TIME"
Aşağıdakini değiştirin:
JOB_NAME: İş için bir ad.PROJECT: Google Cloud projenizin kimliği.REGION_NAME: Dataflow işini çalıştırmak istediğiniz Google Cloud konumu. Veritabanlarınızın yakınında bir konum kullanın.VERSION: Kullanmak istediğiniz şablonun sürümü. Aşağıdaki değerleri kullanabilirsiniz:- Şablonun en son sürümünü kullanmak için
latest. Bu sürüm, paketteki tarihsiz üst klasörde bulunur: gs://dataflow-templates-REGION_NAME/latest/ - Şablonun belirli bir sürümünü kullanmak için
2023-09-12-00_RC00gibi sürüm adı. Bu sürüm adı, paketteki ilgili tarihli üst klasörde iç içe yerleştirilmiş olarak bulunabilir: gs://dataflow-templates-REGION_NAME/
- Şablonun en son sürümünü kullanmak için
SOURCE_PROJECT_ID: Firestore Standard Edition veritabanını içeren kaynak Google Cloud projesinin kimliği.SOURCE_DATABASE_ID: Kaynak Cloud Firestore veritabanının kimliği.COLLECTION_GROUP_IDS: Taşınacak koleksiyon grubu kimliklerinin virgülle ayrılmış listesi.Alt koleksiyonlar yinelemeli olarak dahil edilmez. Örneğin,
userskoleksiyon grubunu belirtirsenizmessageskoleksiyon grubunu da belirtmediğiniz sürece/users/userid/messageskonumundakimessagesalt koleksiyonu taşınmaz.DESTINATION_PROJECT_ID: Yeni Cloud Firestore veritabanı için hedef Google Cloud projesinin kimliği.DESTINATION_DATABASE_ID: Hedef Cloud Firestore veritabanının kimliği.READ_TIME: Kaynak veritabanından veri okumak için kullanılan zaman damgası.2026-05-15T16:31:00.00Zgibi dakika ayrıntı düzeyinde RFC 3339 biçiminde bir zaman damgası olarak ayarlayın.En erken geçerli zaman damgası, belirli bir noktadan önceyi kurtarma (PITR) ayarlarınıza bağlıdır. En eski sürümün zamanını alma başlıklı makaleyi inceleyin.
3. Veritabanını yapılandırma
firestore-to-firestore işi yalnızca verileri taşır.
Dizinler ve diğer veritabanı ayarları taşınmaz. Verileri taşımanın yanı sıra yeni veritabanında aşağıdakileri yapılandırmayı da düşünebilirsiniz:
Dizinler: Firestore Enterprise sürümü veritabanlarında sorgu çalıştırmak için dizinler kesinlikle gerekli değildir ve varsayılan olarak otomatik dizinler oluşturulmaz. Sorgularınız için dizin oluşturmak üzere aşağıdaki bölümleri inceleyin:
- Firestore Enterprise sürümü dizinine genel bakış.
- Dizinlerle sorgu performansını optimize edin.
- Firebase KSA'yı kullanarak dizinleri dışa aktarabilir ve yeni veritabanına dağıtabilirsiniz.
- Dizinle optimize edebileceğiniz sorguları belirlemek için Sorgu Analizleri'ni kullanın.
Yedekler: Yedeklemeyi ayarlayın.
PITR: PITR'yi etkinleştirin.
Veritabanınızı yapılandırdıktan sonra uygulamanızı yeni veritabanıyla test etmeye devam edebilirsiniz. Taşıma işlemini tamamlamak için uygulamalarınızı yeni veritabanını kullanacak şekilde güncelleyin.
Sorun giderme
Büyük veritabanlarında, iş aynı anda çok fazla veri okursa başarısız olabilir. Bu sorunu çözmek için:
maxNumWorkersdeğerini artırın.
Sırada ne var?
- Pipeline işlemleri ile veri sorgulama hakkında bilgi edinin.
- Firestore Enterprise sürümünde sorguları optimize etme hakkında bilgi edinin.
- Enterprise sürümü veritabanının nasıl ölçeklendiğini anlayın.