Aracılığıyla paylaş


Azure SQL Yönetilen Örneği ile işlem çoğaltması

Şunlar için geçerlidir:Azure SQL Yönetilen Örneği

İşlem çoğaltma, Azure SQL Yönetilen Örneği ve SQL Server'ın, Azure SQL Yönetilen Örneği veya SQL Server örneğindeki bir tablodan uzak veritabanlarına yerleştirilen tablolara veri çoğaltmanıza olanak tanıyan bir özelliğidir. Bu özellik farklı veritabanlarında yer alan birden fazla tabloyu eşitlemenizi sağlar.

Genel bakış

Azure SQL yönetilen örneğinde yapılan değişiklikleri aşağıdakilere göndermek için işlem çoğaltmasını kullanabilirsiniz:

  • SQL Server veritabanı (şirket içinde veya Azure Sanal Makinesinde)
  • Azure SQL Veritabanı'nda yer alan bir veritabanı
  • Azure SQL Yönetilen Örneğinde yer alan bir örnek veritabanı

Not

Azure SQL Yönetilen Örneği tüm özelliklerini kullanmak için SQL Server Management Studio (SSMS) ve SQL Server Veri Araçları (SSDT) sürümlerini kullanmanız gerekir.

Bileşenler

İşlem çoğaltmasının temel bileşenleri, aşağıdaki resimde gösterildiği gibi Yayımcı, Dağıtımcı ve Abone'dir:

Azure SQL ile çoğaltma diyagramı.

Rol Azure SQL Veritabanı Azure SQL Yönetilen Örnek
Yayımcı Hayır Yes
Dağıtımcı Hayır Yes
Çekme abonesi Hayır Yes
Gönderme abonesi Yes Yes

Yayımcı, güncelleştirmeleri Dağıtımcıya göndererek bazı tablolarda (makaleler) yapılan değişiklikleri yayımlar. Yayımcı, Azure SQL yönetilen örneği veya SQL Server örneği olabilir.

Dağıtımcı, bir Yayımcı'dan makalelerdeki değişiklikleri toplar ve bunları Abonelere dağıtır. Dağıtımcı bir Azure SQL yönetilen örneği veya SQL Server örneği (Publisher sürümüne eşit veya daha yüksek olduğu sürece herhangi bir sürüm) olabilir.

Abone, Yayımcı'da yapılan değişiklikleri alır. Sql Server örneği ve Azure SQL yönetilen örneği hem gönderme hem de çekme aboneleri olabilir, ancak dağıtımcı bir Azure SQL yönetilen örneği olduğunda ve abone desteklenmediğinde çekme aboneliği desteklenmez. Azure SQL Veritabanı'deki bir veritabanı yalnızca anında iletme abonesi olabilir.

Azure SQL Yönetilen Örneği aşağıdaki SQL Server sürümlerinden abone olmayı destekleyebilir:

Not

Azure'daki nesnelere yayımlamayı desteklemeyen diğer SQL Server sürümlerinde, verileri SQL Server'ın daha yeni sürümlerine taşımak için veri yeniden yayımlama yöntemini kullanabilirsiniz.

Eski bir sürümü kullanarak çoğaltmayı yapılandırmaya çalışmak hataya MSSQL_REPL20084 neden olabilir (İşlem Aboneye bağlanamadı) ve MSSQL_REPL40532 (Oturum açma tarafından istenen sunucu <adı> açılamıyor. Oturum açma başarısız oldu).

Çoğaltma türleri

Farklı çoğaltma türleri vardır:

Çoğaltma Azure SQL Veritabanı Azure SQL Yönetilen Örnek
Standart işlem Evet (yalnızca abone olarak) Yes
Anlık Görüntü Evet (yalnızca abone olarak) Yes
Birleştirme çoğaltması Hayır Hayır
Eşler arası Hayır Hayır
Çift Yönlü Hayır Yes
Güncelleştirilebilir abonelikler Hayır Hayır

Desteklenebilirlik matrisi

Azure SQL Yönetilen Örneği için işlem çoğaltması desteklenebilirlik matrisi, SQL Server ile aynıdır.

Yayımcı Dağıtımcı Abone
SQL Server 2022 SQL Server 2022 SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2019 SQL Server 2022
SQL Server 2019
SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2017 SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2016 SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2014 SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2012 SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2008 R2
SQL Server 2008
SQL Server 2022
SQL Server 2019
SQL Server 2017
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
SQL Server 2008

ne zaman kullanılmalı

İşlem çoğaltması aşağıdaki senaryolarda yararlıdır:

  • Veritabanındaki bir veya daha fazla tabloda yapılan değişiklikleri yayımlayın ve bunları SQL Server örneğindeki veya değişikliklere abone olan Azure SQL Veritabanı bir veya daha fazla veritabanına dağıtın.
  • Çeşitli dağıtılmış veritabanlarını eşitlenmiş durumda tutun.
  • Değişiklikleri sürekli yayımlayarak veritabanlarını bir SQL Server örneğinden veya Azure SQL Yönetilen Örneği başka bir veritabanına geçirin.

Data Sync'i işlem çoğaltmasıyla karşılaştırma

Kategori Data Sync İşlem çoğaltması
Avantajlar - Etkin-etkin destek
- Şirket içi ile Azure SQL Veritabanı arasında çift yönlü
- Daha düşük gecikme süresi
- İşlem tutarlılığı
- Geçiş sonrasında mevcut topolojiyi yeniden kullanma
Dezavantajlar - İşlem tutarlılığı yok
- Daha yüksek performans etkisi
- Azure SQL Veritabanı'dan yayımlanamıyor
- Yüksek bakım maliyeti

Ortak yapılandırmalar

Genel olarak yayımcı ve dağıtımcı bulutta veya şirket içinde olmalıdır. Aşağıdaki yapılandırmalar desteklenir:

SQL Yönetilen Örneği'de yerel Dağıtımcı ile Publisher

Publisher ve Distributor olarak tek örnek.

Yayımcı ve dağıtımcı, tek bir SQL yönetilen örneği içinde yapılandırılır ve değişiklikleri başka bir SQL yönetilen örneğine, SQL Veritabanı veya SQL Server örneğine dağıtır.

SQL Yönetilen Örneği'da uzak dağıtımcılı Publisher

Bu yapılandırmada, bir SQL yönetilen örneği, birçok kaynak SQL yönetilen örneğine hizmet verebilen ve değişiklikleri Azure SQL Veritabanı, Azure SQL Yönetilen Örneği veya SQL Server'daki bir veya birden çok hedefe dağıtabilen başka bir SQL yönetilen örneğine yerleştirilen dağıtımcıya değişiklikler yayımlar.

Publisher ve Distributor için ayrı örnekler.

Yayımcı ve dağıtımcı iki yönetilen örnekte yapılandırılır. Bu yapılandırmayla ilgili bazı kısıtlamalar vardır:

  • Her iki yönetilen örnek de aynı sanal ağda yer alır.
  • Her iki yönetilen örnek de aynı konumdadır.

Uzak aboneye sahip şirket içi Yayımcı/Dağıtımcı

Abone olarak Azure SQL Veritabanı.

Bu yapılandırmada, Azure SQL Veritabanı veya Azure SQL Yönetilen Örneği bir veritabanı abonedir. Bu yapılandırma, şirket içinden Azure'a geçişi destekler. Abone Azure SQL Veritabanı bir veritabanıysa, gönderme modunda olmalıdır.

Gereksinimler

  • Çoğaltma katılımcıları arasındaki bağlantı için SQL Kimlik Doğrulamasını kullanın.
  • Çoğaltma tarafından kullanılan çalışma dizini için bir Azure Depolama Hesabı paylaşımı kullanın.
  • Azure dosya paylaşımına erişmek için alt ağ güvenlik kurallarında TCP giden bağlantı noktası 445'i açın.
  • SQL yönetilen örneği Yayımcı/Dağıtımcı olduğunda ve Abone olmadığında TCP giden bağlantı noktası 1433'i açın. 1433 bağlantı noktası Hedef Hizmeti etiketi için allow_linkedserver_outbound SQL yönetilen örneği NSG giden güvenlik kuralını olarak virtualnetworkinternetda değiştirmeniz gerekebilir.
  • Hem yayımcıyı hem de dağıtımcıyı buluta veya her ikisini de şirket içine yerleştirin.
  • Sanal ağlar farklıysa çoğaltma katılımcılarının sanal ağları arasında VPN eşlemesini yapılandırın.

Not

Dağıtımcı bir Azure SQL Yönetilen Örneği veritabanı ve abone şirket içinde olduğunda giden ağ güvenlik grubu (NSG) bağlantı noktası 445 engellenirse Azure Depolama Dosyasına bağlanırken 53 hatasıyla karşılaşabilirsiniz. Bu sorunu çözmek için sanal ağ NSG'sini güncelleştirin.

Güvenlik

Oturum açın: replAgentUser

İşlem çoğaltması amacıyla, Kasım 2022 özellik dalgası etkinleştirilmiş bir SQL yönetilen örneğinde adıyla replAgentUserönceden oluşturulmuş oturum açma bilgileri vardır. Bu oturum açma, sunucu rolünün sysadmin bir üyesidir ve işlem çoğaltma kurulumuna katılan SQL yönetilen örneğine bağlanması gereken çoğaltma aracıları tarafından kullanılır.

İşlem çoğaltması kullanılmazsa oturum açma replAgentUser devre dışı bırakılabilir. İşlem çoğaltmasını kullanmaya başlamaya karar verirseniz daha sonra yeniden etkinleştirilebilir.

Sınırlamalar

İşlem çoğaltması, Azure SQL Yönetilen Örneği özgü bazı sınırlamalara sahiptir. Bu bölümde bu sınırlamalar hakkında daha fazla bilgi edinin.

Anlık görüntü dosyaları Azure Depolama Hesabından silinmiyor

Azure SQL Yönetilen Örneği, işlem çoğaltması için kullanılan anlık görüntü dosyaları için kullanıcı tarafından yapılandırılmış Azure Depolama Hesabı kullanıyor. Şirket içi ortamdaki SQL Server'dan farklı olarak, Azure SQL Yönetilen Örneği Azure Depolama Hesabından anlık görüntü dosyalarını sılmıyor. Dosyalar artık gerekli olmadığında bunları silmeniz gerekir. Bu işlem Azure portalındaki Azure Depolama arabirimi, Microsoft Azure Depolama Gezgini veya komut satırı istemcileri (Azure PowerShell veya CLI) ya da Azure Depolama Yönetimi REST API'siyle yapılabilir.

Burada, dosyayı nasıl silebileceğinize ve boş bir klasörü nasıl silebileceğinize yönelik bir örnek verilmiştır.

az storage file delete-batch --source <file_path> --account-key <account_key> --account-name <account_name>
az storage directory delete --name <directory_name> --share-name <share_name> --account-key <account_key> --account-name <account_name>

Sürekli çalışan dağıtım aracılarının sayısı

Sürekli çalışacak şekilde yapılandırılan dağıtım aracılarının sayısı Azure SQL Yönetilen Örneği 30 ile sınırlıdır. Daha fazla dağıtım aracısına sahip olmak için isteğe bağlı olarak veya tanımlanmış bir zamanlamayla çalışması gerekir. Zamanlama, her 10 saniyede bir (veya daha fazla) günlük sıklık ve oluşumla tanımlanabilir, bu nedenle sürekli olmasa bile, gecikme süresi yalnızca birkaç saniye olan dağıtımcıya sahip olabilirsiniz. Çok sayıda dağıtımcı gerektiğinde, sürekli yapılandırmayı değil zamanlanmış yapılandırmayı kullanmanız önerilir.

Yük devretme gruplarıyla

Yük devretme grubundaki örneklerle işlem çoğaltması kullanılması desteklenir. Ancak, SQL yönetilen örneğinizi bir yük devretme grubuna eklemeden önce çoğaltmayı yapılandırırsanız, yük devretme grubunuzu oluşturmaya başladığınızda çoğaltma duraklatılır ve çoğaltma izleyicisi Replicated transactions are waiting for the next log backup or for mirroring partner to catch updurumunu gösterir. Yük devretme grubu başarıyla oluşturulduktan sonra çoğaltma devam eder.

Yayımcı veya dağıtımcı SQL yönetilen örneği bir yük devretme grubundaysa, SQL yönetilen örneği yöneticisinin eski birincildeki tüm yayınları temizlemesi ve bir yük devretme gerçekleştikten sonra bunları yeni birincilde yeniden yapılandırması gerekir. Bu senaryoda aşağıdaki etkinlikler gereklidir:

  1. Varsa, veritabanında çalışan tüm çoğaltma işlerini durdurun.

  2. Yayımcı veritabanında aşağıdaki betiği çalıştırarak yayımcıdan abonelik meta verilerini bırakın. <name of publication> ve <name of subscriber> değerlerini değiştirin:

    EXEC sp_dropsubscription @publication = '<name of publication>',
        @article = 'all',
        @subscriber = '<name of subscriber>'
    
  3. Aboneden abonelik meta verilerini bırakın. Abone SQL yönetilen örneğinde abonelik veritabanında aşağıdaki betiği çalıştırın. <full DNS of publisher> değerini değiştirin. Örneğin, example.ac2d23028af5.database.windows.net:

    EXEC sp_subscription_cleanup
       @publisher = N'<full DNS of publisher>',
       @publisher_db = N'<publisher database>',
       @publication = N'<name of publication>';
    
  4. Yayımlanan veritabanında aşağıdaki betiği çalıştırarak yayımcıdan tüm çoğaltma nesnelerini zorla bırakın:

    EXEC sp_removedbreplication;
    
  5. Eski dağıtımcıyı özgün birincil SQL yönetilen örneğinden zorla bırakın (dağıtımcıya sahip olan eski bir birincil sunucuya yeniden yük devrediliyorsa). Eski dağıtımcı SQL yönetilen örneğindeki veritabanında aşağıdaki betiği master çalıştırın:

    EXEC sp_dropdistributor 1, 1;
    

Abone SQL yönetilen örneği bir yük devretme grubundaysa yayın, abone SQL yönetilen örneğinin yük devretme grubu dinleyici uç noktasına bağlanacak şekilde yapılandırılmalıdır. Yük devretme durumunda, SQL yönetilen örneği yöneticisinin sonraki eylemi, gerçekleşen yük devretme türüne bağlıdır:

  • Veri kaybı olmayan bir yük devretme için çoğaltma, yük devretmeden sonra çalışmaya devam eder.
  • Veri kaybı olan bir yük devretme için çoğaltma da çalışır. Kayıp değişiklikleri yeniden çoğaltır.
  • Veri kaybıyla birlikte yük devretme için ancak veri kaybı dağıtım veritabanı saklama süresinin dışındaysa, SQL yönetilen örneği yöneticisinin abonelik veritabanını yeniden başlatması gerekir.

Yaygın sorunları giderme

İşlem günlüğü ve İşlem Çoğaltması

Her zamanki durumlarda, bir veritabanındaki veri değişikliklerini kaydetmek için dönüştürme günlüğü kullanılır. Değişiklikler işlem günlüğüne kaydedilir ve bu da günlük depolama tüketiminin artmasına neden olur. Ayrıca işlem günlüğünün güvenli bir şekilde kesilmesine izin veren bir otomatik işlem vardır ve bu işlem günlük için kullanılan depolama alanını azaltır. İşlem Çoğaltması için yayımlama yapılandırılırken, günlükteki değişiklikler günlük okuyucu işi tarafından işlenene kadar işlem günlüğü kesilmesi engellenir. Bazı durumlarda işlem günlüğünün işlenmesi etkili bir şekilde engellenir ve bu durum işlem günlüğü için ayrılmış depolama alanının tamamının doldurulmasına neden olabilir. İşlem günlüğü için boş alan olmadığında ve işlem günlüğünün büyümesi için daha fazla alan kalmadığında, tam işlem günlüğü elde ederiz. Bu durumda veritabanı artık herhangi bir yazma iş yükünü işleyemez ve etkili bir şekilde salt okunur veritabanı olur.

Devre dışı bırakılmış günlük okuyucu aracısı

Bazen İşlem Çoğaltma yayını bir veritabanı için yapılandırılır, ancak günlük okuyucu aracısı çalıştırılacak şekilde yapılandırılmaz. Bu durumda, değişiklikler işlem günlüğünde birikiyor ve işlenmiyor. Bu işlem günlüğünün sürekli büyümesine ve sonunda tam dönüştürme günlüğüne yol açar. Kullanıcı, günlük okuyucu işinin var olduğundan ve etkin olduğundan emin olmalıdır. Alternatif olarak, gerekli değilse İşlem Çoğaltma'yı devre dışı bırakabilirsiniz.

Günlük okuyucu aracısı sorgu zaman aşımları

Bazen yinelenen sorgu zaman aşımları nedeniyle günlük okuyucu işi etkili bir ilerleme kaydedemez. Sorgu zaman aşımlarını düzeltmenin bir yolu, günlük okuyucu aracısı işi için sorgu zaman aşımı ayarını artırmaktır.

Günlük okuyucu işi için sorgu zaman aşımını artırma işlemi SSMS ile yapılabilir. Nesne gezgininde, SQL Server Aracısı'nın altında değiştirmek istediğiniz işi bulun. Önce durdurun ve ardından özelliklerini açın. Bulun step 2 ve düzenleyin. komut değerini ile ekleme -QueryTimeout <timeout_in_seconds>. Sorgu zaman aşımı değeri için veya üzerini deneyin 21600 . Son olarak, işi yeniden başlatın.

Günlük depolama boyutu en fazla 2 TB sınırına ulaştı

İşlem günlüğü depolama boyutu 2 TB olan maksimum sınıra ulaştığında, fiziksel olarak günlük bundan daha fazla büyüyemez. Bu durumda, işlem günlüğünün kesilmesine izin vermek için, kullanılabilir tek azaltma, işlendi olarak çoğaltılacak tüm işlemleri işaretlemektir. Bu, günlükteki kalan işlemlerin çoğaltılmayacağı ve çoğaltmayı yeniden başlatmanız gerektiği anlamına gelir.

Not

Azaltmayı gerçekleştirdikten sonra çoğaltmayı yeniden başlatmanız gerekir; bu da veri kümesinin tamamını yeniden çoğaltma anlamına gelir. Bu, veri işleminin boyutudur ve çoğaltılması gereken veri miktarına bağlı olarak uzun süre çalışıyor olabilir.

Azaltmayı gerçekleştirmek için önce dağıtımcıdaki günlük okuyucu aracısını durdurmanız gerekir. Ardından, işlem günlüğünün kesilmesine sp_repldone izin vermek için 1 yayımcı veritabanında bayrağı ayarlanmış saklı yordamı reset çalıştırmanız gerekir. Bu komut şuna EXEC sp_repldone @xactid = NULL, @xact_seqno = NULL, @numtrans = 0, @time = 0, @reset = 1benzer olmalıdır. Bundan sonra çoğaltmayı yeniden başlatmanız gerekir.

Sonraki adımlar

İşlem çoğaltmasını yapılandırma hakkında daha fazla bilgi için aşağıdaki öğreticilere bakın: