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:
Rol | Azure SQL Veritabanı | Azure SQL Yönetilen Örnek |
---|---|---|
Yayımcı | Hayır | Yes |
Dağıtıcı | 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:
- SQL Server 2016 ve sonraki sürümleri
- SQL Server 2014 RTM CU10 (12.0.4427.24) veya SP1 CU3 (12.0.2556.4)
- SQL Server 2012 SP2 CU8 (11.0.5634.1) veya SP3 (11.0.6020.0) veya SP4 (11.0.7001.0)
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ıcı | 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
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.
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ı
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ı olarakvirtualnetwork
internet
da 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, 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 up
durumunu 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:
Varsa, veritabanında çalışan tüm çoğaltma işlerini durdurun.
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>'
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>';
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;
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 = 1
benzer 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:
- SQL Yönetilen Örneği yayımcısı ile abone arasında çoğaltmayı yapılandırın.
- SQL Yönetilen Örneği yayımcısı, SQL Yönetilen Örneği dağıtımcısı ve SQL Server abonesi arasında çoğaltmayı yapılandırın.
- Yayın oluşturun.
- Sunucu adını abone (örneğin
N'azuresqldbdns.database.windows.net
) ve Azure SQL Veritabanı adındaki veritabanını hedef veritabanı (örneğin)Adventureworks
olarak kullanarak bir anında iletme aboneliği oluşturun.