Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Cosmos DB'de kapsayıcı kopyalama işlerini kullanarak veri kopyalama gerçekleştirebilirsiniz.
Aşağıdaki senaryolardan herhangi birini gerçekleştirmek istiyorsanız Azure Cosmos DB hesabınızdan veri kopyalamanız gerekebilir:
- Bir kapsayıcıdaki tüm öğeleri başka bir kapsayıcıya kopyalama.
- Aktarım hızının sağlandığı ayrıntı düzeyini veritabanından kapsayıcıya ve tam tersi olarak değiştirin.
- Kapsayıcının bölüm anahtarını değiştirme.
- Kapsayıcının benzersiz anahtarlarını güncelleştirme.
- Kapsayıcıyı veya veritabanını yeniden adlandırın.
- Bir hesabın kapasite modunu sunucusuzdan sağlanmışa ya da tam tersi olacak şekilde değiştirin.
- Hiyerarşik bölüm anahtarları gibi yalnızca yeni kapsayıcılar için desteklenen yeni özellikleri benimseyin.
Kopyalama işleri Azure CLI komutları kullanılarak oluşturulabilir ve yönetilebilir.
Başlangıç Yapmak
Prerequisites
- Kaynak Azure Cosmos DB hesabında sürekli yedeklemeyi etkinleştirin.
- Kaynak hesapta Tüm sürümü etkinleştirin ve değişiklik akışı modu (önizleme) önizleme özelliğini silin.
Çevrimiçi kopyayı etkinleştirme
Kaynak hesabınızda çevrimiçi kopyayı etkinleştirmek için Azure CLI kullanarak aşağıdaki adımları yürütebilirsiniz.
# Set shell variables.
$resourceGroupName = <azure_resource_group>
$accountName = <azure_cosmos_db_account_name>
$EnableOnlineContainerCopy = "EnableOnlineContainerCopy"
# List down existing capabilities of your account.
$cosmosdb = az cosmosdb show \
--resource-group $resourceGroupName \
--name $accountName
$capabilities = (($cosmosdb | ConvertFrom-Json).capabilities)
# Append EnableOnlineContainerCopy capability in the list of capabilities.
$capabilitiesToAdd = @()
foreach ($item in $capabilities) {
$capabilitiesToAdd += $item.name
}
$capabilitiesToAdd += $EnableOnlineContainerCopy
# Update Cosmos DB account
az cosmosdb update --capabilities $capabilitiesToAdd \
-n $accountName -g $resourceGroupName
Important
Kaynak hesaptaki tüm yazma işlemleri, kapsayıcıdaki öğelerde yapılan değişikliklerin hem önceki hem de geçerli sürümlerini korumak için iki kat RU olarak ücretlendirilir. Bu RU ücreti artışı gelecekte değişebilir.
Kapsayıcının verilerini kopyalama
- Kullanmak istediğiniz ayarları (bölüm anahtarı, aktarım hızı ayrıntı düzeyi, istek birimleri, benzersiz anahtar vb.) kullanarak hedef Azure Cosmos DB kapsayıcısını oluşturun.
- Kapsayıcı kopyalama işini oluşturun.
- Kopyalama işinin ilerleme durumunu izleyin.
- Tüm belgeler kopyalandıktan sonra, kaynak kapsayıcıdaki güncelleştirmeleri durdurun ve işi tamamlandı olarak işaretlemek için tamamlama API'sini çağırın.
- Uygulamayı veya istemciyi istenen şekilde kaynak veya hedef kapsayıcıya uygun şekilde işaret ederek işlemleri sürdürebilirsiniz.
Kapsayıcı kopyalama nasıl çalışır?
- Platform, kapsayıcı kopyalama işlerini çalıştırmak için hedef Azure Cosmos DB hesabına sunucu tarafı işlem örnekleri ayırır.
- Herhangi bir anda tek bir iş tüm örneklerde yürütülür.
- Çevrimiçi kopyalama işleri, verileri kopyalamak ve artımlı değişiklikleri kaynak kapsayıcıdan hedef kapsayıcıya çoğaltmak için tüm sürümü kullanır ve değişiklik akışı modunu siler.
- İş tamamlandıktan sonra platform, 15 dakika etkinlik dışı kalma süresinden sonra bu örnekleri serbest bırakıyor.
Mongo DB için aynı Azure Cosmos DB hesabındaki verileri kopyalamak için çevrimdışı koleksiyon kopyalama işleri gerçekleştirebilirsiniz.
Koleksiyon verilerini kopyalama
- Kullanmak istediğiniz ayarları (bölüm anahtarı, aktarım hızı ayrıntı düzeyi, istek birimleri, benzersiz anahtar vb.) kullanarak hedef Azure Cosmos DB koleksiyonunu oluşturun.
- Uygulama örneklerini veya ona bağlanan istemcileri duraklatarak kaynak koleksiyondaki işlemleri durdurun.
- Kopya işlemi oluşturun.
- Kopyalama işinin ilerleme durumunu izleyin ve tamamlanana kadar bekleyin.
- Uygulamayı veya istemciyi istenen şekilde kaynak veya hedef koleksiyona uygun şekilde işaret ederek işlemleri sürdürebilirsiniz.
Note
Çevrimdışı koleksiyon kopyalama işini başlatmadan önce kaynak koleksiyondaki işlemleri gerçekleştirmeyi durdurmanızı kesinlikle öneririz. Kopyalama işini başlattıktan sonra kaynak koleksiyonda yapılan öğe silme işlemleri ve güncelleştirmeleri yakalanmayabilir. Kopyalama işi devam ederken kaynak koleksiyonda işlemler gerçekleştirmeye devam ederseniz, hedef koleksiyonda yinelenen veya eksik verileriniz olabilir.
Koleksiyon kopyalama nasıl çalışır?
- Platform, hedef Azure Cosmos DB hesabı için sunucu tarafı işlem örnekleri ayırır.
- Bu örnekler, hesap içinde bir veya daha fazla koleksiyon kopyalama işleri oluşturulduğunda ayrılır.
- Kopyalama işleri bu örneklerde yürütülür.
- Herhangi bir anda tek bir iş tüm örneklerde yürütülür.
- Örnekler, aynı hesapta çalışan tüm kopyalama işleri tarafından paylaşılır.
- Çevrimdışı kopyalama işleri, verileri kopyalamak ve artımlı değişiklikleri kaynak koleksiyondan hedef koleksiyona çoğaltmak için Değişiklik akışlarını kullanır.
- Platform, 15 dakikadan uzun süre boşta kalan örnekleri serbest bırakabilir.
Aynı Apache Cassandra için Azure Cosmos DB hesabındaki bir tablonun verilerini başka bir tabloya kopyalamak için çevrimdışı tablo kopyalama gerçekleştirebilirsiniz.
Tablonun verilerini kopyalama
- Kullanmak istediğiniz ayarları (bölüm anahtarı, aktarım hızı ayrıntı düzeyi, istek birimleri vb.) kullanarak hedef Azure Cosmos DB tablosunu oluşturun.
- Uygulama örneklerini veya ona bağlanan istemcileri duraklatarak kaynak tablodaki işlemleri durdurun.
- Kopya işlemi oluşturun.
- Kopyalama işinin ilerleme durumunu izleyin ve tamamlanana kadar bekleyin.
- Uygulamayı veya istemciyi istenen şekilde kaynak veya hedef tabloya uygun şekilde işaret ederek işlemleri sürdürebilirsiniz.
Note
Çevrimdışı tablo kopyalama işini başlatmadan önce kaynak tabloda herhangi bir işlem gerçekleştirmeyi durdurmanızı kesinlikle öneririz. Kopyalama işini başlattıktan sonra kaynak tabloda yapılan öğe silme işlemleri ve güncelleştirmeleri yakalanmayabilir. Kopyalama işi devam ederken kaynak tabloda işlemleri gerçekleştirmeye devam ederseniz, hedef tabloda yinelenen veya eksik veriler olabilir.
Tablo kopyalama nasıl çalışır?
- Platform, hedef Azure Cosmos DB hesabı için sunucu tarafı işlem örnekleri ayırır.
- Bu örnekler, hesap içinde bir veya daha fazla kopyalama işi oluşturulduğunda ayrılır.
- Kopyalama işleri bu örneklerde yürütülür.
- Herhangi bir anda tek bir iş tüm örneklerde yürütülür.
- Örnekler, aynı hesapta çalışan tüm kopyalama işleri tarafından paylaşılır.
- Çevrimdışı kopyalama işleri, verileri kopyalamak ve artımlı değişiklikleri kaynak tablodan hedef tabloya çoğaltmak için Değişiklik akışını kullanır.
- Platform, 15 dakikadan uzun süre boşta kalan örnekleri serbest bırakabilir.
Kopyalama işinin oranını etkileyen faktörler
Kapsayıcı kopyalama işinin ilerleme hızı şu faktörlere göre belirlenir:
Kaynak kapsayıcı veya veritabanı aktarım hızı ayarı.
Hedef kapsayıcı veya veritabanı aktarım hızı ayarı.
Tip
Hedef kapsayıcı aktarım hızını kaynak kapsayıcının aktarım hızının en az iki katı olarak ayarlayın.
Veri aktarımını gerçekleştirmek için Azure Cosmos DB hesabına ayrılan sunucu tarafı işlem örnekleri.
Important
Varsayılan SKU, hesap başına iki adet 4 vCPU 16 GB sunucu tarafı örneği sunar.
Sınırlamalar
Uygunluk ölçütlerini önizle
Kapsayıcı kopyalama işleri, aşağıdaki özelliklerin etkinleştirildiği hesaplarla çalışmaz. Kapsayıcı kopyalama işlerini çalıştırmadan önce şu özellikleri devre dışı bırakın:
Hesap yapılandırmaları
Yaşam Süresi (TTL) ayarı hedef kapsayıcıda ayarlanmamıştır. Sonuç olarak, kaynak kapsayıcıda bir belgenin süresi dolmadıysa, hedef kapsayıcıda geri sayımını yeniden başlatır.
Sık sorulan sorular
Kapsayıcı kopyalama işleri için hizmet düzeyi sözleşmesi var mı?
Kapsayıcı kopyalama işleri şu anda en iyi çaba temelinde desteklenmektedir. İşlerin tamamlanması için gereken süre boyunca herhangi bir hizmet düzeyi sözleşmesi (SLA) garantisi sağlamayız.
Bir hesapta birden çok kapsayıcı kopyalama işi oluşturabilir miyim?
Evet, aynı hesap içinde birden çok iş oluşturabilirsiniz. İşler art arda olarak çalışır. Bir hesapta oluşturulan tüm işleri listeleyebilir ve bunların ilerleme durumunu izleyebilirsiniz.
Azure Cosmos DB hesabındaki veritabanının tamamını kopyalayabilir miyim?
Veritabanındaki her kapsayıcı için bir iş oluşturmanız gerekir.
Birden çok bölgeye sahip bir Cosmos DB hesabım var. Konteyner kopyalama işi hangi bölgede çalıştırılacak?
Kapsayıcı kopyalama işi yazma bölgesinde çalışır. Çok bölgeli yazma işlemleriyle yapılandırılmış bir hesapta, iş yazma bölgeleri listesindeki bölgelerden birinde çalışır.
Hesabın yazma bölgesi değiştiğinde kapsayıcı kopyalama işlerine ne olur?
Hesabın yazma bölgesi, nadir bir bölge kesintisi senaryosunda veya manuel yük devretme nedeniyle değişebilir. Bu senaryoda, hesap içinde oluşturulmuş ve tamamlanmamış olan kapsayıcı kopyalama görevleri başarısızlığa uğrar. Bu başarısız işleri yeniden oluşturmanız gerekir. Yeniden oluşturulan işler yeni (geçerli) yazma bölgesinde çalışır.
Desteklenen bölgeler
Kapsayıcı kopyalama şu anda aşağıdaki bölgelerde desteklenmektedir:
| Americas | Avrupa ve Afrika | Asia Pacific |
|---|---|---|
| Brazil South | France Central | Orta Avustralya |
| Canada Central | Güney Fransa | Orta Avustralya 2 |
| Canada East | Germany North | Australia East |
| Central US | Almanya Batı Merkez | Orta Hindistan |
| Orta ABD EUAP | North Europe | Japonya Doğu |
| East US | Norway East | Korea Central |
| Doğu ABD 2 | Batı Norveç | Southeast Asia |
| Doğu ABD 2 EUAP | Switzerland North | BAE Merkez |
| ABD'nin Kuzey Orta Bölgesi | Switzerland West | West India |
| ABD'nin Güney Merkez Bölgesi | UK South | East Asia |
| Orta Batı ABD | UK West | Malezya Güney |
| West US | West Europe | Japonya Batısı |
| Batı ABD 2 | Israel Central | Australia Southeast |
| Desteklenmiyor | Güney Afrika - Kuzey | Desteklenmiyor |
Bilinen ve yaygın sorunlar
Çevrimiçi kapsayıcı kopyalama özelliği kullanılırken, alan kaynak kapsayıcıda değiştirilirse
id, hedef kapsayıcı her biri ayrıiddeğerlere karşılık gelen iki ayrı belge depolar.Hedef kapsayıcıya veri kopyalama sırasında bölüm anahtarlarını değiştirirken, yeni bölüm anahtarının ve
idbirleşimlerinin kapsayıcı genelinde benzersiz olduğundan emin olun.Örneğin, şu senaryoyu inceleyin:
Özgün Bölüm Anahtarı:
/department
Kaynak Belgeler:{ "id": "101", "employeeName": "John Doe", "department": "HR" }, { "id": "101", "employeeName": "John Doe", "department": "Finance" }Yeni Bölüm Anahtarı:
/employeeName
Hedef Konteynerde Ortaya Çıkan Belgeler:{ "id": "101", "employeeName": "John Doe", "department": "HR" }, { "id": "101", "employeeName": "John Doe", "department": "Finance" }Bu durumda, her iki belge de çakışmaya neden olan aynı bölüm anahtarını (
/employeeName) veidbileşimini ("employeeName": "John Doe", "id": "101") paylaşır. Bu çakışma ekleme hatasıyla sonuçlanır. Bu tür sorunları önlemek için yeni bölüm anahtarının veidbirleşimlerinin hedef kapsayıcıdaki tüm belgeler arasında benzersiz olduğundan emin olun.Hata - Bölüm anahtarı en fazla 20 GB boyuta ulaştı
Hedef kapsayıcıya veri kopyalama sırasında bölüm anahtarlarını değiştirirken, yeni bölüm anahtarının 20 GB mantıksal bölüm anahtarı boyut sınırı içinde kaldığından emin olun. Bu sınır aşılırsa, iş aşağıdaki hatayla başarısız olur:
"code": "403", "message": "Response status code does not indicate success: Forbidden (403); Substatus: 1014; ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Reason: (Message: {"Errors":["Partition key reached maximum size of 20 GB. Learn more: https://aka.ms/CosmosDB/sql/errors/full-pk"]"Hiyerarşik bölüm anahtarları özelliğini kullanıyorsanız, bölüm anahtarlarınız için en fazla üç düzeyli bir hiyerarşi yapılandırabilirsiniz. Bu, ilk düzey anahtarınız için 20 GB'lık verileri aşmanıza ve bu sınırdan kaçınmanıza olanak tanır. Örneğin, /employeeName ve /id'nin iki düzeyli hiyerarşisiyle, her çalışan için veriler sınırsız depolama alanına sahip olabilir. Bkz. hiyerarşik bölüm anahtarlarına genel bakış.
Hata - Sahip kaynağı yok
İş oluşturma işlemi başarısız olursa ve "Sahip kaynağı yok" (hata kodu 404) hatasını görüntülerse, hedef kapsayıcı henüz oluşturulmamıştır veya işi oluşturmak için kullanılan kapsayıcı adı gerçek bir kapsayıcı adıyla eşleşmiyor olabilir.
İşi çalıştırmadan önce hedef kapsayıcının oluşturulduğundan emin olun ve işteki kapsayıcı adının gerçek bir kapsayıcı adıyla eşleştiğinden emin olun.
"code": "404", "message": "Response status code does not indicate success: NotFound (404); Substatus: 1003; ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Reason: (Message: {\"Errors\":[\"Owner resource does not exist\"]Hata - İş için kaynak alırken hata oluştu
Bu hata, iç sunucu sorunları nedeniyle oluşabilir. Bu sorunu çözmek için Azure portalında Yeni Destek İsteği açarak Microsoft Desteği başvurun. Sorun Türü için Veri Geçişi'ne tıklayın. Sorun alt türü içinHesap içi kapsayıcı kopyalama'yı seçin.
"code": "500" "message": "Error while getting resources for job, StatusCode: 500, SubStatusCode: 0, OperationId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx