Öğretici: İki yönetilen örnek arasında çoğaltmayı yapılandırma
Şunlar için geçerlidir: Azure SQL Yönetilen Örneği
İşlem çoğaltma, SQL Server veya Azure SQL Yönetilen Örneği üzerinde barındırılan bir veritabanındaki verileri başka bir veritabanına çoğaltmanıza olanak tanır. SQL Yönetilen Örneği, çoğaltma topolojisinde yayımcı, dağıtımcı veya abone olabilir. Kullanılabilir yapılandırmalar için bkz. işlem çoğaltma yapılandırmaları.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Yönetilen örneği çoğaltma yayımcısı ve dağıtımcısı olarak yapılandırın.
- Yönetilen örneği çoğaltma abonesi olarak yapılandırın.
Bu öğretici deneyimli bir hedef kitleye yöneliktir ve kullanıcının Hem yönetilen örneklere hem de Azure'da SQL Server VM'lerine dağıtım ve bağlanma konusunda bilgi sahibi olduğunu varsayar.
Not
- Bu makalede, Azure SQL Yönetilen Örneği işlem çoğaltması kullanımı açıklanmaktadır. Tek tek örneklerin tam okunabilir çoğaltmalarını oluşturmanıza olanak tanıyan bir Azure SQL Yönetilen Örneği özelliği olan yük devretme gruplarıyla ilgisi yoktur. Yük devretme gruplarıyla işlem çoğaltmasını yapılandırırken dikkat edilmesi gereken ek noktalar vardır.
Gereksinimler
SQL Yönetilen Örneği yayımcı ve/veya dağıtımcı işlevi görecek şekilde yapılandırmak için şunlar gerekir:
- Yayımcı tarafından yönetilen örneğin dağıtımcı ve abone ile aynı sanal ağda yer aldığı veya sanal ağ eşlemesi ya da VPN ağ geçitlerinin üç varlığın sanal ağları arasında yapılandırıldığı.
- Bağlantı, çoğaltma katılımcıları arasında SQL Kimlik Doğrulaması kullanır.
- Çoğaltma çalışma dizini için bir Azure depolama hesabı paylaşımı.
- Yönetilen örneklerin Azure dosya paylaşımına erişmesi için NSG'nin güvenlik kurallarında 445 numaralı bağlantı noktası (TCP giden) açık. hatasıyla
failed to connect to azure storage <storage account name> with os error 53
karşılaşırsanız, uygun SQL Yönetilen Örneği alt ağın NSG'sine bir giden kuralı eklemeniz gerekir.
1 - Kaynak grubu oluşturma
Adlı SQLMI-Repl
bir kaynak grubu oluşturmak için Azure portalını kullanın.
2 - Yönetilen örnekler oluşturma
Aynı sanal ağ ve alt ağda iki SQL Yönetilen Örneği oluşturmak için Azure portalını kullanın. Örneğin, yönetilen iki örneği adlandırın:
sql-mi-pub
(rastgele seçim için bazı karakterlerle birlikte)sql-mi-sub
(rastgele seçim için bazı karakterlerle birlikte)
Yönetilen örneklerinize bağlanmak için bir Azure VM yapılandırmanız da gerekir.
3 - Azure depolama hesabı oluşturma
Çalışma dizini için bir Azure depolama hesabı oluşturun ve ardından depolama hesabı içinde bir dosya paylaşımı oluşturun.
Dosya paylaşımı yolunu şu biçimde kopyalayın: \\storage-account-name.file.core.windows.net\file-share-name
Örnek: \\replstorage.file.core.windows.net\replshare
Depolama erişim anahtarlarını şu biçimde kopyalayın: DefaultEndpointsProtocol=https;AccountName=<Storage-Account-Name>;AccountKey=****;EndpointSuffix=core.windows.net
Örnek: DefaultEndpointsProtocol=https;AccountName=replstorage;AccountKey=dYT5hHZVu9aTgIteGfpYE64cfis0mpKTmmc8+EP53GxuRg6TCwe5eTYWrQM4AmQSG5lb3OBskhg==;EndpointSuffix=core.windows.net
Daha fazla bilgi için bkz . Depolama hesabı erişim anahtarlarını yönetme.
4 - Yayımcı veritabanı oluşturma
SQL Server Management Studio kullanarak yönetilen örneğine sql-mi-pub
bağlanın ve yayımcı veritabanınızı oluşturmak için aşağıdaki Transact-SQL (T-SQL) kodunu çalıştırın:
USE [master]
GO
CREATE DATABASE [ReplTran_PUB]
GO
USE [ReplTran_PUB]
GO
CREATE TABLE ReplTest (
ID INT NOT NULL PRIMARY KEY,
c1 VARCHAR(100) NOT NULL,
dt1 DATETIME NOT NULL DEFAULT getdate()
)
GO
USE [ReplTran_PUB]
GO
INSERT INTO ReplTest (ID, c1) VALUES (6, 'pub')
INSERT INTO ReplTest (ID, c1) VALUES (2, 'pub')
INSERT INTO ReplTest (ID, c1) VALUES (3, 'pub')
INSERT INTO ReplTest (ID, c1) VALUES (4, 'pub')
INSERT INTO ReplTest (ID, c1) VALUES (5, 'pub')
GO
SELECT * FROM ReplTest
GO
5 - Abone veritabanı oluşturma
SQL Server Management Studio kullanarak yönetilen örneğine sql-mi-sub
bağlanın ve boş abone veritabanınızı oluşturmak için aşağıdaki T-SQL kodunu çalıştırın:
USE [master]
GO
CREATE DATABASE [ReplTran_SUB]
GO
USE [ReplTran_SUB]
GO
CREATE TABLE ReplTest (
ID INT NOT NULL PRIMARY KEY,
c1 VARCHAR(100) NOT NULL,
dt1 DATETIME NOT NULL DEFAULT getdate()
)
GO
6 - Dağıtımı yapılandırma
SQL Server Management Studio kullanarak yönetilen örneğine sql-mi-pub
bağlanın ve dağıtım veritabanınızı yapılandırmak için aşağıdaki T-SQL kodunu çalıştırın.
USE [master]
GO
EXEC sp_adddistributor @distributor = @@ServerName;
EXEC sp_adddistributiondb @database = N'distribution';
GO
7 - Yayımcıyı dağıtımcı kullanacak şekilde yapılandırma
Yayımcınızın SQL Yönetilen Örneği sql-mi-pub
sorgu yürütmeyi SQLCMD moduna değiştirin ve aşağıdaki kodu çalıştırarak yeni dağıtımcıyı yayımcınıza kaydedin.
:setvar username loginUsedToAccessSourceManagedInstance
:setvar password passwordUsedToAccessSourceManagedInstance
:setvar file_storage "\\storage-account-name.file.core.windows.net\file-share-name"
-- example: file_storage "\\replstorage.file.core.windows.net\replshare"
:setvar file_storage_key "DefaultEndpointsProtocol=https;AccountName=<Storage-Account-Name>;AccountKey=****;EndpointSuffix=core.windows.net"
-- example: file_storage_key "DefaultEndpointsProtocol=https;AccountName=replstorage;AccountKey=dYT5hHZVu9aTgIteGfpYE64cfis0mpKTmmc8+EP53GxuRg6TCwe5eTYWrQM4AmQSG5lb3OBskhg==;EndpointSuffix=core.windows.net"
USE [master]
EXEC sp_adddistpublisher
@publisher = @@ServerName,
@distribution_db = N'distribution',
@security_mode = 0,
@login = N'$(username)',
@password = N'$(password)',
@working_directory = N'$(file_storage)',
@storage_connection_string = N'$(file_storage_key)'; -- Remove this parameter for on-premises publishers
Not
file_storage parametresi için yalnızca ters eğik çizgi (\
) kullandığınızdan emin olun. Eğik çizgi (/
) kullanmak, dosya paylaşımına bağlanırken hataya neden olabilir.
Bu betik yönetilen örnekte yerel bir yayımcı yapılandırıyor, bağlantılı bir sunucu ekliyor ve SQL Server aracısı için bir iş kümesi oluşturuyor.
8 - Yayın ve abone oluşturma
SQLCMD modunu kullanarak veritabanınızda çoğaltmayı etkinleştirmek ve yayımcınız, dağıtımcınız ve aboneniz arasında çoğaltmayı yapılandırmak için aşağıdaki T-SQL betiğini çalıştırın.
-- Set variables
:setvar username sourceLogin
:setvar password sourcePassword
:setvar source_db ReplTran_PUB
:setvar publication_name PublishData
:setvar object ReplTest
:setvar schema dbo
:setvar target_server "sql-mi-sub.wdec33262scj9dr27.database.windows.net"
:setvar target_username targetLogin
:setvar target_password targetPassword
:setvar target_db ReplTran_SUB
-- Enable replication for your source database
USE [$(source_db)]
EXEC sp_replicationdboption
@dbname = N'$(source_db)',
@optname = N'publish',
@value = N'true';
-- Create your publication
EXEC sp_addpublication
@publication = N'$(publication_name)',
@status = N'active';
-- Configure your log reader agent
EXEC sp_changelogreader_agent
@publisher_security_mode = 0,
@publisher_login = N'$(username)',
@publisher_password = N'$(password)',
@job_login = N'$(username)',
@job_password = N'$(password)';
-- Add the publication snapshot
EXEC sp_addpublication_snapshot
@publication = N'$(publication_name)',
@frequency_type = 1,
@publisher_security_mode = 0,
@publisher_login = N'$(username)',
@publisher_password = N'$(password)',
@job_login = N'$(username)',
@job_password = N'$(password)';
-- Add the ReplTest table to the publication
EXEC sp_addarticle
@publication = N'$(publication_name)',
@type = N'logbased',
@article = N'$(object)',
@source_object = N'$(object)',
@source_owner = N'$(schema)';
-- Add the subscriber
EXEC sp_addsubscription
@publication = N'$(publication_name)',
@subscriber = N'$(target_server)',
@destination_db = N'$(target_db)',
@subscription_type = N'Push';
-- Create the push subscription agent
EXEC sp_addpushsubscription_agent
@publication = N'$(publication_name)',
@subscriber = N'$(target_server)',
@subscriber_db = N'$(target_db)',
@subscriber_security_mode = 0,
@subscriber_login = N'$(target_username)',
@subscriber_password = N'$(target_password)',
@job_login = N'$(username)',
@job_password = N'$(password)';
-- Initialize the snapshot
EXEC sp_startpublication_snapshot
@publication = N'$(publication_name)';
9 - Aracı parametrelerini değiştirme
Azure SQL Yönetilen Örneği şu anda çoğaltma aracılarıyla bağlantıda bazı arka uç sorunları yaşıyor. Bu sorun giderilirken geçici çözüm, çoğaltma aracıları için oturum açma zaman aşımı değerini artırmaktır.
Yayımcıda aşağıdaki T-SQL komutunu çalıştırarak oturum açma zaman aşımını artırın:
-- Increase login timeout to 150s
update msdb..sysjobsteps set command = command + N' -LoginTimeout 150'
where subsystem in ('Distribution','LogReader','Snapshot') and command not like '%-LoginTimeout %'
Oturum açma zaman aşımını varsayılan değere geri ayarlamak için aşağıdaki T-SQL komutunu yeniden çalıştırın. Bunu yapmanız gerekirse:
-- Increase login timeout to 30
update msdb..sysjobsteps set command = command + N' -LoginTimeout 30'
where subsystem in ('Distribution','LogReader','Snapshot') and command not like '%-LoginTimeout %'
Bu değişiklikleri uygulamak için üç aracıyı da yeniden başlatın.
10 - Çoğaltmayı test et
Çoğaltma yapılandırıldıktan sonra yayımcıya yeni öğeler ekleyerek ve değişikliklerin aboneye yayılmasını izleyerek bunu test edebilirsiniz.
Abonedeki satırları görüntülemek için aşağıdaki T-SQL kod parçacığını çalıştırın:
select * from dbo.ReplTest
Yayımcıya ek satırlar eklemek için aşağıdaki T-SQL kod parçacığını çalıştırın ve sonra abonedeki satırları yeniden denetleyin.
INSERT INTO ReplTest (ID, c1) VALUES (15, 'pub')
Kaynakları temizleme
Yayını bırakmak için aşağıdaki T-SQL komutunu çalıştırın:
-- Drops the publication
USE [ReplTran_PUB]
EXEC sp_droppublication @publication = N'PublishData'
GO
Çoğaltma seçeneğini veritabanından kaldırmak için aşağıdaki T-SQL komutunu çalıştırın:
-- Disables publishing of the database
USE [ReplTran_PUB]
EXEC sp_removedbreplication
GO
Yayımlamayı ve dağıtımı devre dışı bırakmak için aşağıdaki T-SQL komutunu çalıştırın:
-- Drops the distributor
USE [master]
EXEC sp_dropdistributor @no_checks = 1
GO
Kaynak grubundan SQL Yönetilen Örneği kaynaklarını silip kaynak grubunu SQLMI-Repl
silerek Azure kaynaklarınızı temizleyebilirsiniz.
Sonraki adımlar
Ayrıca Azure SQL Yönetilen Örneği ile işlem çoğaltması hakkında daha fazla bilgi edinebilir veya SQL Yönetilen Örneği yayımcı/dağıtımcı ile Azure VM abonesi üzerindeki SQL arasında çoğaltmayı yapılandırmayı öğrenebilirsiniz.