Aracılığıyla paylaş


Öğ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.

İki yönetilen örnek arasında çoğaltma

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

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 53karşı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-Replbir 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-pubsorgu 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-Replsilerek 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.