Data Transmission Service (DTS) ile ilgili yaygın sorunlara yönelik çözümleri kategori bazında bulun veya Yaygın hatalar bölümünden belirli hata kodlarını sorgulayın.
Sorun kategorileri
Yaygın sorunlar aşağıdaki kategorilere ayrılır:
-
Ön kontrol ayrıntıları için bkz. Ön kontrol öğeleri ve ön kontrol hatalarını düzeltme yöntemleri.
Faturalama sorunları
DTS nasıl faturalandırılır?
DTS, abonelik ve kullandıkça öde faturalamayı destekler. Faturalamaya genel bakış.
DTS faturalarını nasıl görüntülerim?
DTS faturalarını görüntülemek için bkz. Faturaları görüntüleme.
Duraklatılmış örnekler için ücretlendirilir miyim?
Duraklatılmış veri geçişi örnekleri için ücretlendirilmezsiniz.
Bir veri eşitleme örneğinin askıya alınması sırasında, kaynak veya hedef veritabanına erişilebilir olup olmadığından bağımsız olarak ücretlendirmeye devam edilir. Bunun nedeni, bu süre zarfında DTS'nin yalnızca hedef veritabanına veri yazmayı durdurması ancak CPU ve bellek gibi kaynakları tüketerek veritabanına kalıcı bağlantıları sürdürmesi ve kaynak veritabanından günlükleri çekmesidir; böylece örnek yeniden başlatıldıktan sonra hızla devam edebilir.
Veri eşitleme neden veri geçişinden daha pahalıdır?
Veri eşitleme, çevrimiçi eşitleme nesnelerini değiştirme ve MySQL veritabanları arasında iki yönlü eşitleme gibi daha gelişmiş özellikleri destekler. Ayrıca daha düşük gecikme süresi için dahili ağ iletimini kullanır.
Ödemesi geciken hesapların etkileri nelerdir?
Bir abonelik görevini önceden nasıl serbest bırakırım?
Önce faturalama yöntemini kullandıkça öde olarak değiştirin, ardından görevi serbest bırakın. Faturalama yöntemleri arasında geçiş yapma.
Bir görevin faturalama yöntemini abonelikten kullandıkça ödeye değiştirebilir miyim?
Bir görevin faturalama yöntemini kullandıkça ödeden aboneliğe değiştirebilir miyim?
Evet, bunu veri eşitleme veya değişiklik izleme görevleri için yapabilirsiniz. Faturalama yöntemleri arasında geçiş yapma.
Veri geçişi görevleri yalnızca kullandıkça öde faturalama yöntemini destekler.
DTS görevim aniden ücretlendirmeye neden olmaya başladı?
Örneğin ücretsiz deneme süresi dolmuş olabilir. DTS, hedefi Alibaba Cloud tarafından geliştirilen bir veritabanı motoru olan görevler için ücretsiz deneme sunar. Deneme süresi dolduktan sonra standart faturalama uygulanır.
Serbest bırakılan bir görev için neden hala ücretlendiriliyorum?
Kullandıkça öde DTS faturaları günlük olarak oluşturulur. Görevi serbest bıraktığınız gün için ücretlendirilirsiniz çünkü o gün DTS hizmetini kullanmış olursunuz.
Kullandıkça öde faturalandırma nasıl çalışır?
Kullandıkça öde bir görev için yalnızca görev çalışırken ücretlendirilirsiniz. Bu süre, Incremental Data Synchronization görevi duraklatıldığında dahil edilir ancak Incremental Data Migration görevi duraklatıldığında dahil edilmez. Faturalama yöntemi.
DTS trafik için ücret alır mı?
Kaynak ve hedef veritabanlarının bölgelerinden bağımsız olarak bazı DTS görevleri genel ağ ve veri trafiği için ücrete tabi olur. Hedef veritabanı için Access Method Public IP Address olarak ayarlandığında bir geçiş görevi genel ağ trafiği ücretlerine tabi olur. Full field validation by row sampling modundaki bir tam doğrulama görevi, doğrulanan veri miktarına göre veri trafiği ücretlerine tabi olur. Faturalandırılabilir öğeler.
Performans ve teknik özellikler sorunları
Örnek türleri arasındaki farklar nelerdir?
Bkz. Veri geçişi bağlantısı teknik özellikleri ve Veri eşitleme bağlantısı teknik özellikleri.
Bir örnek türünü yükseltebilir miyim?
Bir örnek türünü düşürebilir miyim?
Şu anda yalnızca veri eşitleme örneklerinin teknik özellikleri düşürülebilir. Bir veri eşitleme örneğinin teknik özelliklerini düşürme.
Bir DTS görevinin örnek türünü düşürebilir miyim?
Uygun DTS görevleri için bağlantı teknik özelliklerini düşürebilirsiniz. Bir örneğin bağlantı teknik özelliklerini düşürme.
Bir DTS görevini orta düzeyden daha düşük bir teknik özelliğe düşürebilir miyim?
Desteklenmez.
Verileri eşitlemek veya geçirmek ne kadar sürer?
Bir DTS görevi için gereken süre kesin olarak tahmin edilemez. Performans; DTS, kaynak ve hedef veritabanı örneklerinin yükü, veri hacmi, artımlı görevlerin varlığı ve ağ koşulları gibi birçok faktöre bağlıdır. Yüksek performans gereksinimleriniz varsa daha yüksek performans sınırına sahip bir örnek türü seçin. Bkz. Veri geçişi bağlantısı teknik özellikleri ve Veri eşitleme bağlantısı teknik özellikleri.
Bir veri geçişi veya veri eşitleme görevinin performans bilgilerini nasıl görüntülerim?
Bkz. Artımlı geçiş bağlantısının durumunu ve performansını görüntüleme veya Eşitleme bağlantısının durumunu ve performansını görüntüleme.
Konsolda belirli bir DTS örneğini neden bulamıyorum?
Olası neden: Belirtilen DTS örneği, süresi dolmuş ve serbest bırakılmış bir abonelik örneğidir.
Seçilen kaynak grubu yanlış. Tüm Kaynaklar'ı seçmeniz önerilir.
Seçilen bölge yanlış. Hedef örneğin bulunduğu bölgeyi seçtiğinizden emin olun.
Örnek için seçilen görev türü yanlış. Mevcut görev listesi sayfasının hedef örneğin görev türüyle eşleştiğini doğrulayın. Örneğin, eşitleme örnekleri yalnızca Data Synchronization Tasks listesinde görüntülenir.
Örnek, süre sonu veya ödeme gecikmesi nedeniyle serbest bırakıldı. Bir DTS örneğinin süresi dolduğunda veya ödemesi geciktiğinde görev durur. Yedi gün içinde ödeme yapılmazsa sistem örneği serbest bırakır ve siler. Süre sonu veya ödeme gecikmeleri.
Ön kontrol sorunları
Redis temizleme ilkesi kontrol öğesi neden uyarı oluşturur?
Hedef veritabanının veri temizleme ilkesi (maxmemory-policy) noeviction dışındaki bir değere ayarlanırsa hedef veriler kaynakla tutarsız hale gelebilir. Redis veri temizleme ilkelerine giriş.
Artımlı veri geçişi sırasında ikili günlüklemeyle ilgili bir ön kontrol öğesi başarısız olursa ne yapmalıyım?
Kaynak veritabanının ikili günlüklerinin doğru çalışıp çalışmadığını kontrol edin. Kaynak veritabanı ikili günlükleme kontrolü.
Veritabanı bağlantısı sorunları
Kaynak veritabanına bağlantı başarısız olursa ne yapmalıyım?
Kaynak veritabanı bilgilerinin ve ayarlarının doğru olup olmadığını kontrol edin. Kaynak veritabanı bağlantı kontrolü.
Hedef veritabanına bağlantı başarısız olursa ne yapmalıyım?
Hedef veritabanı bilgilerinin ve ayarlarının doğru olup olmadığını kontrol edin. Hedef veritabanı bağlantı kontrolü.
Kaynak veya hedef örnek DTS tarafından desteklenmeyen bir bölgedeyse ve veri geçişi ve eşitleme gerçekleştirmek istiyorsam ne yapmalıyım?
Bir veri geçişi görevi için RDS MySQL örneği gibi bir veritabanı örneği için genel bir uç nokta isteyebilir ve Public IP Address bağlantı türünü kullanabilirsiniz. Bu, örnek için DTS tarafından desteklenen bir bölge seçmenizi ve o bölgedeki DTS sunucularının CIDR bloklarını örneğin izin listesine eklemenizi gerektirir. DTS sunucularının CIDR bloklarını IP izin listesine ekleme.
DTS, veritabanı örnekleri için Public IP Address bağlantı türünü desteklemediğinden bu bölgelerde veri eşitlemeyi desteklemez.
DTS'nin bir kaynak veya hedef örnek için alan adı değiştirmesini algılaması ne kadar sürer?
DTS, alan adı bağlama anahtarını 10 dakika içinde algılar ve DTS görevini alan adıyla ilişkili yeni IP adresine otomatik olarak geçirir. Alan adı değişimi sırasında eski ve yeni örnekler arasındaki ikili günlükleme çoğaltma ilişkisinin 10 dakikadan fazla korunmasını sağlayın.
Veri eşitleme sorunları
DTS eşitleme için hangi veritabanı örneklerini destekler?
DTS, RDBMS, NoSQL ve OLAP veritabanları dahil olmak üzere çeşitli veri kaynakları arasında eşitlemeyi destekler. Veri eşitleme çözümlerine genel bakış.
Veri geçişi ile veri senkronizasyonu arasındaki fark nedir?
Aşağıdaki tabloda veri geçişi ve veri senkronizasyonu karşılaştırılmaktadır.
Bir DTS örneği yapılandırırken, veritabanı örneğinin Access Method değeri Alibaba Cloud Instance olarak ayarlanmamışsa bu veritabanı kendi yönetiminizdeki bir veritabanı olarak sınıflandırılır. Kendi yönetiminizdeki veritabanları; üçüncü taraf bulutlardaki veritabanı örneklerini, yerel sunucularda dağıtılan veritabanlarını ve ECS örneklerinde dağıtılan veritabanlarını içerir.
Öğe | Veri geçişi | Veri senkronizasyonu |
Senaryolar | Öncelikli olarak buluta geçiş için kullanılır. Örneğin, yerel veritabanlarının, ECS örneklerindeki kendi yönetiminizdeki veritabanlarının veya üçüncü taraf bulut veritabanlarının Alibaba Cloud veritabanlarına geçirilmesi gibi işlemler bu kapsamdadır. | İki veri kaynağı arasında gerçek zamanlı veri senkronizasyonu sağlamak amacıyla kullanılır. Aktif coğrafi çoğaltma, olağanüstü durum kurtarma, ülke sınırları arası veri senkronizasyonu, sorgu ve rapor yükünün azaltılması, bulut tabanlı iş zekası (BI) ve gerçek zamanlı veri ambarlama gibi senaryolar için uygundur. |
Desteklenen veritabanları | Veri geçişi çözümlerine genel bakış. Not Veri senkronizasyonunun desteklemediği bazı veritabanları için veri geçişini kullanarak veri senkronizasyonu sağlayabilirsiniz. Buna örnek olarak tek düğümlü MongoDB veritabanları ve OceanBase (MySQL modu) veritabanları verilebilir. | |
Desteklenen veritabanı dağıtım konumları (bağlantı türleri) |
|
Not Veri senkronizasyonu dahili ağ iletimi temel alınarak gerçekleştirilir; bu sayede daha düşük ağ gecikme süresi sağlanır. |
Özellik farkları |
|
|
Faturalama yöntemi | Yalnızca kullandıkça öde yöntemini destekler. | Kullandıkça öde ve abonelik yöntemlerini destekler. |
Ücretli bir hizmet midir? | Evet, ancak ücretler yalnızca artımlı geçiş görevleri içeren geçiş örnekleri için tahakkuk eder. | Evet. Senkronizasyon örnekleri varsayılan olarak artımlı senkronizasyon görevleri içerir ve her zaman ücrete tabidir. |
Faturalama kuralı | Ücretlendirme yalnızca artımlı veri geçişi çalışırken yapılır. Artımlı veri geçişi duraklatıldığında ücret alınmaz. Şema geçişi veya tam veri geçişi için ücretlendirilmezsiniz. |
|
Veri senkronizasyonu nasıl çalışır?
Senkronizasyon gecikme süresi nasıl hesaplanır?
Senkronizasyon gecikme süresi, hedef veritabanına senkronize edilen en son verinin zaman damgası ile kaynak veritabanının mevcut zaman damgası arasındaki milisaniye cinsinden farktır.
Normal gecikme süresi 1.000 milisaniye içinde olmalıdır.
Bir veri senkronizasyonu görevinin senkronizasyon nesnelerini değiştirebilir miyim?
Evet. Senkronizasyon nesnesi ekleme ve Senkronizasyon nesnesi kaldırma bölümlerine bakın.
Bir veri senkronizasyonu görevine yeni bir tablo ekleyebilir miyim?
Evet. Senkronizasyon nesnesi ekleme bölümüne bakın.
Çalışan bir senkronizasyon görevinin tablolar ve alanlar gibi senkronizasyon nesnelerini nasıl değiştiririm?
Tam senkronizasyon tamamlandıktan ve artımlı senkronizasyon başladıktan sonra senkronizasyon nesnelerini değiştirebilirsiniz. Senkronizasyon nesnesi ekleme ve Senkronizasyon nesnesi kaldırma bölümlerine bakın.
Bir senkronizasyon görevini duraklatıp bir süre sonra yeniden başlatırsam bu durum veri tutarsızlığına neden olur mu?
Senkronizasyon görevi duraklatıldığında kaynak veritabanında değişiklik yapılırsa kaynak ve hedef veritabanları arasında veri tutarsızlığı oluşabilir. Senkronizasyon görevini yeniden başlattığınızda ve artımlı veriler hedef veritabanına senkronize edildiğinde hedef veritabanındaki veriler kaynak veritabanındaki verilerle tutarlı hale gelir.
Artımlı bir senkronizasyon görevinin kaynak veritabanından veri silersem hedef veritabanındaki senkronize edilmiş veriler de silinir mi?
Artımlı senkronizasyon görevi için senkronize edilecek DML işlemleri delete işlemini içermiyorsa hedef veritabanındaki veriler silinmez. Aksi takdirde hedef veritabanındaki senkronize edilmiş veriler silinir.
Redis örnekleri arasında senkronizasyon sırasında hedef Redis örneğindeki verilerin üzerine yazılır mı?
Evet, aynı anahtara sahip verilerin üzerine yazılır. DTS, ön denetim aşamasında hedefi kontrol eder. Hedef boş değilse bir hata bildirilir.
Bir senkronizasyon görevi bazı alanları veya verileri filtreleyebilir mi?
Evet. Sütunları filtrelemek için eşleme özelliğini kullanabilir ve verileri filtrelemek için SQL WHERE koşullarını belirtebilirsiniz. Bazı sütunları senkronize etme veya geçirme ve SQL koşullarını kullanarak verileri filtreleme bölümlerine bakın.
Bir senkronizasyon görevi geçiş görevine dönüştürülebilir mi?
Hayır. Farklı türdeki görevler birbirine dönüştürülemez.
Yalnızca verileri senkronize edebilir, şemayı senkronize etmeyebilir miyim?
Evet, bunu yapabilirsiniz. Senkronizasyon görevini yapılandırırken Schema Synchronization seçeneğini işaretlemeyin.
Bir veri senkronizasyonu örneğinin kaynağı ve hedefi arasında veri tutarsızlığının olası nedenleri nelerdir?
Olası nedenler şunlardır:
Görevi yapılandırırken hedefteki verileri temizlemediğiniz için hedefte geçmiş veriler bulunur.
Görevi yapılandırırken yalnızca artımlı senkronizasyonu seçtiniz, tam senkronizasyonu seçmediniz.
Görevi yapılandırırken yalnızca tam senkronizasyonu seçtiniz, artımlı senkronizasyonu seçmediniz ve görev tamamlandıktan sonra kaynak verilerde değişiklik oldu.
Veriler, DTS görevi dışındaki kaynaklardan hedefe yazıldı.
Artımlı yazma işlemlerinde gecikme vardır ve tüm artımlı veriler henüz hedefe yazılmamıştır.
Bir veri senkronizasyonu görevi için kaynak veritabanının adını hedef veritabanında değiştirebilir miyim?
Evet. Hedef örnekteki bir senkronizasyon nesnesinin adını ayarlama bölümüne bakın.
DML veya DDL işlemlerinin gerçek zamanlı senkronizasyonu destekleniyor mu?
Evet. İlişkisel veriler için veri senkronizasyonu DML (INSERT, UPDATE ve DELETE) ve DDL (CREATE, DROP, ALTER, RENAME ve TRUNCATE) işlemlerini destekler.
Desteklenen DML veya DDL işlemleri senaryoya göre değişir. Veri senkronizasyonu çözümlerine genel bakış bölümünden iş ihtiyaçlarınıza uygun bir bağlantı seçin ve ilgili bağlantı yapılandırma belgesinde desteklenen DML veya DDL işlemlerini kontrol edin.
Salt okunur bir örnek, bir senkronizasyon görevi için kaynak örnek olarak kullanılabilir mi?
Senkronizasyon görevleri varsayılan olarak artımlı veri senkronizasyonu içerir. Bu durum aşağıdaki iki senaryoyu doğurur:
Örnek, ApsaraDB RDS for MySQL 5.7 veya 8.0 örneği gibi işlem günlüklerini kaydeden salt okunur bir örnekse kaynak örnek olarak kullanılabilir.
Örnek, ApsaraDB RDS for MySQL 5.6 örneği gibi işlem günlüklerini kaydetmeyen salt okunur bir örnekse kaynak örnek olarak kullanılamaz.
DTS, parçalı veritabanları ve tablolar için veri senkronizasyonunu destekliyor mu?
Evet, bunu yapabilirsiniz. Örneğin, MySQL ve PolarDB for MySQL'den AnalyticDB for MySQL öğesine senkronize ederek birden çok parçalı tabloyu birleştirebilirsiniz.
Neden bir senkronizasyon görevi tamamlandıktan sonra hedef örneğin veri hacmi kaynak örneğinkinden daha küçüktür?
Senkronizasyon sırasında veriler filtrelendiyse veya kaynak örnekte çok sayıda tablo parçası varsa senkronizasyon tamamlandıktan sonra hedef örneğin veri hacmi kaynak örneğinkinden daha küçük olabilir.
Hesaplar arası bir veri senkronizasyonu görevi iki yönlü senkronizasyonu destekler mi?
Evet, ancak şu anda yalnızca ApsaraDB RDS for MySQL örnekleri arasında, PolarDB for MySQL kümeleri arasında, Tair (Enterprise Edition) örnekleri arasında, ApsaraDB for MongoDB (ReplicaSet) örnekleri arasında veya ApsaraDB for MongoDB (parçalı küme) örnekleri arasındaki iki yönlü senkronizasyon görevleri hesaplar arası iki yönlü senkronizasyonu destekler.
İki yönlü bir senkronizasyon örneğinin ters senkronizasyonu DDL senkronizasyonunu destekler mi?
Hayır, desteklemez. Yalnızca ileri yönlü senkronizasyon görevi (kaynak veritabanından hedef veritabanına) DDL senkronizasyonunu destekler. Ters senkronizasyon görevi (hedef veritabanından kaynak veritabanına) DDL senkronizasyonunu desteklemez ve DDL işlemlerini otomatik olarak filtreler.
Mevcut ters senkronizasyon görevi için DDL işlemlerini senkronize etmek üzere iş süreçlerinizin izin vermesi durumunda iki yönlü senkronizasyon örneğinin yönünü tersine çevirebilirsiniz.
Ters bir senkronizasyon görevini manuel olarak yapılandırmam gerekir mi?
Evet. İleri yönlü senkronizasyon görevinin başlatmayı tamamlamasını bekleyin (Status durumu Running olana kadar). Ardından ters senkronizasyon görevini bulun ve Configure Task seçeneğine tıklayın.
Ters senkronizasyon görevini, ileri yönlü senkronizasyon görevinde gecikme olmadığında (gecikme süresi 0 milisaniye olduğunda) yapılandırmanızı öneririz.
DTS, ülke sınırları arası iki yönlü senkronizasyon görevlerini destekler mi?
Hayır, desteklemez.
Neden iki yönlü bir senkronizasyon görevinde bir veritabanına kayıt eklendiğinde diğer veritabanına kayıt eklenmez?
Bu sorun, ters bir görev yapılandırılmadığı için meydana gelebilir.
Neden artımlı senkronizasyon görevi hiçbir zaman %100'e ulaşmaz?
Artımlı senkronizasyon görevi, kaynakta yapılan değişiklikleri hedefe gerçek zamanlı olarak sürekli senkronize eder ve kendi kendine sonlanmaz. Bu nedenle %100 tamamlanma durumu yoktur. Gerçek zamanlı senkronizasyona artık ihtiyacınız yoksa görevi DTS konsolundan sonlandırabilirsiniz.
Neden artımlı bir senkronizasyon görevi verileri senkronize edemez?
Bir DTS örneği yalnızca artımlı senkronizasyon için yapılandırıldıysa DTS yalnızca görev başladıktan sonra oluşturulan artımlı verileri senkronize eder. Bu, görev başlamadan önce oluşturulan verilerin hedef veritabanına senkronize edilmediği anlamına gelir. Veri tutarlılığını sağlamak için görevi yapılandırırken Incremental Data Synchronization, Schema Synchronization ve Full Data Synchronization seçeneklerini işaretlemenizi öneririz.
Bir RDS veritabanından tam verilerin senkronize edilmesi kaynak RDS örneğinin performansını etkiler mi?
Evet, kaynak veritabanının sorgu performansını etkiler. DTS görevinin kaynak veritabanı üzerindeki etkisini azaltmak için aşağıdaki üç yöntemden birini kullanabilirsiniz:
Kaynak veritabanı örneğinin teknik özelliklerini yükseltin.
DTS görevini duraklatın ve kaynak veritabanındaki yükün düşük olduğu bir zamanda yeniden başlatın.
DTS görevinin hızını düşürün. Tam geçiş hızını ayarlama bölümüne bakın.
Neden PolarDB-X 1.0 kaynağına sahip bir senkronizasyon örneği gecikme süresi göstermez?
PolarDB-X 1.0 kaynağına sahip örnekler için gecikme bilgisi görüntülenmez. Bunun nedeni, örneğin dağıtık bir görev olarak çalışması ve DTS tarafından izlenen ölçümlerin yalnızca alt görevlerde bulunmasıdır. Gecikme bilgilerini görüntülemek için örnek kimliğine tıklayın ve Task Management sayfasındaki Subtask Details bölümüne gidin.
Neden çoklu tablo birleştirme görevi DTS-071001 hatası bildirir?
Bu hata, çoklu tablo birleştirme görevi çalışırken kaynak veritabanında çevrimiçi DDL işlemleri gerçekleştirdiğiniz için oluşmuş olabilir. Bu işlemler kaynak veritabanının tablo şemasını değiştirmiştir ancak hedef veritabanında karşılık gelen değişiklikleri yapmamışsınızdır.
Eski konsolda bir görev yapılandırırken izin listesi ekleme işlemi başarısız olursa ne yapmalıyım?
Görevi yapılandırmak için yeni konsolu kullanabilirsiniz.
Kaynak veritabanında işlem sırasında bir DDL işlemi gerçekleştirildiği için veri senkronizasyon görevi başarısız olursa ne yapmalıyım?
Kaynak veritabanında gerçekleştirilen DDL işlemine bağlı olarak, DDL işlemini hedef veritabanında manuel olarak yürütün ve görevi yeniden başlatın. Veri senkronizasyonu sırasında, kaynak veritabanındaki senkronizasyon nesneleri üzerinde pt-online-schema-change gibi araçlar kullanarak çevrimiçi DDL işlemleri gerçekleştirmeyin. Aksi takdirde senkronizasyon başarısız olur. Hedef veritabanına DTS verileri dışında başka veri yazılmıyorsa, çevrimiçi DDL işlemleri gerçekleştirmek için Data Management (DMS) hizmetini kullanabilir veya etkilenen tabloları kaldırmak üzere senkronizasyon nesnelerini değiştirebilirsiniz. Senkronizasyon nesnesini kaldırma.
Hedef veritabanında işlem sırasında bir DDL işlemi gerçekleştirildiği için veri senkronizasyon görevi başarısız olursa ne yapmalıyım?
Artımlı senkronizasyon sırasında hedef veritabanındaki bir veritabanı veya tablo silinirse ve bu durum görevin anormal duruma gelmesine neden olursa, görevi geri yüklemek için aşağıdaki iki çözümden birini kullanabilirsiniz:
Yöntem 1: Görevi yeniden yapılandırın ve hataya neden olan veritabanını veya tabloyu senkronizasyon nesnesi olarak seçmeyin.
Yöntem 2: Hataya neden olan veritabanını veya tabloyu kaldırmak için senkronizasyon nesnelerini değiştirin. Senkronizasyon nesnesini kaldırma.
Bir senkronizasyon görevi serbest bırakıldıktan sonra geri yüklenebilir mi? Görevi yeniden yapılandırmak veri tutarlılığını sağlar mı?
Bir senkronizasyon görevi serbest bırakıldıktan sonra geri yüklenemez. Orijinal görevin serbest bırakılması ile yeni görevin başlaması arasında eklenen veriler hedef veritabanına senkronize edilmeyeceğinden ve veri tutarlılığı garanti edilemeyeceğinden, Full Data Synchronization seçeneğini seçmeden görevi yeniden yapılandırırsanız sorun yaşarsınız. Veri doğruluğu işiniz için kritik öneme sahipse, hedef veritabanındaki verileri silebilir, senkronizasyon görevini yeniden yapılandırabilir ve Task Stages bölümünde hem Schema Synchronization hem de Full Data Synchronization seçeneklerini seçebilirsiniz. Incremental Data Synchronization varsayılan olarak seçilidir.
Bir DTS tam senkronizasyon görevi uzun süre ilerleme göstermezse ne yapmalıyım?
Senkronize edilecek tabloda birincil anahtar yoksa tam senkronizasyon çok yavaş gerçekleşir. Senkronizasyonu başlatmadan önce kaynak veritabanındaki senkronize edilecek tabloya birincil anahtar eklemenizi öneririz.
Aynı ada sahip tablolar arasında veri senkronize ederken, kaynak tablodaki verilerin yalnızca hedef tabloda mevcut olmaması durumunda aktarılacak şekilde yapılandırma yapabilir miyim?
Evet. Görevi yapılandırırken Processing Mode of Conflicting Tables ayarını Ignore Errors and Proceed olarak belirleyebilirsiniz. Tablo şemaları tutarlıysa ve kaynak veritabanından gelen bir kaydın birincil anahtar değeri hedef veritabanında zaten varsa, bu kayıt tam senkronizasyon sırasında senkronize edilmez.
Hesaplar arası bir senkronizasyon görevini nasıl yapılandırırım?
Öncelikle hesaplar arası görev senaryolarını anlamanız gerekir. Ardından, veritabanı örneğinin ait olduğu Alibaba Cloud hesabını kullanarak Alibaba Cloud hesapları arası bir görev için RAM yetkilendirmesini yapılandırın. Son olarak, Alibaba Cloud hesapları arası görevi yapılandırın.
Bir DMS LogicDB örneği seçemiyorsam ne yapmalıyım?
Örneğin bölgesinin doğru olduğundan emin olun. Hâlâ örneği seçemiyorsanız, yalnızca bir örnek bulunuyor olabilir. Diğer parametreleri yapılandırmaya devam edebilirsiniz.
Kaynağı SQL Server olan bir senkronizasyon görevi işlevlerin senkronize edilmesini destekler mi?
Hayır, desteklemez. Senkronizasyon nesnesi granülaritesi tablo olarak ayarlandığında, görünümler, tetikleyiciler ve saklı yordamlar gibi diğer nesneler hedef veritabanına senkronize edilmez.
Bir veri senkronizasyon görevi hata bildirirse ne yapmalıyım?
Hata mesajına göre Yaygın hatalar bölümünde bir çözüm bulabilirsiniz.
Bir senkronizasyon görevi için hot spot merge özelliğini nasıl etkinleştiririm?
trans.hot.merge.enable değerini true olarak değiştirmek için bkz. Parametre değerlerini değiştirme.
Kaynak veritabanında tetikleyiciler varsa senkronizasyonu nasıl gerçekleştiririm?
Senkronizasyon nesnesi tüm veritabanı olduğunda ve bir tetikleyici veritabanındaki bir tabloyu güncellediğinde veri tutarsızlığı oluşabilir. Kaynak veritabanında tetikleyiciler olduğunda bir senkronizasyon veya geçiş işini yapılandırma.
DTS sys veritabanını ve sistem veritabanlarını senkronize etmeyi destekler mi?
Hayır, desteklemez.
DTS, MongoDB'nin admin ve local veritabanlarını senkronize etmeyi destekler mi?
Hayır, desteklemez. DTS, MongoDB'nin admin ve local veritabanlarının kaynak veya hedef olarak kullanılmasını desteklemez.
Çift yönlü bir senkronizasyon görevinin ters görevi ne zaman yapılandırılabilir?
Çift yönlü bir senkronizasyon görevinin ters görevi, yalnızca ileri yönlü artımlı görevde gecikme süresi olmadığında yapılandırılabilir.
PolarDB-X 1.0 kaynak olduğunda, bir senkronizasyon görevinin kaynak PolarDB-X 1.0'ı düğüm ölçeklendirmeyi destekler mi?
Hayır, desteklemez. Kaynak PolarDB-X 1.0 düğüm ölçeklendirme geçirirse görevi yeniden yapılandırmanız gerekir.
DTS tarafından Kafka'ya senkronize edilen verilerin benzersiz olması garanti edilebilir mi?
Hayır, edilemez. Kafka'ya yazılan veriler eklendiği için DTS görevi yeniden başlatıldığında veya kaynaktan günlükleri tekrar çektiğinde yinelenen veriler olabilir. DTS, veri idempotensliğini sağlar; yani veriler sıralı olarak düzenlenir ve yinelenen verilerin en son değeri sona yerleştirilir.
DTS, RDS for MySQL'den AnalyticDB for MySQL hizmetine veri senkronizasyonunu destekler mi?
Evet. RDS for MySQL'den AnalyticDB for MySQL 3.0'a veri senkronize etme.
Redis örnekleri arasındaki bir senkronizasyon görevi neden tam senkronizasyon göstermez?
Redis örnekleri arasındaki senkronizasyon hem tam hem de artımlı veri senkronizasyonunu içerir. Bu iki yöntem toplu olarak Incremental Data Synchronization olarak görüntülenir.
Tam senkronizasyon atlanabilir mi?
Evet, atlanabilir. Tam senkronizasyonu atlattıktan sonra artımlı senkronizasyon devam eder ancak hatalar oluşabilir. Tam senkronizasyonu atlamamanızı öneririz.
Otomatik senkronizasyonu zamanlayabilir miyim?
Hayır, DTS şu anda veri senkronizasyon görevlerinin başlatılmasını zamanlamayı desteklememektedir.
İşlem sırasında tablo parçalanması senkronize edilir mi?
Hayır, edilmez.
MySQL 8.0'dan MySQL 5.6'ya senkronize ederken nelere dikkat etmeliyim?
Senkronizasyon işlemini gerçekleştirmeden önce MySQL 5.6'da bir veritabanı oluşturmanız gerekir. Uyumluluğu sağlamak için kaynak ve hedef veritabanı sürümlerinin tutarlı olmasını veya daha düşük bir sürümden daha yüksek bir sürüme senkronizasyon yapmanızı öneririz. Daha yüksek bir sürümden daha düşük bir sürüme senkronizasyon yaparsanız veritabanı uyumluluk sorunları oluşabilir.
Kaynak veritabanındaki hesaplar hedef veritabanına senkronize edilebilir mi?
Şu anda yalnızca ApsaraDB RDS for MySQL örnekleri arasındaki senkronizasyon görevleri hesapların senkronize edilmesini destekler. Diğer senkronizasyon görevleri bunu desteklemez.
Hesaplar arası çift yönlü bir senkronizasyon görevi yapılandırabilir miyim?
Evet, ancak şu anda yalnızca ApsaraDB RDS for MySQL örnekleri arasında, PolarDB for MySQL kümeleri arasında, Tair (Enterprise Edition) örnekleri arasında, ApsaraDB for MongoDB (ReplicaSet) örnekleri arasında veya ApsaraDB for MongoDB (sharded cluster) örnekleri arasında yapılan çift yönlü senkronizasyon görevleri hesaplar arası çift yönlü senkronizasyonu destekler.
Replicate Data Across Alibaba Cloud Accounts yapılandırma öğesini içermeyen görevler için, hesaplar arası çift yönlü senkronizasyonu yapılandırmak amacıyla CEN kullanın. Alibaba Cloud hesapları veya bölgeleri arasında veritabanı kaynaklarına erişim.
Message Queue for Apache Kafka hedef olduğunda parametreleri nasıl yapılandırırım?
Parametreleri ihtiyaca göre yapılandırın. Message Queue for Apache Kafka örneği için parametreleri yapılandırma.
DTS kullanarak Redis verilerini senkronize ederken veya taşırken ERR invalid DB index hatasını nasıl çözerim?
Neden: Hedef veritabanı SELECT DB işlemini yürüttüğünde ERR invalid DB index hatası oluşur. Bu durum genellikle hedef veritabanındaki databases sayısının yetersiz olmasından kaynaklanır. Hedef veritabanı bir proxy kullanıyorsa, proxy'nin databases sayısı üzerindeki kısıtlamayı kaldırıp kaldıramayacağını kontrol edin.
Çözüm: Hedef veritabanının databases yapılandırmasını değiştirin. Sayıyı kaynak veritabanıyla eşleşecek şekilde artırın ve ardından DTS görevini yeniden başlatın. Hedef veritabanının databases yapılandırmasını sorgulamak için aşağıdaki komutu çalıştırabilirsiniz:
CONFIG GET databases;
SQL Server verilerini AnalyticDB for PostgreSQL'e senkronize ederken veya taşırken IDENTIFIER CLUSTERED hatasını nasıl çözerim?
Neden: SQL Server verilerini AnalyticDB for PostgreSQL'e senkronize ederken veya taşırken, CREATE CLUSTERED INDEX komutu desteklenmediği için görev başarısız olur.
Çözüm: Gecikme süresi sırasında başka DDL komutu olmadığını onayladıktan sonra, tüm DDL yürütmelerini filtrelemek için örnek parametresini sink.ignore.failed.ddl olarak true değerine ayarlayın. Artımlı senkronizasyon veya geçiş ofseti ilerledikten sonra sink.ignore.failed.ddl değerini tekrar false olarak değiştirin.
Bir Redis senkronizasyon veya geçiş görevinde, hedef veritabanındaki bir anahtarın son kullanma süresini uzatmanın pratik bir etkisi var mı?
Tam veri senkronizasyonu sırasında anahtarların süresinin dolmasını önlemek için hedef veritabanındaki anahtar son kullanma süresini uzatabilirsiniz. Artımlı senkronizasyon veya geçiş içeren DTS görevlerinde, kaynak veritabanındaki bir anahtarın süresi dolduğunda ve silindiğinde, hedef veritabanındaki karşılık gelen anahtar da serbest bırakılır.
Hedef veritabanındaki bir anahtar için uzatılmış bir son kullanma süresi ayarladıktan sonra, kaynak veritabanındaki anahtarın süresi dolduğunda hedef veritabanındaki anahtar hemen serbest bırakılır mı?
Hedef veritabanındaki bir anahtar, süresi dolduğunda mutlaka hemen serbest bırakılmaz. Yalnızca kaynak veritabanındaki karşılık gelen anahtarın süresi dolduğunda ve temizlendiğinde hemen serbest bırakılır.
Örneğin, kaynak veritabanındaki bir anahtarın süresinin 5 saniye içinde dolması için ayarlandığını, ancak hedef veritabanındaki anahtarın son kullanma süresinin 30 saniye olduğunu varsayalım. Kaynak anahtarın süresi dolduğunda hedef veritabanındaki anahtar silinir. Kaynak veritabanındaki anahtarın süresi dolduğunda sistem Append-Only File (AOF) dosyasına bir silme işlemi ekler. Bu istek daha sonra hedef veritabanına senkronize edilir ve yürütülür.
DTS kullanarak verileri SelectDB'ye senkronize ederken column_name[xxx], the length of input string is too long than vec schema hatasını nasıl çözerim?
Ayrıntılı hata mesajı:
Reason: The input string for column_name[xxx] is longer than the length specified in the vector schema. First 32 bytes of the input string: [01a954b4-xxx-xxx-xxx-95b675b9]. Schema length: 2147483643. Limit length: 1048576. Actual length: 7241898. Source line: [].Neden: Kaynaktaki xxx alanındaki artımlı verilerin boyutu, hedefteki karşılık gelen alanın uzunluk sınırını aşıyor.
Çözüm: Alan bir
STRINGtüründeyse SelectDB konsolundaki string_type_length_soft_limit_bytes parametresini artırabilirsiniz. Değer,actual length(7241898) değerinden büyük olmalıdır.
DTS kullanarak verileri SelectDB'ye senkronize ederken column(xxx) values is null while columns is not nullable. hatasını nasıl çözerim?
Ayrıntılı hata mesajı:
Reason: column(xxx) values is null while columns is not nullable. src line [ xxx ];-
Neden: Hedefteki xxx alanı
NOT NULLolarak ayarlanmış ancakNULLdeğerleri yazılıyor.NotYaygın senaryo: Kaynak tarih biçimi
0000-0000-0000gibi geçersiz veriler içerdiğinde DTS bunu otomatik olarak birNULLdeğerine dönüştürür ve hatayı tetikler. -
Çözüm:
Hedefteki alan türünü NULL değerlere izin verecek şekilde değiştirin.
Senkronizasyon nesnesini değiştirin: Sorunlu tabloyu kaldırın, kaynak verileri düzeltin ve ardından hedefteki tabloyu silin. Ardından, tabloyu tekrar eklemek için senkronizasyon nesnesini yeniden değiştirin ve son olarak tam ve artımlı senkronizasyonu yeniden çalıştırın.
Yanlış yapılandırılmış hedef tablo adı eşlemesini nasıl düzeltirim?
DTS görev yapılandırma sayfasında, Selected Objects bölümündeki hedef veritabanını genişletin, yanlış eşlemeye sahip tabloyu bulun ve sağ taraftaki Edit düğmesine tıklayın. Görüntülenen iletişim kutusunda hedef tablo adını doğru adla değiştirin ve değişikliği kaydedin.
Yeni bir sütun ekledikten sonra geçmiş verileri nasıl doldururum?
DTS, yeni eklenen sütunlar için geçmiş verileri otomatik olarak doldurmaz. Bu kural yalnızca SelectDB değil, tüm hedef veritabanı türleri için geçerlidir. Geçmiş verileri doldurmak için aşağıdaki adımları uygulayın:
Yeni alanı hedef tabloya manuel olarak ekleyin.
DTS konsolunda, tabloyu senkronizasyon listesinden kaldırmak için senkronizasyon nesnelerini değiştirin.
Veri tutarlılığını sağlamak için hedef tablodaki verileri temizlemek üzere
TRUNCATEkomutunu çalıştırın.Tabloyu senkronizasyon nesnelerine yeniden ekleyin. Bu işlem, geçmiş verileri hedefe taşımak için hem tam hem de artımlı veri senkronizasyonunu tetikler.
Veri geçiş sorunları
Bir veri geçiş görevi yürütüldükten sonra kaynak veritabanındaki veriler hala mevcut olacak mı?
DTS, kaynağı etkilemeden verileri kaynak veritabanından hedef veritabanına kopyalayarak veri geçişi ve senkronizasyonu gerçekleştirir.
DTS geçiş için hangi veritabanı örneklerini destekler?
DTS, RDBMS, NoSQL ve OLAP veritabanları dahil olmak üzere çeşitli veri kaynakları arasında geçişi destekler. Veri geçiş çözümlerine genel bakış
Veri geçişi nasıl çalışır?
Bir veri geçiş görevinin geçiş nesnelerini değiştirebilir miyim?
Hayır, değiştiremezsiniz.
Bir veri geçiş görevine yeni bir tablo ekleyebilir miyim?
Hayır, ekleyemezsiniz.
Çalışan bir geçiş görevinin tablolar ve alanlar gibi geçiş nesnelerini nasıl değiştiririm?
Geçiş görevleri geçiş nesnelerinin değiştirilmesini desteklemez.
Bir geçiş görevini duraklatıp bir süre sonra yeniden başlatırsam bu durum veri tutarsızlığına neden olur mu?
Geçiş görevi duraklatıldığında kaynak veritabanında değişiklikler olursa kaynak ve hedef veritabanları arasında veri tutarsızlığı oluşabilir. Geçiş görevini yeniden başlattığınızda ve artımlı veriler hedef veritabanına taşındığında, hedef veritabanındaki veriler kaynak veritabanındaki verilerle tutarlı hale gelir.
Bir geçiş görevi senkronizasyon görevine dönüştürülebilir mi?
Hayır. Farklı türdeki görevler birbirine dönüştürülemez.
Şemayı geçirmeden yalnızca verileri geçirebilir miyim?
Evet, geçirebilirsiniz. Geçiş görevini yapılandırırken Schema Migration seçeneğini seçmeyin.
Veri geçiş örneğinin kaynak ve hedef uçları arasındaki veri tutarsızlığının olası nedenleri nelerdir?
Olası nedenler:
Görevi yapılandırırken hedefteki verileri temizlemediğiniz için hedefte geçmiş veriler bulunmaktadır.
Görevi yapılandırırken yalnızca artımlı geçişi seçtiniz, tam geçişi seçmediniz.
Görevi yapılandırırken yalnızca tam geçişi seçtiniz, artımlı geçişi seçmediniz ve görev tamamlandıktan sonra kaynak verilerde değişiklik oldu.
DTS görevi dışındaki kaynaklardan hedefe veri yazıldı.
Artımlı yazma işlemlerinde gecikme vardır ve tüm artımlı veriler henüz hedefe yazılmamıştır.
Bir veri geçiş görevi için hedef veritabanındaki kaynak veritabanının adını değiştirebilir miyim?
Aynı örnek içinde veri geçişi destekleniyor mu?
Evet. Farklı veritabanı adları arasında veri senkronizasyonu veya geçişi.
DML veya DDL işlemlerinin gerçek zamanlı geçişi destekleniyor mu?
Evet, desteklenmektedir. İlişkisel veritabanları arasındaki veriler için desteklenen DML işlemleri INSERT, UPDATE ve DELETE'dir. Desteklenen DDL işlemleri CREATE, DROP, ALTER, RENAME ve TRUNCATE'tir.
Desteklenen DML veya DDL işlemleri senaryoya göre değişir. Veri geçiş çözümlerine genel bakış bölümünde iş ihtiyaçlarınıza uygun bir bağlantı seçin ve ilgili bağlantıdaki yapılandırma belgesinde desteklenen DML veya DDL işlemlerini kontrol edin.
Salt okunur bir örnek, bir geçiş görevi için kaynak örnek olarak kullanılabilir mi?
Bir geçiş görevi artımlı veri geçişi gerektirmiyorsa, salt okunur bir örneği kaynak örnek olarak kullanabilirsiniz. Geçiş görevi artımlı veri geçişi gerektiriyorsa iki senaryo vardır:
Örnek, ApsaraDB RDS for MySQL 5.7 veya 8.0 örneği gibi işlem günlüklerini kaydeden bir salt okunur örneksa kaynak örnek olarak kullanılabilir.
Örnek, ApsaraDB RDS for MySQL 5.6 örneği gibi işlem günlüklerini kaydetmeyen bir salt okunur örneksa kaynak örnek olarak kullanılamaz.
DTS, bölümlenmiş veritabanları ve tablolar için veri geçişini destekliyor mu?
Evet, desteklemektedir. Örneğin, MySQL ve PolarDB for MySQL'deki bölümlenmiş veritabanlarını ve tabloları birden çok tabloyu birleştirmek amacıyla AnalyticDB for MySQL ürününe geçirebilirsiniz.
Bir geçiş görevi bazı alanları veya verileri filtreleyebilir mi?
Evet. Sütunları filtrelemek için eşleme özelliğini kullanabilir ve verileri filtrelemek için SQL WHERE koşullarını belirtebilirsiniz. Bazı sütunları senkronize etme veya geçirme ve Geçirilecek verileri filtreleme konularına bakın.
Neden bir geçiş görevi tamamlandıktan sonra hedef örneğin veri hacmi kaynak örneğinkinden daha küçüktür?
Geçiş sırasında veriler filtrelendiyse veya kaynak örnekte çok sayıda tablo parçası varsa geçiş tamamlandıktan sonra hedef örneğin veri hacmi kaynak örneğinkinden daha küçük olabilir.
Neden bir geçiş görevinde "Tamamlandı" değeri toplamdan büyüktür?
Görüntülen toplam tahmini bir değerdir. Geçiş görevi tamamlandıktan sonra toplam doğru değere ayarlanacaktır.
Veri geçişi sırasında hedef veritabanına eklenen increment_trx tablosunun amacı nedir?
increment_trx tablosu, DTS artımlı geçişinin hedef örnekte oluşturduğu bir ofset tablosudur. Başlıca amacı artımlı geçişin ofsetini kaydetmek ve anormal bir görev yeniden başlatmasından sonra kaldığı yerden devam etme sorununu çözmektir. Geçiş süreci boyunca bu tabloyu silmeyin. Aksi takdirde geçiş başarısız olur.
Bir veri geçiş görevi, tam geçiş aşamasında kaldığı yerden devam etmeyi destekler mi?
Evet, destekler. Tam geçiş aşamasında bir görevi duraklatıp ardından yeniden başlatırsanız görev baştan başlamadan kaldığı yerden devam eder.
Alibaba Cloud dışı bir örneği Alibaba Cloud'a nasıl geçirebilirim?
Üçüncü taraf buluttan Alibaba Cloud'a veri geçişi konusuna bakın.
Yerel bir Oracle veritabanını PolarDB'ye nasıl geçirebilirim?
Kendi kendine yönetilen Oracle veritabanından PolarDB for PostgreSQL (Oracle ile uyumlu) veritabanına veri geçişi konusuna bakın.
Tam geçiş aşamasını tamamlamamış bir veri geçiş görevi duraklatılabilir mi?
Evet, duraklatılabilir.
RDS for MySQL'den kendi kendine yönetilen bir MySQL veritabanına bazı verileri nasıl geçirebilirim?
Geçiş görevini yapılandırırken Source Objects bölümünde geçirilecek nesneleri seçebilir veya ihtiyaca göre Selected Objects bölümünde bunları filtreleyebilirsiniz. MySQL veritabanları arasındaki geçiş işlemleri benzerdir. Kendi kendine yönetilen MySQL veritabanından ApsaraDB RDS for MySQL örneğine veri geçişi konusuna bakın.
Aynı Alibaba Cloud hesabı altındaki RDS örneklerini nasıl geçirebilirim?
DTS, RDS örnekleri arasında geçiş ve senkronizasyonu destekler. Veri geçiş çözümlerine genel bakış bölümündeki ilgili yapılandırma belgelerine bakın.
Bir geçiş görevi başladıktan sonra kaynak veritabanında bir IOPS uyarısı tetiklenirse ne yapmalıyım ve kaynak veritabanı iş yükünün kararlılığını nasıl sağlayabilirim?
Bir DTS görevi çalışırken kaynak veritabanı örneğindeki yük yüksekse DTS görevinin kaynak veritabanı üzerindeki etkisini azaltmak için aşağıdaki üç yöntemden birini kullanabilirsiniz:
Kaynak veritabanı örneğinin teknik özelliklerini yükseltin.
DTS görevini duraklatın ve kaynak veritabanındaki yük düşük olduğunda yeniden başlatın.
DTS görevinin hızını düşürün. Tam geçiş hızını ayarlama konusuna bakın.
Neden bir veri geçiş görevi "test" adlı bir veritabanını seçemiyor?
DTS veri geçişi sistem veritabanlarının geçirilmesini desteklemez. Geçiş için iş tarafından oluşturulan bir veritabanı seçmeniz gerekir.
Neden PolarDB-X 1.0 kaynağı olan bir geçiş örneği gecikme süresi göstermiyor?
PolarDB-X 1.0 kaynağı olan örnekler için gecikme bilgisi görüntülenmez. Bunun nedeni, örneğin dağıtık bir görev olarak çalışması ve DTS tarafından izlenen ölçümlerin yalnızca alt görevlerde bulunmasıdır. Gecikme bilgilerini görüntülemek için örnek ID'sine tıklayın ve Task Management sayfasındaki Subtask Details bölümüne gidin.
Neden DTS bir MongoDB veritabanını geçiremiyor?
Bunun nedeni, geçirilecek veritabanının "local" veya "admin" olması olabilir. DTS, MongoDB'nin admin ve local veritabanlarının kaynak veya hedef olarak kullanılmasını desteklemez.
Neden çoklu tablo birleştirme görevi DTS-071001 hatası bildiriyor?
Bu hata, çoklu tablo birleştirme görevi çalışırken kaynak veritabanında çevrimiçi DDL işlemleri gerçekleştirdiğiniz için oluşmuş olabilir. Bu işlemler kaynak veritabanının tablo şemasını değiştirmiş ancak hedef veritabanında karşılık gelen değişiklikleri yapmamışsınız.
Eski konsolda bir görevi yapılandırırken izin listesi ekleme işlemi başarısız olursa ne yapmalıyım?
Görevi yapılandırmak için yeni konsolu kullanabilirsiniz.
Süreç sırasında kaynak veritabanında bir DDL işlemi gerçekleştirildiği için bir veri geçiş görevi başarısız olursa ne yapmalıyım?
Kaynak veritabanında yürütülen DDL içeriğine dayanarak DDL işlemini hedefte manuel olarak yürütün ve görevi yeniden başlatın. Veri geçişi sırasında, kaynak veritabanının geçiş nesneleri üzerinde pt-online-schema-change gibi araçlar kullanarak çevrimiçi DDL işlemleri gerçekleştirmeyin. Aksi takdirde geçiş başarısız olur. Hedef veritabanına DTS verileri dışında başka veri yazılmıyorsa çevrimiçi DDL işlemleri gerçekleştirmek için Data Management (DMS) ürününü kullanabilirsiniz.
Süreç sırasında hedef veritabanında bir DDL işlemi gerçekleştirildiği için bir veri geçiş görevi başarısız olursa ne yapmalıyım?
Artımlı geçiş sırasında hedef veritabanındaki bir veritabanı veya tablo silinirse ve bu durum görevin anormal duruma gelmesine neden olursa görevi yeniden yapılandırabilir ve arızaya neden olan veritabanını veya tabloyu geçiş nesnesi olarak seçmeyebilirsiniz.
Bir geçiş görevi serbest bırakıldıktan sonra geri yüklenebilir mi? Görevi yeniden yapılandırmak veri tutarlılığını sağlar mı?
Bir geçiş görevi serbest bırakıldıktan sonra geri yüklenemez. Full Data Migration seçeneğini seçmeden görevi yeniden yapılandırırsanız görev serbest bırakıldıktan sonra eklenen veriler hedef veritabanına geçirilmez ve veri tutarlılığı garanti edilemez. Yüksek veri doğruluğu gerekiyorsa hedef veritabanındaki verileri silin, geçiş görevini yeniden yapılandırın ve Task Stages bölümünde Schema Migration, Incremental Data Migration ve Full Data Migration seçeneklerini belirleyin.
Bir DTS tam geçiş görevi uzun süre ilerleme göstermezse ne yapmalıyım?
Geçirilecek tabloda birincil anahtar yoksa tam geçiş çok yavaş olur. Geçişe başlamadan önce kaynak veritabanındaki geçirilecek tabloya birincil anahtar eklemenizi öneririz.
Aynı ada sahip tablolar arasında veri geçirirken, kaynak tablodaki verilerin yalnızca hedef tabloda mevcut değilse aktarılacak şekilde yapılandırabilir miyim?
Evet, bunu yapabilirsiniz. Görevi yapılandırırken Processing Mode of Conflicting Tables seçeneğini Ignore Errors and Proceed olarak ayarlayabilirsiniz. Tablo şemaları tutarlıysa tam geçiş sırasında hedef veritabanında zaten mevcut olan birincil anahtarlara sahip kaynak kayıtlar geçirilmez.
Hesaplar arası bir geçiş görevini nasıl yapılandırabilirim?
Öncelikle hesaplar arası görevler için senaryoları anlamanız gerekir. Ardından, veritabanı örneğinin ait olduğu Alibaba Cloud hesabını kullanarak Alibaba Cloud hesapları arası bir görev için RAM yetkilendirmesini yapılandırın. Son olarak, Alibaba Cloud hesapları arası görevi yapılandırın.
Bir veri geçiş görevi yerel bir veritabanına nasıl bağlanır?
Geçiş görevini yapılandırmak için yerel veritabanının Access Method seçeneğini Public IP Address olarak ayarlayın. Kendi kendine yönetilen MySQL veritabanından ApsaraDB RDS for MySQL örneğine veri geçişi konusuna bakın.
Bir veri geçişi DTS-31008 hatasıyla başarısız olursa ne yapmalıyım?
Hata mesajına dayanarak View Cause seçeneğine tıklayabilir veya Yaygın hatalar konusuna bakabilirsiniz.
Kiralı hat üzerinden kendi kendine yönetilen bir veritabanına bağlanırken ağ bağlantısı kesilirse ne yapmalıyım?
Kiralı hat için DTS ile ilgili IP adresi izin listesinin doğru şekilde yapılandırılıp yapılandırılmadığını kontrol edin. İzin listesine eklenecek IP adreslerinin listesi için DTS sunucularının IP adresi aralıklarını kendi kendine yönetilen bir veritabanının IP adresi izin listesine ekleme konularına bakın.
SQL Server kaynağı olan bir geçiş görevi fonksiyonların geçirilmesini destekler mi?
Hayır, desteklemez. Geçiş nesnesi granülerliği tablo olarak ayarlanırsa görünümler, tetikleyiciler ve saklı yordamlar gibi diğer nesneler hedef veritabanına geçirilmez.
Bir DTS tam geçişi yavaşsa ne yapmalıyım?
Veri geçişinin tamamlanması biraz zaman alabilir. Task Management sayfasındaki görev ayrıntılarının Full Data Migration modülünde geçiş ilerlemesini görüntüleyebilirsiniz.
Şema geçişi bir hata bildirirse ne yapmalıyım?
Hatanın çözümü için örnek ID'sine tıklayarak görev ayrıntıları sayfasına gidin. Task Management sayfasındaki şema geçişi modülünde hata mesajını görüntüleyin ve buna göre hatayı giderin. Yaygın hatalara yönelik çözümler için Yaygın hatalar konusuna bakın.
Şema geçişi ve tam geçiş ücretsiz midir?
Bu hizmet ücretsizdir. Faturalandırma Öğeleri konusuna bakın.
Redis örnekleri arasında bir veri geçiş görevi sırasında hedefteki zset verilerinin üzerine yazılır mı?
Evet, hedefteki zset verilerinin üzerine yazılır. Kaynaktakiyle aynı olan bir anahtar hedefte zaten mevcutsa DTS önce hedefteki ilgili anahtarın zset değerini siler ve ardından kaynak zset koleksiyonundaki her nesneyi hedefe zadd komutuyla ekler.
Tam geçişin kaynak veritabanı üzerindeki etkisi nedir?
DTS tam geçiş süreci önce verileri segmentlere ayırır ve ardından segmentler içindeki verileri okuyup yazar. Kaynak veritabanı açısından, veri segmentasyonu süreci sırasında kaynak veritabanının IOPS değeri artar. Segmentler içindeki verileri okuma süreci sırasında kaynak veritabanının IOPS, CachePool ve giden bant genişliği değerleri bir dereceye kadar etkilenir. DTS'in pratik deneyimine dayanarak bu etkilerin ihmal edilebilir düzeyde olduğunu söyleyebiliriz.
PolarDB-X 1.0 kaynak olduğunda bir geçiş görevinin kaynak PolarDB-X 1.0 düğüm ölçeklendirmesini destekler mi?
Hayır, desteklemez. Kaynak PolarDB-X 1.0 düğüm ölçeklendirmesi geçirirse görevi yeniden yapılandırmanız gerekir.
DTS tarafından Kafka'ya geçirilen verilerin benzersiz olması garanti edilebilir mi?
Hayır, garanti edilemez. Kafka'ya yazılan veriler ekleme şeklinde olduğu için DTS görevi yeniden başlatıldığında veya kaynaktan günlükleri tekrar çektiğinde yinelenen veriler oluşabilir. DTS, veri idempotensliğini sağlar; yani veriler sıralı düzenlenir ve yinelenen verilerin en son değeri sona yerleştirilir.
Önce bir tam geçiş görevi yapılandırırsam ve ardından bir artımlı veri geçiş görevi yapılandırırsam veri tutarsızlığı oluşur mu?
Evet, veri tutarsızlığı oluşabilir. Artımlı veri geçiş görevi ayrı olarak yapılandırıldığında görev yalnızca başlatıldıktan sonra veri geçişine başlar. Artımlı geçiş görevi başlamadan önce kaynak örnekte oluşan artımlı veriler hedef örneğe senkronize edilmez. Sıfır kesinti süresiyle geçiş yapmak için görevi yapılandırırken geçiş türleri olarak şema geçişi, tam veri geçişi ve artımlı veri geçişini seçmenizi öneririz.
Artımlı bir geçiş görevi yapılandırırken şema geçişini seçmem gerekir mi?
Şema geçişi, veri geçişi başlamadan önce geçiş nesnelerinin tanımlarının hedef örneğe geçirilmesi işlemidir; örneğin, A tablosunun tablo tanımının hedef örneğe geçirilmesi. Artımlı geçiş yapmak için veri tutarlılığını sağlamak amacıyla şema geçişi, tam veri geçişi ve artımlı veri geçişini seçmenizi öneririz.
Neden kendi kendine yönetilen bir veritabanından RDS'e geçiş sırasında RDS tarafından kullanılan depolama alanı kaynak veritabanından daha büyüktür?
DTS mantıksal bir geçiş gerçekleştirdiği için geçirilecek verileri SQL olarak paketler ve hedef RDS örneğine geçirir. Bu sırada hedef RDS örneğinde ikili günlük (binary log) verileri oluşturulur, bu nedenle geçiş süreci sırasında RDS tarafından kullanılan depolama alanı kaynak veritabanından daha büyük olabilir.
DTS, VPC'deki MongoDB'nin geçirilmesini destekliyor mu?
Evet, desteklemektedir. DTS şu anda geçiş için kaynak veritabanı olarak VPC'deki ApsaraDB for MongoDB ürününü kullanmayı desteklemektedir.
Veri geçişi sırasında kaynak veritabanı değişirse geçirilen verilere ne olur?
Geçiş görevi şema geçişi, tam geçiş ve artımlı geçiş ile yapılandırılmışsa geçiş sırasında kaynak veritabanında oluşan tüm veri değişiklikleri DTS tarafından hedef veritabanına geçirilir.
Tamamlanan bir geçiş görevinin serbest bırakılması geçirilen veritabanının kullanımını etkiler mi?
Hayır. Yalnızca görev tamamlandığında, yani Status değeri Completed olduğunda bir geçiş görevini güvenle serbest bırakabilirsiniz.
DTS, MongoDB için artımlı geçişi destekliyor mu?
Evet, desteklemektedir. Veri geçiş çözümlerine genel bakış bölümündeki ilgili yapılandırma örneklerine bakın.
Bir geçiş görevi için kaynak olarak RDS örneği ile genel IP adresine sahip kendi yönetimindeki bir veritabanı örneğini kullanmak arasındaki fark nedir?
Bir geçiş görevini yapılandırırken bir RDS örneği seçerseniz, DTS geçiş görevi; RDS örneğinin DNS değişiklikleri ve ağ türü anahtarlamaları gibi değişikliklere uyum sağlayabilir. Bu durum, bağlantı güvenilirliğini etkili bir şekilde sağlar.
DTS, bir VPC'deki ECS örneğinde barındırılan kendi yönetimindeki bir veritabanını bir RDS örneğine geçirmeyi destekler mi?
Evet, destekler.
Kaynak ECS örneği ile hedef RDS örneği aynı bölgede bulunuyorsa, DTS VPC içindeki ECS örneğinde barındırılan kendi yönetimindeki veritabanına doğrudan erişebilir.
Kaynak ECS örneği ile hedef RDS örneği farklı bölgelerde bulunuyorsa, ECS örneğine bir Elastic IP Address (EIP) atanmalıdır. Geçiş görevini yapılandırırken kaynak örnek olarak ECS örneğini seçin; DTS, ECS örneğindeki veritabanına erişmek için ECS örneğinin EIP'sini otomatik olarak kullanır.
DTS geçiş sırasında tabloları kilitler mi? Kaynak veritabanını etkiler mi?
DTS, tam veri geçişi ve artımlı veri geçişi sırasında kaynak veritabanındaki tabloları kilitlemez. Tam veri geçişi ve artımlı veri geçişi süreçlerinde, geçiş kaynağındaki veri tablolarına normal okuma ve yazma işlemleriyle erişilebilir.
DTS RDS geçişi gerçekleştirirken verileri birincil mi yoksa ikincil RDS veritabanından mı alır?
DTS veri geçişi gerçekleştirirken verileri birincil RDS veritabanından çeker.
Otomatik geçişi zamanlayabilir miyim?
Hayır, DTS şu anda veri geçişi görevlerinin başlatılmasını zamanlamayı desteklememektedir.
DTS, VPC modundaki RDS örnekleri için veri geçişini destekler mi?
Evet, bir geçiş görevini yapılandırırken RDS örnek kimliğini belirtebilirsiniz.
DTS aynı hesap veya hesaplar arası geçiş ya da senkronizasyon gerçekleştirirken ECS ve RDS örnekleri için dahili ağı mı yoksa genel ağı mı kullanır? Trafik ücreti alınır mı?
DTS'nin senkronizasyon veya geçiş görevleri için kullandığı ağ (dahili veya genel), görevin hesaplar arası olup olmadığıyla ilgili değildir. Trafik ücreti tahsil edilip edilmeyeceği görev türüne bağlıdır.
-
Kullanılan ağ
Geçiş görevi: Veri geçişi aynı bölge içinde gerçekleştiriliyorsa DTS, ECS ve RDS örneklerine bağlanmak için dahili ağı kullanır. Geçiş bölgeler arasında gerçekleştiriliyorsa DTS, kaynak örneğe (ECS veya RDS) bağlanmak için genel ağı, hedef RDS örneğine bağlanmak için ise dahili ağı kullanır.
Senkronizasyon görevi: Dahili ağ kullanılır.
-
Trafik ücretleri
Geçiş görevleri için, hedef veritabanı örneğinin Access Method değeri Public IP Address olarak ayarlandığında genel ağ giden trafik ücretleri tahsil edilir. Diğer DTS örnek türlerinde trafik ücreti alınmaz.
Senkronizasyon görevi: Trafik ücreti tahsil edilmez.
DTS kullanılarak geçiş yapıldıktan sonra kaynak veritabanındaki veriler silinir mi?
Hayır, silinmez. DTS veri geçişi gerçekleştirirken verileri kaynak veritabanından hedef veritabanına kopyalar ve kaynak veritabanındaki verileri etkilemez.
DTS RDS örnekleri arasında veri geçişi gerçekleştirirken hedef veritabanının adını belirtebilir miyim?
Evet. RDS örnekleri arasında veri geçişi gerçekleştirirken, hedef veritabanı adını belirtmek üzere veritabanı adı eşleme özelliğini kullanın. Farklı veritabanı adları arasında veri senkronizasyonu veya geçişi.
Bir DTS geçiş görevinin kaynağı bir ECS örneğine bağlanamıyorsa ne yapmalıyım?
ECS örneğinin maruz bırakılmış bir genel IP adresi olmayabilir. ECS örneğine bir EIP bağlayıp tekrar deneyin. Elastic IP Address.
Redis örnekleri arasındaki bir geçiş görevinde neden tam geçiş gösterilmez?
Redis örnekleri arasında, tam veri geçişi ve artımlı veri geçişini birleştiren Incremental Data Migration kullanarak veri geçirebilirsiniz.
Tam geçiş atlanabilir mi?
Evet, atlanabilir. Tam geçişi atlarsanız artımlı geçiş devam eder ancak hatalar oluşabilir. Tam geçişi atmamanızı öneririz.
Redis'in küme sürümü, DTS'ye genel IP adresi üzerinden bağlanmayı destekler mi?
Hayır, desteklemez. Şu anda yalnızca Redis'in tek düğümlü sürümü, genel IP adresine sahip bir DTS geçiş örneğine bağlanmayı destekler.
MySQL 8.0'dan MySQL 5.6'ya geçiş yaparken nelere dikkat etmeliyim?
Geçiş işlemini gerçekleştirmeden önce MySQL 5.6'da bir veritabanı oluşturmanız gerekir. Uyumluluğu sağlamak için kaynak ve hedef veritabanı sürümlerinin tutarlı olmasını veya daha düşük bir sürümden daha yüksek bir sürüme geçiş yapılmasını öneririz. Daha yüksek bir sürümden daha düşük bir sürüme geçiş yapılırsa veritabanı uyumluluk sorunları ortaya çıkabilir.
Kaynak veritabanındaki hesaplar hedef veritabanına geçirilebilir mi?
Şu anda yalnızca ApsaraDB RDS for MySQL örnekleri arasındaki geçiş görevleri hesapların geçirilmesini destekler. Diğer geçiş görevleri bunu desteklemez.
Hedef olarak Message Queue for Apache Kafka kullanıldığında parametreler nasıl yapılandırılır?
Parametreleri ihtiyaçlarınıza göre yapılandırın. Message Queue for Apache Kafka örneği için parametreleri yapılandırma.
Zamanlanmış tam geçiş nasıl gerçekleştirilir?
Veri entegrasyonu özelliğinin zamanlama ilkesini kullanarak şema ve geçmiş verileri kaynaktan hedefe periyodik olarak geçirebilirsiniz. ApsaraDB RDS for MySQL örnekleri arasında veri entegrasyonu görevini yapılandırma.
Bir ECS örneğindeki kendi yönetimindeki SQL Server'ın yerel ortamdaki kendi yönetimindeki bir SQL Server'a geçirilmesi desteklenir mi?
Evet, desteklenir. Yerel ortamdaki kendi yönetimindeki SQL Server'ın Alibaba Cloud'a bağlı olması gerekir. Hazırlıklara genel bakış.
Diğer cloud'lardaki PostgreSQL veritabanlarının geçirilmesi desteklenir mi?
Evet, başka bir cloud'taki PostgreSQL veritabanı DTS'nin genel ağ üzerinden kendisine erişmesine izin veriyorsa DTS aracılığıyla veri geçişi desteklenir.
PostgreSQL sürümü 10.0'dan eskiyse artımlı geçiş desteklenmez.
Veri Aboneliği Sorunları
Veri aboneliği nasıl çalışır?
Bir değişiklik izleme görevinin süresi dolduktan sonra tüketici grubu silinir mi?
Bir DTS değişiklik izleme görevinin süresi dolduktan sonra veri tüketici grubu yedi gün boyunca korunur. Örneğin süresi dolduktan sonraki yedi gün içinde yenilenmezse örnek serbest bırakılır ve ilgili tüketici grubu da silinir.
Salt okunur bir örnek, bir izleme görevi için kaynak örnek olarak kullanılabilir mi?
Bu durum aşağıdaki iki durumda gerçekleşebilir:
Örnek, ApsaraDB RDS for MySQL 5.7 veya 8.0 örneği gibi işlem günlüklerini kaydeden salt okunur bir örnekse kaynak örnek olarak kullanılabilir.
Örnek, ApsaraDB RDS for MySQL 5.6 örneği gibi işlem günlüklerini kaydetmeyen salt okunur bir örnekse kaynak örnek olarak kullanılamaz.
İzlenen veriler nasıl tüketilir?
Değişiklik izleme özelliği kullanılarak veriler aktarıldıktan sonra tarih veri biçimi neden değişir?
DTS için varsayılan tarih veri depolama biçimi YYYY:MM:DD şeklindedir. YYYY-MM-DD görüntülenen biçimdir ancak gerçek depolama biçimi YYYY:MM:DD şeklindedir. Bu nedenle, aktarılan verilerin biçimi ne olursa olsun sonunda varsayılan biçime dönüştürülür.
Bir izleme görevinde sorun giderme nasıl yapılır?
SDK normal şekilde veri indirirken aniden durur ve verileri izleyemezse ne yapmalıyım?
SDK kodunda tüketici ofsetini bildirmek için ackAsConsumed arayüzünün çağrılıp çağrılmadığını kontrol edin. Ofseti bildirmek için ackAsConsumed çağrılmazsa SDK içindeki Record önbellek alanında bulunan veriler silinmez. Önbellek tamamen dolduğunda yeni veriler çekilemez ve bu durum SDK'nın durmasına ve verileri izleyememesine neden olur.
SDK yeniden çalıştırıldıktan sonra verileri başarıyla izleyemiyorsa ne yapmalıyım?
SDK'yı başlatmadan önce tüketici ofsetini veri aralığı içinde kalacak şekilde değiştirin. Tüketici ofsetlerini kaydetme ve sorgulama.
Bir istemci veri tüketimi için belirli bir zaman noktasını nasıl belirtir?
İzlenen verileri tüketirken belirli bir zaman noktasını belirtmek için initCheckpoint parametresini doldurabilirsiniz. İzlenen verileri tüketmek için SDK örnek kodunu kullanma.
Bir DTS izleme görevinde gecikme varsa ofset nasıl sıfırlanır?
-
SDK istemcisinin kullanım moduna göre DTSConsumerAssignDemo.java veya DTSConsumerSubscribeDemo.java gibi ilgili kod dosyasını açın.
İzleme görevi listesinin Data Range sütununda, hedef izleme örneği için değiştirilebilir ofset aralığını görüntüleyebilirsiniz.
İhtiyaca göre yeni bir tüketici ofseti seçin ve bunu UNIX zaman damgasına dönüştürün.
Kod dosyasındaki eski tüketici ofsetini (initCheckpoint parametresi) dönüştürülen yeni tüketici ofsetiyle değiştirin.
İstemciyi yeniden çalıştırın.
İstemci izleme görevinin VPC adresini kullanarak bağlanamıyorsa ne yapmalıyım?
İstemcinin bulunduğu makine, izleme görevi yapılandırılırken belirtilen VPC içinde olmayabilir (örneğin, istemci VPC'si değiştirilmiş olabilir). Görevi yeniden yapılandırmanız gerekir.
Konsoldaki tüketici ofseti neden veri aralığının maksimum değerinden büyük?
Bunun nedeni, izleme kanalının veri aralığının güncelleme sıklığının 1 dakika, tüketici ofsetinin güncelleme sıklığının ise 10 saniye olmasıdır. Bu nedenle gerçek zamanlı tüketim yapılıyorsa tüketici ofsetinin değeri izleme kanalı veri aralığının maksimum değerinden büyük olabilir.
DTS, SDK tarafından izlenen verilerin eksiksiz bir işlem olduğunu nasıl garanti eder?
DTS, sağlanan tüketici ofsetine karşılık gelen eksiksiz işlemi arar. Sunucu tarafı, tüm işlemin BEGIN ifadesinden başlayarak verileri aşağı doğru dağıtır; böylece eksiksiz işlem içeriği alınabilir.
Verilerin normal şekilde tüketilip tüketilmediğini nasıl teyit ederim?
Veriler normal şekilde tüketiliyorsa Data Transmission Service konsolundaki tüketici ofseti normal şekilde ilerler.
Değişiklik izleme SDK'sındaki usePublicIp=true ne anlama gelir?
Değişiklik izleme SDK yapılandırmasında usePublicIp=true, SDK'nın DTS izleme kanalına genel ağ üzerinden eriştiği anlamına gelir.
Bir değişiklik izleme görevinin birincil RDS veritabanı anahtarlandığında veya yeniden başlatıldığında iş etkilenir mi?
ApsaraDB RDS for MySQL, ApsaraDB RDS for PostgreSQL, PolarDB for MySQL, PolarDB for PostgreSQL veya PolarDB-X 1.0 (depola türü RDS for MySQL olan) örneğinde birincil/ikincil anahtarlama veya yeniden başlatma gerçekleştiğinde DTS uyarlamalı anahtarlama yapar ve iş etkilenmez.
RDS, ikili günlüklerin yerel bir sunucuya otomatik olarak indirilmesi için bir araç sağlar mı?
DTS'nin değişiklik izleme özelliği, RDS ikili günlüklerinin gerçek zamanlı olarak izlenmesini destekler. DTS değişiklik izleme hizmetini etkinleştirebilir ve RDS ikili günlük verilerini izlemek ve bunları yerel bir sunucuya gerçek zamanlı olarak senkronize etmek için DTS SDK'sını kullanabilirsiniz.
Değişiklik izlemenin gerçek zamanlı artımlı verileri yalnızca yeni verileri mi ifade eder yoksa değiştirilen verileri de içerir mi?
DTS değişiklik izleme tarafından izlenebilen artımlı veriler; tüm ekleme, silme, değiştirme ve şema değişikliklerini (DDL) içerir.
Bir değişiklik izleme görevinin tüketici ucunda bir kayıt ACK almadıysa SDK neden yeniden başlatıldıktan sonra yinelenen veriler alır?
Bir mesaj SDK tarafından ACK almadığında sunucu tarafı arabellekteki tüm mesajları itmeyi tamamlar. İtme işlemi tamamlandıktan sonra SDK artık mesaj alamaz. Bu sırada sunucu tarafınca kaydedilen tüketici ofseti, ACK alınmamış olandan önceki son mesajın ofsetidir. SDK yeniden başlatıldığında mesaj kaybını önlemek amacıyla sunucu tarafı, ACK alınmamış olandan önceki mesaja karşılık gelen ofsetten verileri yeniden iter. Bu nedenle SDK bazı yinelenen mesajları alır.
Değişiklik izleme tüketici ofseti ne sıklıkla güncellenir ve SDK yeniden başlatıldığında neden bazen yinelenen veriler alır?
Değişiklik izleme SDK'sı her mesajı tükettikten sonra sunucu tarafına ACK yanıtı göndermek için ackAsConsumed öğesini çağırması gerekir. Sunucu tarafı ACK'yi aldıktan sonra tüketici ofsetini bellekte günceller ve ardından her 10 saniyede bir tüketici ofsetini kalıcı hale getirir. En son ACK kalıcı hale getirilmeden önce SDK yeniden başlatılırsa sunucu tarafı mesaj kaybını önlemek için mesajları son kalıcı tüketici ofsetinden itibaren itmeye başlar. Bu durumda SDK yinelenen mesajlar alır.
Bir değişiklik izleme örneği birden fazla RDS örneğini izleyebilir mi?
Hayır, izleyemez. Şu anda bir değişiklik izleme örneği yalnızca bir RDS örneğini izleyebilir.
Bir değişiklik izleme örneğinde veri tutarsızlığı meydana gelebilir mi?
Hayır, meydana gelmez. Bir değişiklik izleme görevi yalnızca kaynak veritabanındaki değişiklikleri alır ve veri tutarsızlığı söz konusu değildir. İstemci tarafından tüketilen veriler beklentilerinizle tutarsızsa sorunu kendiniz gidermeniz gerekir.
Abonelik verilerini tüketirken UserRecordGenerator görünürse ne yapılmalıdır?
İzlenen verileri tüketirken UserRecordGenerator: haven't receive records from generator for 5s gibi bir mesaj görürseniz tüketici ofsetinin artımlı veri alma modülünün ofset aralığı içinde olup olmadığını kontrol edin ve tüketici ucunun normal çalıştığından emin olun.
Bir konu için birden fazla bölüm oluşturulabilir mi?
Hayır, oluşturulamaz. Mesajların global sırasını sağlamak için DTS'deki her izleme konusu yalnızca bir bölüme sahiptir ve bu bölüm sabit olarak bölüm 0'a atanmıştır.
Değişiklik izleme SDK'sı Go'yu destekler mi?
Destekler. Örnek kod için dts-subscribe-demo deposuna bakın.
Değişiklik izleme SDK'sı Python'u destekler mi?
Evet, destekler. Örnek kod için dts-subscribe-demo adresine bakın.
flink-dts-connector izlenen verilerin çok iş parçacıklı eşzamanlı tüketimini destekler mi?
Hayır, desteklemez.
Aynı RDS örneği için hem bir değişiklik izleme görevi hem de bir veri senkronizasyonu görevi yapılandırabilir miyim?
Evet. İki görev birbirini etkilemez. Bir değişiklik izleme görevi ile bir veri senkronizasyonu görevi, aynı RDS örneğinde birbirini etkilemeden birlikte var olabilen iki bağımsız görev türüdür.
Veri doğrulama sorunları
Bir veri doğrulama görevinde veri tutarsızlığının nedenleri nelerdir?
Yaygın nedenler şunlardır:
Geçiş veya senkronizasyon görevinde gecikme yaşanmaktadır.
Kaynak veritabanına varsayılan değer içeren bir sütun eklenmiş ve görevde gecikme bulunmaktadır.
Hedef veritabanına DTS dışındaki kaynaklardan veri yazılmaktadır.
Çoklu tablo birleştirme özelliği etkin olan bir görevin kaynak veritabanında bir DDL işlemi gerçekleştirilmiştir.
Geçiş veya senkronizasyon görevi, veritabanı, tablo ve sütun adı eşleme özelliğini kullanmıştır.
Şema doğrulama görevi neden isRelHasoids farkı bildirir?
PostgreSQL 12'den önceki sürümlerde, bir tablo oluştururken WITH OIDS belirterek genel benzersiz nesne tanımlayıcısı (OID) alanı ekleyebilirsiniz. Yapı doğrulama görevinin kaynağında WITH OIDS ile oluşturulmuş tablolar varsa ve hedef, WITH OIDS özelliğini desteklemeyen daha yeni bir PostgreSQL sürümüyse isRelHasoids farkı algılanır.
Şema doğrulama görevi tarafından bildirilen isRelHasoids farkına dikkat etmem gerekir mi?
Hayır, gerekmez.
DTS, nesne tanımlayıcısı (OID) alanını senkronize eder veya geçişini yapar mı?
Nesne tanımlayıcısı (OID) alanı, WITH OIDS belirtilerek otomatik olarak oluşturulur. Hedefin bu alanı destekleyip desteklemediğinden bağımsız olarak, DTS bu verileri senkronize etmez veya geçişini yapmaz.
Bir tablonun nesne tanımlayıcısı (OID) alanı olup olmadığını nasıl kontrol edebilirim?
Komutta, sorgulanacak tablonun adıyla <table_name> ifadesini değiştirin.
SQL komutu:
SELECT relname AS table_name, relhasoids AS has_oids FROM pg_class WHERE relname = '<table_name>' AND relkind = 'r';İstemci komutu:
\d+ <table_name>
Tam veri doğrulama raporundaki veri tutarsızlıklarını nasıl giderebilirim?
Sorunu aşağıdaki adımları uygulayarak giderebilirsiniz:
Doğrulama raporunda ilgili sütunlar için kaynak ve hedef değerleri kontrol ederek belirli tutarsız alanları ve değerleri belirleyin.
Doğrulama raporuna dayanarak, kaynak ve hedef veritabanlarına manuel olarak bağlanın ve farklı değerleri karşılaştırarak bunların beklenen değerler olup olmadığını tespit edin.
Doğrulama sırasında kaynak veya hedef veritabanlarına veri yazılmadığından emin olun. Bu garanti edilemiyorsa, yoğun olmayan saatlerde kaynak veritabanına yazma işlemlerini duraklatmanızı ve doğrulamayı yeniden başlatmanızı öneririz.
Tutarsızlık devam ederse, kaynak ve hedef veritabanlarında SQL Insight (kullandıkça öde) özelliğini geçici olarak etkinleştirin ve denetim günlüklerini inceleyerek ilgili alanların değiştirilip değiştirilmediğini kontrol edin.
SECURITY_TYPEgibi belirli niteliklerdeki farklar beklenen davranıştır ve herhangi bir işlem gerektirmez.Başarılı bir tam veri doğrulama, standart olmayan arka uç değişikliklerinden sonra veri tutarlılığını kanıtlar.
Tam veri doğrulama tutarsızlıkları genellikle yapısal farklarla ilişkili değildir. Daha fazla doğrulama için kaynak ve hedef veritabanlarındaki kayıt sayılarını karşılaştırmak amacıyla
count(*)komutunu manuel olarak çalıştırmanızı öneririz.
Veri aktarımı tamamlandıktan sonra DTS görev ilerlemesi neden hala tamamlanmamış (örneğin %41) olarak gösteriliyor?
DTS görev ilerleme yüzdesi iki aşamadan oluşur: veri aktarımı (tam veri geçişi) ve veri doğrulama. Tam veri geçişi tamamlandıktan sonra, kalan ilerleme yüzdesi devam eden veri doğrulama sürecini temsil eder. Veri doğrulama, tam veri aktarımından sonra çalışan bağımsız bir tutarlılık kontrol aşamasıdır. Genel görev yalnızca doğrulama ilerlemesi %100'e ulaştığında tamamlanmış sayılır.
Aktarım tamamlandıktan hemen sonra veriyi kontrol etmeniz gerekiyorsa, doğrulama ilerlemesinin %100'e ulaşmasını beklemeden veriyi doğrulamak için hedef veritabanına manuel olarak bağlanabilirsiniz.
Tam veri doğrulama sırasında yavaş SQL sorgularının nedenleri ve çözümleri
Neden: DTS, tam veri doğrulama sırasında büyük tablolardan verileri birincil anahtar ID'sine göre parçalara ayırarak okur. Veri hacmi büyük olduğunda, parça sorguları uzun sürebilir ve bu da kaynak veritabanında yavaş SQL sorgularına neden olabilir.
Çözüm:
Öncelikle, tam veri doğrulama görevinin durup durmadığını kontrol edin. Doğrulama görevi durduysa, bu tür sorgular artık oluşturulmamalıdır.
Doğrulama görevi hala çalışıyorsa ve işinizi etkiliyorsa, tam veri doğrulamayı yoğun olmayan saatlerde çalıştırmanızı veya doğrulama görevini duraklatıp yoğun olmayan saatlerde yeniden başlatmanızı öneririz.
Diğer sorunlar
Bir veri senkronizasyonu veya geçiş görevi çalışırken hedef veritabanındaki verilerin değiştirilmesinin etkisi nedir?
Hedef veritabanındaki verilerin değiştirilmesi DTS görevinin başarısız olmasına neden olabilir. Veri geçişi veya senkronizasyonu sırasında, hedef veritabanında taşınacak veya senkronize edilecek nesneler üzerinde işlem yapmanız birincil anahtar çakışmalarına, güncelleme kaydı bulunmamasına veya diğer durumlara yol açabilir; bu durum sonunda DTS görevinin başarısız olmasına neden olur. Ancak, DTS görevini kesintiye uğratmayacak işlemler gerçekleştirebilirsiniz; örneğin, hedef örnekte bir tablo oluşturmak ve buna veri yazmak. Bu tablo geçiş veya senkronizasyon nesne tablosunda yer almadığından DTS görevinin başarısız olmasına neden olmaz.
DTS, kaynak örnek veritabanı bilgilerini okuyup tam verilerini, şema verilerini ve artımlı verilerini hedef örneğe geçirdiği veya senkronize ettiği için, görev sırasında hedef veritabanında değiştirilen veriler kaynak veritabanından geçiş yapılan veya senkronize edilen veriler tarafından üzerine yazılabilir.
Bir veri senkronizasyonu veya geçiş görevi çalışırken hem kaynak hem de hedef veritabanlarına aynı anda veri yazılabilir mi?
Evet, ancak DTS örneği çalışırken DTS dışındaki diğer veri kaynaklarından hedef veritabanına veri yazılırsa, hedef veritabanı verilerinde veya DTS örneğinde anormalliklere neden olabilir.
Bir DTS örneği çalışırken kaynak veya hedef veritabanının parolasını değiştirirsem ne olur?
DTS örneği hata verir ve kesintiye uğrar. Örnek ayrıntılarını görüntülemek için örnek kimliğini tıklayın ve Basic Information sekmesinde kaynak veya hedef hesap parolasını değiştirin. Ardından, Task Management sekmesine gidin ve Basic Information bölümünde hata veren modülü yeniden başlatın.
Bazı kaynak veya hedef veritabanlarının neden genel IP bağlantı türü yok?
Bu durum, kaynak veya hedef veritabanının bağlantı türü, görev türü ve veritabanı türü ile ilgilidir. Örneğin, MySQL veritabanı türündeki bir kaynak için geçiş ve izleme görevleri genel IP adresi kullanarak bağlanmayı seçebilirken, senkronizasyon görevleri genel IP bağlantılarını desteklemez.
Hesaplar arası veri geçişi veya veri senkronizasyonu destekleniyor mu?
Kaynak ve hedef veritabanları aynı veritabanı örneği olabilir mi?
Evet. Kaynak ve hedef aynı örnek ise, verileri yalıtmak için eşleme özelliğini kullanın. Aksi takdirde, DTS örneği başarısız olabilir veya veri kaybı yaşanabilir. Veritabanı, tablo ve sütun eşleme.
Hedef olarak Redis kullanan bir görev neden "OOM command not allowed when used memory > 'maxmemory'" hatası bildirir?
Bunun nedeni, hedef Redis örneğinin depolama alanının yetersiz olması olabilir. Hedef Redis örneğinin mimari türü küme ise, bir parçanın bellek sınırına ulaşmış olması da söz konusu olabilir. Hedef örneğin teknik özelliklerini yükseltmeniz gerekir.
AliyunDTSRolePolicy erişim ilkesi nedir ve ne için kullanılır?
AliyunDTSRolePolicy ilkesi, DTS'nin mevcut veya hesaplar arası RDS ve ECS gibi cloud kaynaklarına erişmesine olanak tanır. Bir geçiş, senkronizasyon veya izleme görevi yapılandırırken ilgili cloud kaynak bilgilerini çağırır. Cloud kaynaklarına erişmek için DTS izinleri verme.
RAM rol yetkilendirmesini nasıl yapabilirim?
Konsola ilk kez giriş yaptığınızda, DTS sizden AliyunDTSDefaultRole rolünü yetkilendirmenizi ister. RAM yetkilendirme sayfasına gitmek için istemleri takip edin. Cloud kaynaklarına erişmek için DTS izinleri verme.
İşlemi gerçekleştirmek için bir Alibaba Cloud hesabıyla konsola giriş yapmanız gerekir.
Bir DTS görevi için girilen hesap parolası değiştirilebilir mi?
Bir DTS görevi için veritabanı hesabının parolasını değiştirebilirsiniz. Örnek ayrıntıları sayfasını açmak için örnek kimliğini tıklayın. Basic Information sekmesinde, kaynak veya hedef veritabanı için parolayı değiştirmek üzere Change Password öğesini tıklayın.
Bir DTS görevinin sistem hesabı parolası değiştirilemez.
MaxCompute tablosunda neden "_base" soneki vardır?
-
İlk şema senkronizasyonu.
DTS, senkronize edilecek tabloların şema tanımlarını kaynak veritabanından MaxCompute'a senkronize eder. Başlatma sırasında DTS, tablo adlarına
_basesonekini ekler. Örneğin, kaynak tablocustomerise MaxCompute'daki tablocustomer_baseolur. -
İlk tam veri senkronizasyonu.
DTS, kaynak veritabanındaki tablolardaki tüm geçmiş verileri MaxCompute'daki
_basetablolarına senkronize eder. Örneğin, veriler kaynak veritabanındakicustomertablosundan MaxCompute'dakicustomer_basetablosuna senkronize edilir. Bu veriler, sonraki artımlı veri senkronizasyonu için temel teşkil eder.NotBu tablo, tam temel tablo olarak da bilinir.
-
Artımlı veri senkronizasyonu.
DTS, MaxCompute'da bir artımlı günlük tablosu oluşturur. Tablo adı,
_logsonekiyle hedef tablonun adıdır; örneğincustomer_log. DTS ardından artımlı verileri kaynak veritabanından bu tabloya gerçek zamanlı olarak senkronize eder.NotArtımlı günlük tablosunun yapısı hakkında daha fazla bilgi için bkz. Artımlı günlük tablosu şeması.
Kafka konusunu alamıyorsam ne yapmalıyım?
Şu anda yapılandırılan Kafka broker'ında konu bilgisi olmayabilir. Konunun broker dağıtımını kontrol etmek için aşağıdaki komutu çalıştırabilirsiniz:
./bin/kafka-topics.sh --describe --zookeeper zk01:2181/kafka --topic topic_name
Yerel olarak bir MySQL örneğini RDS örneği için ikincil veritabanı olarak oluşturabilir miyim?
Evet, oluşturabilirsiniz. Birincil-ikincil mimarisine ulaşmak için Data Transmission Service (DTS) veri geçişi özelliğini kullanarak RDS'den yerel kendi kendine yönetilen bir MySQL örneğine gerçek zamanlı veri senkronizasyonu yapılandırabilirsiniz.
Bir RDS örneğinden yeni oluşturulan bir RDS örneğine verileri nasıl kopyalarım?
Geçiş türleri olarak şema geçişi, tam geçiş ve artımlı geçişi seçebilirsiniz. ApsaraDB RDS örnekleri arasında veri geçişi.
DTS, bir RDS örneği içindeki bir veritabanını yalnızca veritabanı adı dışında aynı olan yeni bir veritabanı oluşturmak için kopyalamayı destekliyor mu?
Evet, destekliyor. DTS tarafından sunulan nesne adı eşleme özelliği, bir RDS örneği içindeki bir veritabanını yalnızca veritabanı adı dışında aynı olan yeni bir veritabanı oluşturmak için kopyalamak amacıyla kullanılabilir.
Bir DTS örneği sürekli gecikme gösteriyorsa ne yapmalıyım?
Olası nedenler şunlardır:
Kaynak veritabanı örneği için farklı hesaplar kullanılarak birden çok DTS görevi oluşturulmuş ve bu durum örnekte yüksek yüke neden olmuştur. Görevleri oluşturmak için aynı hesabı kullanmalısınız.
-
Hedef veritabanı örneğinde yetersiz bellek vardır. İşlerinizi planlayıp hedef veritabanı örneğini yeniden başlatabilirsiniz. Sorun devam ederse hedef örneğin teknik özelliklerini yükseltin veya birincil/ikincil geçişi gerçekleştirin.
NotBirincil/ikincil geçişi geçici bir bağlantı kesintisine neden olabilir. Uygulamanızın otomatik yeniden bağlantı mekanizmasına sahip olduğundan emin olun.
Eski konsolda hedef veritabanına senkronize ettikten veya geçiş yaptıktan sonra alanların tümü küçük harf oluyorsa ne yapmalıyım?
Yeni konsolu ve hedef veritabanı nesne adı büyük/küçük harf ilkesi özelliğini kullanabilirsiniz. Hedef veritabanı nesne adı büyük/küçük harf ilkesi.
Duraklatılmış bir DTS görevi devam ettirilebilir mi?
Genel olarak, en fazla 24 saat duraklatılmış bir DTS görevi normal şekilde devam ettirilebilir. Veri hacmi küçükse, en fazla 7 gün duraklatılmış bir DTS görevi normal şekilde devam ettirilebilir. Bir görevi 6 saatten fazla duraklatmamanızı öneririz.
Bir görev duraklatılıp yeniden başlatıldıktan sonra ilerleme neden 0'dan başlıyor?
Bir görev yeniden başlatıldıktan sonra, DTS tamamlanan verileri yeniden sorgular ve ardından kalan verileri işlemeye devam eder. Bu süreçte, görev ilerlemesi gecikme nedeniyle gerçek ilerlemeden farklı olabilir.
DDL kilitsiz değişikliğinin prensibi nedir?
DDL kilitsiz değişikliğinin temel prensipleri için bkz. Temel prensipler.
DTS, belirli bir tablonun senkronizasyonunu veya geçişini duraklatmayı destekliyor mu?
Hayır, desteklemiyor.
Bir görev başarısız olursa yeniden satın almam gerekir mi?
Hayır, gerekmez. Orijinal görevi yeniden yapılandırabilirsiniz.
Birden çok görev aynı hedefe veri yazarsa ne olur?
Bu durum veri tutarsızlığına neden olabilir.
Yenilemeden sonra örnek neden hala kilitli?
Kilitli bir DTS örneğini yeniledikten sonra, örneğin kilidinin açılması biraz zaman alır. Lütfen bekleyin.
Bir DTS örneğinin kaynak grubunu değiştirebilir miyim?
Evet, değiştirebilirsiniz. Örneğin Basic Information sayfasında, Basic Information alanında Resource Group Name yanındaki Modification öğesini tıklayın.
DTS'nin binary log analiz aracı var mı?
Hayır, DTS'nin binary log analiz aracı yoktur.
Artımlı bir görevin sürekli %95 göstermesi normal midir?
Evet, normaldir. Artımlı bir görev süreklidir ve tamamlanmaz. İlerleme %100'e ulaşmaz.
Bir DTS görevi 7 günden uzun süredir neden serbest bırakılmadı?
Bazen dondurulmuş bir görev 7 günden daha uzun süre saklanabilir.
Oluşturulmuş bir görevin bağlantı noktasını değiştirebilir miyim?
Bu desteklenmemektedir.
Bir DTS görevinde PolarDB-X 1.0 altında monte edilen RDS for MySQL örneği düşürülebilir mi?
Düşürülmesi önerilmez. Düşürme, birincil/ikincil geçişini tetikler ve bu durum veri kaybına neden olabilir.
Bir DTS görevi çalışırken kaynak veya hedef örnek yükseltilebilir veya düşürülebilir mi?
Bir DTS görevi çalışırken kaynak veya hedef örneği yükseltmek veya düşürmek görev gecikmesine veya veri kaybına neden olabilir. Kaynak veya hedef örneğin teknik özelliklerini değiştirmenizi önermiyoruz.
DTS görevinin kaynak ve hedef örnekler üzerindeki etkisi nedir?
İlk tam veri senkronizasyonu, kaynak ve hedef veritabanlarının bazı okuma ve yazma kaynaklarını kullanır; bu durum veritabanı yükünü artırabilir. Tam görevleri yoğun olmayan saatlerde gerçekleştirmenizi öneririz.
DTS görevinin yaklaşık gecikme süresi nedir?
DTS görevinin gecikme süresi tahmin edilemez çünkü kaynak örneğin çalışma yükü, iletim ağının bant genişliği, ağ gecikme süresi ve hedef örneğin yazma performansı gibi birçok faktöre bağlıdır.
Data Transmission Service konsolu otomatik olarak Data Management (DMS) konsoluna yönlendirilirse, eski Data Transmission Service konsoluna nasıl dönebilirim?
DMS konsolunda sağ alt köşedeki
simgesini tıklayın ve ardından önceki Data Transmission Service konsol sürümüne dönmek için
öğesini seçin.
DTS veri şifrelemeyi destekliyor mu?
DTS, kaynak veritabanından veri okumak veya hedef veritabanına veri yazmak amacıyla Secure Sockets Layer (SSL) şifreleme üzerinden kaynak veya hedef veritabanına güvenli erişimi destekler ancak veri aktarımı sırasında gidiş halindeki verilerin şifrelenmesini desteklemez.
DTS, ClickHouse'u kaynak veya hedef olarak destekliyor mu?
Hayır, desteklemiyor.
DTS, AnalyticDB for MySQL 2.0'ı kaynak veya hedef olarak destekliyor mu?
AnalyticDB for MySQL 2.0 yalnızca hedef olarak desteklenir ve AnalyticDB for MySQL 2.0'ın hedef olduğu çözüm yeni konsolda henüz kullanılamaz. Bu yapılandırma yalnızca eski konsolda yapılabilir.
Konsolda yeni oluşturulan bir görevi neden göremiyorum?
Yanlış görev listesini seçmiş veya görevleri filtrelemiş olabilirsiniz. İlgili görev listesinde doğru bölge ve kaynak grubu gibi uygun filtreleme seçeneklerini seçin.
Oluşturulmuş bir görevin gri renkte görünen yapılandırma öğeleri değiştirilebilir mi?
Bu işlem desteklenmez.
Gecikme süresi uyarıları ve eşikleri nasıl yapılandırabilirim?
DTS izleme ve uyarı işlevleri sağlar. Çalışma durumunu takip etmek için önemli ölçümler için uyarı kuralları ayarlayın. İzleme ve uyarı yapılandırma.
Uzun süredir başarısız olan bir görevin hata nedenini görüntüleyebilir miyim?
Hayır, görüntüleyemezsiniz. Bir görev uzun süredir başarısız olduysa (örneğin 7 günden fazla), ilgili günlükler temizlenir ve hata nedeni görüntülenemez.
Uzun süredir başarısız olan bir görev geri yüklenebilir mi?
Hayır, geri yüklenemez. Bir görev uzun süredir başarısız olduysa (örneğin 7 günden fazla), ilgili günlükler temizlenir ve geri yüklenemez. Görevi yeniden yapılandırmanız gerekir.
rdsdt_dtsacct hesabı nedir?
rdsdt_dtsacct hesabını siz oluşturmadıysanız, bu hesap DTS tarafından oluşturulmuş olabilir. DTS, kaynak ve hedef veritabanı örneklerine bağlanmak için bazı veritabanı örneklerinde yerleşik bir rdsdt_dtsacct hesabı oluşturur.
SQL Server'da yığın tablolar, birincil anahtarı olmayan tablolar, sıkıştırılmış tablolar, hesaplanan sütun içeren tablolar ve seyrek sütun içeren tablolar hakkındaki bilgileri nasıl görüntülerim?
Kaynak veritabanında bu senaryolara ait tabloların olup olmadığını kontrol etmek için aşağıdaki SQL deyimlerini çalıştırabilirsiniz:
-
Kaynak veritabanındaki yığın tabloları kontrol edin:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.indexes WHERE index_id = 0); -
Birincil anahtarı olmayan tabloları kontrol edin:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id NOT IN (SELECT parent_object_id FROM sys.objects WHERE type = 'PK'); -
Birincil anahtar sütunlarının küme dizinine dahil edilmediği durumları kontrol edin:
SELECT s.name schema_name, t.name table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id WHERE t.type = 'U' AND s.name NOT IN('cdc', 'sys') AND t.name NOT IN('systranschemas') AND t.object_id IN ( SELECT pk_colums_counter.object_id AS object_id FROM (select pk_colums.object_id, sum(pk_colums.column_id) column_id_counter from (select sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.is_primary_key = 'true') pk_colums group by object_id) pk_colums_counter inner JOIN ( select cluster_colums.object_id, sum(cluster_colums.column_id) column_id_counter from (SELECT sic.object_id object_id, sic.column_id FROM sys.index_columns sic, sys.indexes sis WHERE sic.object_id = sis.object_id AND sic.index_id = sis.index_id AND sis.index_id = 1) cluster_colums group by object_id ) cluster_colums_counter ON pk_colums_counter.object_id = cluster_colums_counter.object_id and pk_colums_counter.column_id_counter != cluster_colums_counter.column_id_counter); -
Kaynak veritabanındaki sıkıştırılmış tabloları kontrol edin:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.objects t, sys.schemas s, sys.partitions p WHERE s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id = p.object_id AND p.data_compression != 0; -
Hesaplanan sütun içeren tabloları kontrol edin:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_computed = 1); -
Seyrek sütun içeren tabloları kontrol edin:
SELECT s.name AS schema_name, t.name AS table_name FROM sys.schemas s INNER JOIN sys.tables t ON s.schema_id = t.schema_id AND t.type = 'U' AND s.name NOT IN ('cdc', 'sys') AND t.name NOT IN ('systranschemas') AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_sparse = 1);
Kaynak ve hedef şemalar tutarsızsa ne yapmalıyım?
Kaynak ve hedef arasında sütun eşlemesi yapmak için eşleme özelliğini kullanmayı deneyebilirsiniz. Veritabanı, tablo ve sütun eşleme.
Sütun türünün değiştirilmesi desteklenmez.
Veritabanı, tablo ve sütun eşleme, sütun türünün değiştirilmesini destekliyor mu?
Hayır, desteklemiyor.
DTS, kaynak veritabanının okuma hızını sınırlamayı destekliyor mu?
Hayır, desteklemiyor. Görev çalışmadan önce kaynak veritabanının performansını (IOPS ve ağ bant genişliğinin gereksinimleri karşılayıp karşılamadığı gibi) değerlendirmeniz gerekir. Ayrıca görevi yoğun olmayan saatlerde çalıştırmanızı öneririz.
MongoDB parçalı küme örneğinde artık belgeleri nasıl temizlerim?
Artık belgeleri kontrol etme
-
mongo kabuğunu kullanarak MongoDB parçalı küme örneğine bağlanın.
ApsaraDB for MongoDB'ye bağlanmak için bkz. mongo kabuğu kullanarak parçalı küme örneğine bağlanma.
-
Hedef veritabanına geçmek için aşağıdaki komutu çalıştırın.
use <db_name> -
Artık belgeler hakkındaki bilgileri görüntülemek için aşağıdaki komutu çalıştırın.
db.<coll_name>.find().explain("executionStats")NotHer parçanın
executionStatsdeğerini görüntüleyin.SHARDING_FILTERaşamasındakichunkSkipsalanı 0 değilse, ilgili parçada artık belgeler var demektir.Aşağıdaki örnek çıktı,
SHARDING_FILTERaşamasından öncekiFETCHaşamasında 102 belgenin ("nReturned" : 102) döndürüldüğünü gösterir. Ardından,SHARDING_FILTERaşamasında iki artık belge ("chunkSkips" : 2) filtrelenir. Son olarak 100 belge ("nReturned" : 100) döndürülür."stage" : "SHARDING_FILTER", "nReturned" : 100, ...... "chunkSkips" : 2, "inputStage" : { "stage" : "FETCH", "nReturned" : 102,MongoDB Manual adresinde
SHARDING_FILTERaşaması hakkında daha fazla bilgi edinin.
Yalnız başına kalan belgeleri temizleme
Birden fazla veritabanınız varsa, yalnız başına kalan belgeleri her bir veritabanı için ayrı ayrı temizlemeniz gerekir.
ApsaraDB for MongoDB
Ana sürümü MongoDB 4.2'den önceki veya alt sürümü 4.0.6'dan önceki bir örnekte temizleme betiğini çalıştırmak hataya neden olur. Örneğinizin geçerli sürümünü görüntülemek için bkz. MongoDB alt sürümleri. Ana veya alt sürümü yükseltmek için bkz. Veritabanının ana sürümünü yükseltme ve Veritabanının alt sürümünü yükseltme.
Yalnız başına kalan belgeleri temizlemek için cleanupOrphaned komutunu kullanın. Prosedür, MongoDB 4.4 ve sonraki sürümler ile MongoDB 4.2 ve önceki sürümler arasında küçük farklılıklar gösterir.
MongoDB 4.4 ve sonraki sürümler
-
Parçalı küme örneğinize bağlanabilen bir sunucuda
cleanupOrphaned.jsadlı bir JavaScript (JS) betiği oluşturun.NotBu betik, birden çok parçadaki birden çok veritabanındaki tüm koleksiyonlardaki yalnız başına kalan belgeleri temizler. Belirli bir koleksiyondaki yalnız başına kalan belgeleri temizlemeniz gerekiyorsa JS betiğini değiştirebilirsiniz.
// List of shard names var shardNames = ["shardName1", "shardName2"]; // List of databases var databasesToProcess = ["database1", "database2", "database3"]; shardNames.forEach(function(shardName) { // Iterate over the specified list of databases databasesToProcess.forEach(function(dbName) { var dbInstance = db.getSiblingDB(dbName); // Get the names of all collections in the database instance var collectionNames = dbInstance.getCollectionNames(); // Iterate over each collection collectionNames.forEach(function(collectionName) { // The full collection name var fullCollectionName = dbName + "." + collectionName; // Build the cleanupOrphaned command var command = { runCommandOnShard: shardName, command: { cleanupOrphaned: fullCollectionName } }; // Execute the command var result = db.adminCommand(command); if (result.ok) { print("Cleaned up orphaned documents for collection " + fullCollectionName + " on shard " + shardName); printjson(result); } else { print("Failed to clean up orphaned documents for collection " + fullCollectionName + " on shard " + shardName); } }); }); });Betiğe,
shardNamesvedatabasesToProcessparametrelerinin değerlerini girin:shardNames: Yalnız başına kalan belgelerin temizleneceği parçaların kimliklerinden oluşan bir dizi. Parça kimliklerini, örneğin Temel Bilgiler sayfasındaki Parça Listesi bölümünden edinebilirsiniz. Örneğin,d-bp15a3796d3a****.databasesToProcess: Yalnız başına kalan belgelerin temizleneceği veritabanı adlarından oluşan bir dizi.
-
cleanupOrphaned.jsbetiğinin bulunduğu dizinde yalnız başına kalan belgeleri temizlemek için aşağıdaki komutu çalıştırın.mongo --host <Mongoshost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt
Parametre
Açıklama<Mongoshost>
Parçalı küme örneğinin mongos düğümünün bağlantı adresi. Örnek:s-bp14423a2a51****.mongodb.rds.aliyuncs.com.<Primaryport>
Parçalı küme örneğinin mongos düğümünün bağlantı noktası numarası. Varsayılan değer 3717'dir.<database>
Kimlik doğrulama veritabanının adı. Bu, veritabanı hesabının ait olduğu veritabanıdır.<username>
Veritabanı hesabı.<password>
Veritabanı hesabının parolası.output.txt
Çalıştırma sonuçlarının kaydedileceği çıkış dosyası.
MongoDB 4.2 ve önceki sürümler
-
Parçalı küme örneğinize bağlanabilen bir sunucuda
cleanupOrphaned.jsadlı bir JS betiği oluşturun.NotBu betik, birden çok parçada belirtilen bir veritabanındaki belirtilen bir koleksiyondaki yalnız başına kalan belgeleri temizler. Birden çok koleksiyondaki yalnız başına kalan belgeleri temizlemek için
fullCollectionNameparametresini değiştirip betiği birden çok kez çalıştırabilir veya koleksiyonları yineleyecek şekilde betiği kendiniz değiştirebilirsiniz.function cleanupOrphanedOnShard(shardName, fullCollectionName) { var nextKey = { }; var result; while ( nextKey != null ) { var command = { runCommandOnShard: shardName, command: { cleanupOrphaned: fullCollectionName, startingFromKey: nextKey } }; result = db.adminCommand(command); printjson(result); if (result.ok != 1 || !(result.results.hasOwnProperty(shardName)) || result.results[shardName].ok != 1 ) { print("Unable to complete at this time: failure or timeout.") break } nextKey = result.results[shardName].stoppedAtKey; } print("cleanupOrphaned done for coll: " + fullCollectionName + " on shard: " + shardName) } var shardNames = ["shardName1", "shardName2", "shardName3"] var fullCollectionName = "database.collection" shardNames.forEach(function(shardName) { cleanupOrphanedOnShard(shardName, fullCollectionName); });Betiğe,
shardNamesvefullCollectionNameparametrelerinin değerlerini girin:shardNames: Yalnız başına kalan belgelerin temizleneceği parçaların kimliklerinden oluşan bir dizi. Parça kimliklerini, örneğin Temel Bilgiler sayfasındaki Parça Listesi bölümünden edinebilirsiniz. Örneğin,d-bp15a3796d3a****.fullCollectionName: Yalnız başına kalan belgelerin temizleneceği koleksiyonun adı. Biçim:database.collection.
-
cleanupOrphaned.jsbetiğinin bulunduğu dizinde yalnız başına kalan belgeleri temizlemek için aşağıdaki komutu çalıştırın.mongo --host <Mongoshost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt
Parametre
Açıklama<Mongoshost>
Parçalı küme örneğinin mongos düğümünün bağlantı adresi. Örnek:s-bp14423a2a51****.mongodb.rds.aliyuncs.com.<Primaryport>
Parçalı küme örneğinin mongos düğümünün bağlantı noktası numarası. Varsayılan değer 3717'dir.<database>
Kimlik doğrulama veritabanının adı. Bu, veritabanı hesabının ait olduğu veritabanıdır.<username>
Veritabanı hesabı.<password>
Veritabanı hesabının parolası.output.txt
Çalıştırma sonuçlarının kaydedileceği çıkış dosyası.
Kendi yönettiğiniz MongoDB
-
Kendi yönettiğiniz MongoDB veritabanınıza bağlanabilen bir sunucuda cleanupOrphaned.js betik dosyasını indirin.
wget "https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120562/cn_zh/1564451237979/cleanupOrphaned.js" -
cleanupOrphaned.js betik dosyasını değiştirin.
testifadesini, yalnız başına kalan belgeleri temizlemek istediğiniz veritabanının adıyla değiştirin.ÖnemliBirden fazla veritabanınız varsa 2. Adım ve 3. Adımı her bir veritabanı için tekrarlamalısınız.
function cleanupOrphaned(coll) { var nextKey = { }; var result; while ( nextKey != null ) { result = db.adminCommand( { cleanupOrphaned: coll, startingFromKey: nextKey } ); if (result.ok != 1) print("Unable to complete at this time: failure or timeout.") printjson(result); nextKey = result.stoppedAtKey; } } var dbName = "test" db = db.getSiblingDB(dbName) db.getCollectionNames().forEach(function(collName) { cleanupOrphaned(dbName + "." + collName); }); -
Bir parçadaki belirtilen veritabanında bulunan tüm koleksiyonlardaki yalnız başına kalan belgeleri temizlemek için aşağıdaki komutu çalıştırın.
NotBu adımı her bir parça için tekrarlamalısınız.
mongo --host <Shardhost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.jsNot<Shardhost>: Parçanın IP adresi.
<Primaryport>: Parçadaki birincil düğümün hizmet bağlantı noktası.
<database>: Kimlik doğrulama veritabanının adı. Bu, veritabanı hesabının ait olduğu veritabanıdır.
<username>: Veritabanı hesabı.
<password>: Hesabın parolası.
Örnek:
Bu örnekte, kendi yönettiğiniz MongoDB veritabanında üç parça bulunur. Yalnız başına kalan belgeleri temizlemek için komutu her bir parça için çalıştırmanız gerekir.
mongo --host 172.16.1.10 --port 27018 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.jsmongo --host 172.16.1.11 --port 27021 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.jsmongo --host 172.16.1.12 --port 27024 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
Özel durum işleme
Yalnız başına kalan bir belgenin ad alanında boşta imleçler varsa temizleme işlemi tamamlanmayabilir ve mongod günlüğü aşağıdaki bilgileri içerir:
Deletion of DATABASE.COLLECTION range [{ KEY: VALUE1 }, { KEY: VALUE2 }) will be scheduled after all possibly dependent queries finish
mongo kabuğunu kullanarak bir mongod örneğine bağlanabilir ve geçerli parçada boşta imleç olup olmadığını kontrol etmek için aşağıdaki komutu çalıştırabilirsiniz. Boşta imleçler varsa bunları restart mongod veya killCursors komutunu kullanarak temizlemelisiniz. Ardından yalnız başına kalan belgeleri tekrar temizlemeyi deneyebilirsiniz. Bkz. JIRA bileti.
db.getSiblingDB("admin").aggregate( [{ $currentOp : { allUsers: true, idleCursors: true } },{ $match : { type: "idleCursor" } }] )
Parçalı bir MongoDB kümesinde eşit olmayan veri dağıtımını nasıl ele alırım?
Dengeleyici özelliğini etkinleştirerek ve önceden parçalama yaparak veri eğrilimini çözebilirsiniz. Veri eğrilimi, çoğu verinin tek bir parçaya yazılması durumunda ortaya çıkar.
Dengeleyiciyi etkinleştirme
Dengeleyici devre dışı bırakılmışsa veya Dengeleyici penceresinin etkin dönemi henüz başlamamışsa Dengeleyici'yi etkinleştirebilir veya veri dengelemeyi hemen başlatmak için Dengeleyici penceresini geçici olarak iptal edebilirsiniz.
MongoDB parçalı küme örneğine bağlanın.
-
mongos düğümü komut penceresinde config veritabanına geçin.
use config -
Gerektiğinde aşağıdaki komutları çalıştırın.
-
Dengeleyici özelliğini etkinleştirme
sh.setBalancerState(true) -
Dengeleyici penceresini geçici olarak iptal etme
db.settings.updateOne( { _id : "balancer" }, { $unset : { activeWindow : true } } )
-
Önceden bölme
MongoDB, aralık parçalama ve karma parçalama olmak üzere iki parçalama yöntemini destekler. Önceden parçalama, parçaları birden çok parça düğümüne eşit şekilde dağıtır. Bu sayede DTS veri senkronizasyonu veya geçişi sırasında optimum yük dengelemesi sağlanır.
Karma parçalama
Önceden parçalamayı uygulamak için numInitialChunks parametresini kullanabilirsiniz. Bu parametrenin değeri varsayılan olarak parça sayısı × 2 şeklindedir ve en fazla parça sayısı × 8192 olarak ayarlanabilir. sh.shardCollection().
sh.shardCollection("phonebook.contacts", { last_name: "hashed" }, false, {numInitialChunks: 16384})
Aralık parçalama
Kaynak MongoDB bir sharded cluster ise, parçalanmış tablonun chunk aralığını almak için
config.chunksiçindeki verileri kullanabilirsiniz. Daha sonra bu aralığı, ön parçalama komutlarınızda<split_value>için bir referans olarak kullanabilirsiniz.-
Kaynak MongoDB bir replica set ise, sharding anahtarının aralığını belirlemek ve ardından uygun bir bölme noktası tanımlamak için yalnızca
findkomutunu kullanabilirsiniz.# Get the minimum value of the shard key db.<coll>.find().sort({<shardKey>:1}).limit(1) # Get the maximum value of the shard key db.<coll>.find().sort({<shardKey>:-1).limit(1)
Komut biçimi
Aşağıdaki örnekte splitAt komutu kullanılmaktadır. Ayrıca bkz. sh.splitAt(), sh.splitFind() ve Split Chunks in a Sharded Cluster.
sh.splitAt("<db>.<coll>", {"<shardKey>":<split_value>})
Örnek ifade
sh.splitAt("test.test", {"id":0})
sh.splitAt("test.test", {"id":50000})
sh.splitAt("test.test", {"id":75000})
Ön parçalama işlemini tamamladıktan sonra, ön parçalama sonuçlarını doğrulamak için mongos düğümünde sh.status() komutunu çalıştırabilirsiniz.
Konsolda görev listesinde sayfa başına görüntülenen örnek sayısını nasıl ayarlayabilirim?
Aşağıdaki adımlarda bir senkronizasyon örneği kullanılmıştır.
-
Hedef bölgenin senkronizasyon görevi listesi sayfasına gidin. Aşağıdaki iki yöntemden birini kullanabilirsiniz:
DTS konsolundan
Data Transmission Service (DTS) konsolu oturumunu açın.
Sol gezinme bölmesinde Data Synchronization seçeneğine tıklayın.
Sayfanın sol üst köşesinde senkronizasyon örneğinin bulunduğu bölgeyi seçin.
DMS konsolundan
NotGerçek işlemler, DMS konsolunun moduna ve düzenine göre değişebilir. Daha fazla bilgi için bkz. Basit mod ve DMS arayüzünün düzenini ve stilini özelleştirme.
Data Management (DMS) oturumunu açın.
Üst menü çubuğunda seçeneklerini belirleyin.
Data Synchronization Tasks öğesinin sağında senkronizasyon örneğinin bulunduğu bölgeyi seçin.
Sayfanın en altına kaydırın.
-
Sayfanın sağ alt köşesinde Items per page seçeneğini belirleyin.
NotItems per page değerini 10, 20 veya 50 olarak ayarlayabilirsiniz.
Bir DTS örneği ZooKeeper bağlantı zaman aşımı hatası bildirirse ne yapmalıyım?
Bağlantıyı yeniden kurmak için örneği yeniden başlatmayı deneyin. Bir örneği nasıl yeniden başlatacağınıza ilişkin talimatlar için bkz. DTS örneğini başlatma.
CEN'de silindikten sonra bir DTS CIDR bloğu neden otomatik olarak yeniden eklenir?
Bu durum, veritabanınızı DTS'ye bağlamak için Cloud Enterprise Network (CEN) üzerinden Basic Edition transit yönlendirici kullanıyorsanız meydana gelebilir. Bu veritabanını kullanarak bir DTS örneği oluşturursanız, CEN'de DTS CIDR bloğunu silseniz bile DTS sunucunun IP adres aralığını ilgili yönlendiriciye otomatik olarak ekler.
DTS görevleri dışa aktarılabilir mi?
Desteklenmez.
Java kullanarak bir OpenAPI'yi nasıl çağırabilirim?
Java'da bir OpenAPI çağrısı Python'a benzer. Python SDK çağrı örneği bölümüne bakın. Data Transmission Service DTS SDK sayfasına giderek All Languages içinden istediğiniz programlama dilini seçebilir ve örnek kodu görüntüleyebilirsiniz.
Bir senkronizasyon veya geçiş görevi için ETL özelliğini API kullanarak nasıl yapılandırabilirim?
Bu özelliği, Reserve parametresindeki etlOperatorCtl ve etlOperatorSetting gibi ortak parametreleri kullanarak yapılandırın. Bkz. ConfigureDtsJob ve Reserve parametresi açıklaması.
DTS Azure SQL Database'i destekliyor mu?
Evet, desteklemektedir. Azure SQL Database'i kaynak veritabanı olarak kullanmak için SQL Server Incremental Synchronization Mode seçeneğini Polling and querying CDC instances for incremental synchronization olarak ayarlayın.
DTS senkronizasyonu veya geçişi tamamlandıktan sonra kaynak veritabanındaki veriler korunur mu?
Evet. DTS, kaynak veritabanındaki verileri silmez. Kaynak veritabanındaki verilere artık ihtiyacınız yoksa bunları manuel olarak silebilirsiniz.
Bir senkronizasyon veya geçiş örneği çalışırken hız ayarlanabilir mi?
Evet, ayarlanabilir. Bkz. Geçiş hızını ayarlama.
DTS, senkronizasyon veya geçiş için zaman dilimine göre veri örneklemeyi destekliyor mu?
Hayır.
Verileri senkronize ederken veya geçirirken hedef veritabanında veri tablolarını manuel olarak oluşturmam gerekir mi?
Veritabanı ve tablo şeması görevlerini destekleyen DTS örnekleri (şema senkronizasyonu veya şema geçişi) için, Schema Synchronization altında Synchronization Types seçiliyse veya Schema Migration altında Migration Types seçiliyse hedef veritabanında veri tablolarını manuel olarak oluşturmanız gerekmez.
Verileri senkronize ederken veya geçirirken kaynak ve hedef veritabanlarının ağlarının bağlı olması gerekir mi?
Hayır, gerekmez.
Genel ağ kullanarak hesaplar arası bir DTS görevi yapılandırırken RAM yetkilendirmesi yapılandırmam gerekir mi?
Hayır, gerekmez. Bir DTS görevi yapılandırırken veritabanı örneğinin Access Method değerini Public IP Address olarak ayarlayabilir ve ardından yapılandırmayı tamamlayabilirsiniz.
Veri senkronizasyon görevleri, veritabanı örneğine Public IP Address yöntemiyle bağlanmayı desteklemez.
Veri senkronizasyonu veya geçişi için DTS kullanmak hedefteki mevcut verilerin üzerine yazar mı?
Veri senkronizasyonu için DTS'nin varsayılan davranışı ve ilgili parametreler aşağıdaki gibidir:
DTS varsayılan davranışı
Bir senkronizasyon görevi çalışırken birincil anahtar veya benzersiz anahtar çakışması oluşursa:
-
Tablo şemaları aynıysa ve hedef veritabanındaki bir kaydın birincil anahtar veya benzersiz anahtar değeri kaynak veritabanındaki bir kayıtla aynıysa:
Tam senkronizasyon sırasında DTS, hedef kümedeki kaydı korur. Kaynak veritabanından gelen ilgili kayıt senkronize edilmez.
Artımlı senkronizasyon sırasında kaynak veritabanından gelen kayıt, hedef veritabanındaki kaydın üzerine yazar.
Tablo şemaları farklıysa ilk veri senkronizasyonu başarısız olabilir. Bu durum, yalnızca kısmi sütun verilerinin senkronize edilmesiyle veya tam bir senkronizasyon hatasıyla sonuçlanabilir. Dikkatli ilerleyin.
İlgili parametreler
Görev yapılandırma sürecinde, DTS'nin mevcut tabloları nasıl işleyeceğini kontrol etmek için Processing Mode of Conflicting Tables parametresini kullanabilirsiniz.
-
Precheck and Report Errors: Hedef veritabanında aynı ada sahip bir tablonun olup olmadığını kontrol eder. Aynı ada sahip bir tablo yoksa ön kontrol geçer. Aynı ada sahip bir tablo varsa ön kontrol başarısız olur ve veri senkronizasyon görevi başlamaz.
NotHedef veritabanındaki aynı ada sahip tabloyu silemiyor veya yeniden adlandıramıyorsanız bunu farklı bir tablo adına eşleyebilirsiniz. Daha fazla bilgi için bkz. Tablo ve sütun adlarını eşleme.
-
Ignore Errors and Proceed: Hedef veritabanındaki yinelenen tablo adları kontrolünü atlar.
UyarıIgnore Errors and Proceed seçeneğini belirlemek veri tutarsızlığına neden olabilir ve işinizi riske atabilir. Örneğin:
-
Tablo şemaları aynıysa ve hedef veritabanındaki bir kaydın birincil anahtar veya benzersiz anahtar değeri kaynak veritabanındaki bir kayıtla aynıysa:
Tam senkronizasyon sırasında DTS, hedef kümedeki kaydı korur. Kaynak veritabanından gelen ilgili kayıt senkronize edilmez.
Artımlı senkronizasyon sırasında kaynak veritabanından gelen kayıt, hedef veritabanındaki kaydın üzerine yazar.
Tablo şemaları farklıysa ilk veri senkronizasyonu başarısız olabilir. Bu durum, yalnızca kısmi sütun verilerinin senkronize edilmesiyle veya tam bir senkronizasyon hatasıyla sonuçlanabilir. Dikkatli ilerleyin.
-
Öneri
Veri tutarlılığını sağlamak için iş operasyonlarınız izin veriyorsa DTS görevini yapılandırmadan önce hedef tabloyu silmenizi öneririz.
Kaynak ve hedef veritabanlarındaki mevcut veriler hiç çakışmıyorsa (örneğin, birden çok veritabanından tek bir veritabanına veri geçirirken) Schema Migration seçeneğini belirlemeden geçiş görevini yapılandırabilirsiniz. Ancak, kaynak ve hedef veritabanlarındaki birincil anahtarların ve benzersiz anahtarların çakışmadığından ve birincil anahtarı olmayan tablo bulunmadığından emin olmalısınız. Bu senaryoda, kaynak ve hedef veritabanlarındaki veriler zaten tutarsız olduğundan data verification özelliği düzgün çalışmaz.