Öğretici: Azure SQL Yönetilen Örneği ile SQL Server arasında işlem çoğaltmayı yapılandırma

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

İşlem çoğaltma, verileri bir veritabanından SQL Server veya Azure SQL Yönetilen Örneği üzerinde barındırılan 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 şunların nasıl yapıldığını öğreneceksiniz:

  • Yönetilen örneği çoğaltma yayımcısı olarak yapılandırma.
  • Yönetilen örneği çoğaltma dağıtımcısı olarak yapılandırın.
  • SQL Server abone olarak yapılandırın.

Yönetilen örnek yayımcısı, yönetilen örnek dağıtımcısı ve SQL Server abonesi 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'lere dağıtım ve bağlanma konusunda bilgi sahibi olduğunu varsayar.

Not

Bu makalede, Azure SQL Yönetilen Örneği'de 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.

Önkoşullar

Öğreticiyi tamamlamak için aşağıdaki önkoşullara sahip olduğunuzdan emin olun:

Kaynak grubunu oluşturma

Yeni bir kaynak grubu oluşturmak için aşağıdaki PowerShell kod parçacığını kullanın:

# set variables
$ResourceGroupName = "SQLMI-Repl"
$Location = "East US 2"

# Create a new resource group
New-AzResourceGroup -Name  $ResourceGroupName -Location $Location

İki yönetilen örnek oluşturma

Azure portal kullanarak bu yeni kaynak grubu içinde iki yönetilen örnek oluşturun.

  • Yayımcı tarafından yönetilen örneğin sql-mi-publisher adı (rastgele oluşturma için birkaç karakterle birlikte) ve sanal ağın adı olmalıdır vnet-sql-mi-publisher.

  • Dağıtımcı yönetilen örneğin sql-mi-distributor adı (rastgele seçme için birkaç karakterle birlikte) ve yayımcı tarafından yönetilen örnekle aynı sanal ağda olmalıdır.

    Dağıtımcı için yayımcı VNet'ini kullanma

Yönetilen örnek oluşturma hakkında daha fazla bilgi için bkz. Portalda yönetilen örnek oluşturma.

Not

Basitlik açısından ve en yaygın yapılandırma olduğundan, bu öğretici dağıtımcı yönetilen örneğin yayımcıyla aynı sanal ağa yerleştirilmesini önerir. Ancak dağıtımcıyı ayrı bir sanal ağda oluşturmak mümkündür. Bunu yapmak için yayımcı ile dağıtımcının sanal ağları arasında sanal ağ eşlemesini yapılandırmanız ve ardından dağıtımcı ile abonenin sanal ağları arasında sanal ağ eşlemesini yapılandırmanız gerekir.

SQL Server VM oluşturma

Azure portal kullanarak SQL Server bir sanal makine oluşturun. SQL Server sanal makinesi aşağıdaki özelliklere sahip olmalıdır:

  • Ad: sql-vm-sub
  • Resim: SQL Server 2016 veya üzeri
  • Kaynak grubu: yönetilen örnekle aynı
  • Sanal ağ: sql-vm-sub-vnet

SQL Server VM'sini Azure'a dağıtma hakkında daha fazla bilgi için bkz. Hızlı Başlangıç: SQL Server VM oluşturma.

Sanal ağ eşlemesini yapılandırma

İki yönetilen örneğin sanal ağı ile SQL Server sanal ağı arasında iletişimi etkinleştirmek için sanal ağ eşlemesini yapılandırın. Bunu yapmak için şu PowerShell kod parçacığını kullanın:

# Set variables
$SubscriptionId = '<SubscriptionID>'
$resourceGroup = 'SQLMI-Repl'
$pubvNet = 'sql-mi-publisher-vnet'
$subvNet = 'sql-vm-sub-vnet'
$pubsubName = 'Pub-to-Sub-Peer'
$subpubName = 'Sub-to-Pub-Peer'

$virtualNetwork1 = Get-AzVirtualNetwork `
  -ResourceGroupName $resourceGroup `
  -Name $pubvNet

 $virtualNetwork2 = Get-AzVirtualNetwork `
  -ResourceGroupName $resourceGroup `
  -Name $subvNet  

# Configure VNet peering from publisher to subscriber
Add-AzVirtualNetworkPeering `
  -Name $pubsubName `
  -VirtualNetwork $virtualNetwork1 `
  -RemoteVirtualNetworkId $virtualNetwork2.Id

# Configure VNet peering from subscriber to publisher
Add-AzVirtualNetworkPeering `
  -Name $subpubName `
  -VirtualNetwork $virtualNetwork2 `
  -RemoteVirtualNetworkId $virtualNetwork1.Id

# Check status of peering on the publisher VNet; should say connected
Get-AzVirtualNetworkPeering `
 -ResourceGroupName $resourceGroup `
 -VirtualNetworkName $pubvNet `
 | Select PeeringState

# Check status of peering on the subscriber VNet; should say connected
Get-AzVirtualNetworkPeering `
 -ResourceGroupName $resourceGroup `
 -VirtualNetworkName $subvNet `
 | Select PeeringState

Sanal ağ eşlemesi oluşturulduktan sonra, SQL Server üzerinde SQL Server Management Studio (SSMS) başlatıp her iki yönetilen örneğe bağlanarak bağlantıyı test edin. SSMS kullanarak yönetilen örneğe bağlanma hakkında daha fazla bilgi için bkz. SQL Yönetilen Örneği bağlanmak için SSMS kullanma.

Yönetilen örneklere bağlantıyı test etme

Özel DNS bölgesi oluşturma

Özel DNS bölgesi, yönetilen örnekler ve SQL Server arasında DNS yönlendirmesine olanak tanır.

Özel DNS bölgesi oluşturma

  1. Azure portal oturum açın.

  2. Yeni bir Azure kaynağı oluşturmak için Kaynak oluştur'u seçin.

  3. private dns zone Azure Market arama.

  4. Microsoft tarafından yayımlanan Özel DNS bölgesi kaynağını seçin ve ardından OLUŞTUR'u seçerek DNS bölgesini oluşturun.

  5. Açılan listeden aboneliği ve kaynak grubunu seçin.

  6. DNS bölgeniz repldns.comiçin gibi rastgele bir ad sağlayın.

    Özel DNS bölgesi oluşturma

  7. Gözden geçir ve oluştur’u seçin. Özel DNS bölgenizin parametrelerini gözden geçirin ve oluştur'u seçerek kaynağınızı oluşturun.

A kaydı oluşturma

  1. Yeni Özel DNS bölgenize gidin ve Genel Bakış'ı seçin.

  2. Yeni bir A kaydı oluşturmak için + Kayıt kümesi'ni seçin.

  3. SQL Server VM'nizin adını ve özel iç IP adresini belirtin.

    A kaydını yapılandırma

  4. A kaydını oluşturmak için Tamam'ı seçin.

  1. Yeni Özel DNS bölgenize gidin ve Sanal ağ bağlantıları'na tıklayın.

  2. + Ekle'yi seçin.

  3. Bağlantı için gibi Pub-linkbir ad sağlayın.

  4. Açılan listeden aboneliğinizi seçin ve ardından yayımcı tarafından yönetilen örneğiniz için sanal ağı seçin.

  5. Otomatik kaydı etkinleştir'in yanındaki kutuyu işaretleyin.

    VNet bağlantısı oluşturma

  6. Sanal ağınızı bağlamak için Tamam'ı seçin.

  7. Abone sanal ağına gibi Sub-linkbir adla bağlantı eklemek için bu adımları yineleyin.

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 anahtarı bağlantı dizesini ş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.

Veritabanı oluşturma

Yayımcı tarafından yönetilen örnekte yeni bir veritabanı oluşturun. Bunu yapmak için aşağıdaki adımları izleyin:

  1. SQL Server'da SQL Server Management Studio başlatın.
  2. Yönetilen örneğe bağlanın sql-mi-publisher .
  3. Yeni Sorgu penceresi açın ve aşağıdaki T-SQL sorgusunu yürüterek veritabanını oluşturun.
-- Create the databases
USE [master]
GO

-- Drop database if it exists
IF EXISTS (SELECT * FROM sys.sysdatabases WHERE name = 'ReplTutorial')
BEGIN
    DROP DATABASE ReplTutorial
END
GO

-- Create new database
CREATE DATABASE [ReplTutorial]
GO

-- Create table
USE [ReplTutorial]
GO
CREATE TABLE ReplTest (
   ID INT NOT NULL PRIMARY KEY,
   c1 VARCHAR(100) NOT NULL,
   dt1 DATETIME NOT NULL DEFAULT getdate()
)
GO

-- Populate table with data
USE [ReplTutorial]
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

Dağıtımı yapılandırma

Bağlantı kurulduktan ve örnek bir veritabanınız olduğunda, yönetilen örneğinizde sql-mi-distributor dağıtımı yapılandırabilirsiniz. Bunu yapmak için aşağıdaki adımları izleyin:

  1. SQL Server'da SQL Server Management Studio başlatın.

  2. Yönetilen örneğe bağlanın sql-mi-distributor .

  3. Dağıtımcı yönetilen örneğinde dağıtımı yapılandırmak için Yeni Sorgu penceresi açın ve aşağıdaki Transact-SQL kodunu çalıştırın:

    EXEC sp_adddistributor @distributor = 'sql-mi-distributor.b6bf57.database.windows.net', @password = '<distributor_admin_password>'
    
    EXEC sp_adddistributiondb @database = N'distribution'
    
    EXEC sp_adddistpublisher @publisher = 'sql-mi-publisher.b6bf57.database.windows.net', -- primary publisher
         @distribution_db = N'distribution',
         @security_mode = 0,
         @login = N'azureuser',
         @password = N'<publisher_password>',
         @working_directory = N'\\replstorage.file.core.windows.net\replshare',
         @storage_connection_string = N'<storage_connection_string>'
         -- example: @storage_connection_string = N'DefaultEndpointsProtocol=https;AccountName=replstorage;AccountKey=dYT5hHZVu9aTgIteGfpYE64cfis0mpKTmmc8+EP53GxuRg6TCwe5eTYWrQM4AmQSG5lb3OBskhg==;EndpointSuffix=core.windows.net'
    
    

    Not

    parametresi için yalnızca ters eğik çizgi (\) kullandığınızdan @working_directory emin olun. Dosya paylaşımına bağlanırken eğik çizgi (/) kullanmak hataya neden olabilir.

  4. Yönetilen örneğe bağlanın sql-mi-publisher .

  5. Yeni Sorgu penceresi açın ve yayımcıya dağıtımcıyı kaydetmek için aşağıdaki Transact-SQL kodunu çalıştırın:

    Use MASTER
    EXEC sys.sp_adddistributor @distributor = 'sql-mi-distributor.b6bf57.database.windows.net', @password = '<distributor_admin_password>'
    

Yayını oluşturma

Dağıtım yapılandırıldıktan sonra yayını oluşturabilirsiniz. Bunu yapmak için aşağıdaki adımları izleyin:

  1. SQL Server'da SQL Server Management Studio başlatın.

  2. Yönetilen örneğe bağlanın sql-mi-publisher .

  3. Nesne Gezgini'daÇoğaltma düğümünü genişletin ve Yerel Yayın klasörüne sağ tıklayın. Yeni Yayın'ı seçin....

  4. Hoş geldiniz sayfasından geçmek için İleri'yi seçin.

  5. Yayın Veritabanı sayfasında, daha önce oluşturduğunuz veritabanını seçinReplTutorial. İleri’yi seçin.

  6. Yayın türü sayfasında İşlem yayını'nı seçin. İleri’yi seçin.

  7. Makaleler sayfasında Tablolar'ın yanındaki kutuyu işaretleyin. İleri’yi seçin.

  8. Tablo Satırlarını Filtrele sayfasında, filtre eklemeden İleri'yi seçin.

  9. Anlık Görüntü Aracısı sayfasında Anlık görüntü oluştur'un yanındaki kutuyu işaretleyin ve anlık görüntüyü abonelikleri başlatmak için kullanılabilir durumda tutun. İleri’yi seçin.

  10. Aracı Güvenliği sayfasında Güvenlik Ayarları... öğesini seçin. Snapshot Agent için kullanılacak SQL Server oturum açma kimlik bilgilerini sağlayın ve yayımcıya bağlanın. Snapshot Agent Security sayfasını kapatmak için Tamam'ı seçin. İleri’yi seçin.

    Snapshot Agent güvenliğini yapılandırma

  11. Sihirbaz Eylemleri sayfasında Yayın oluştur'u seçin ve (isteğe bağlı olarak) bu betiği daha sonra kaydetmek istiyorsanız yayını oluşturma adımlarını içeren bir betik dosyası oluştur'u seçin.

  12. Sihirbazı Tamamla sayfasında yayınınızı adlandırın ve İleri'yiReplTest seçerek yayınınızı oluşturun.

  13. Yayınınız oluşturulduktan sonra, Nesne Gezginiçoğaltma düğümünü yenileyin ve yeni yayınınızı görmek için Yerel Yayınlar'ı genişletin.

Aboneliği oluşturma

Yayın oluşturulduktan sonra aboneliği oluşturabilirsiniz. Bunu yapmak için aşağıdaki adımları izleyin:

  1. SQL Server'da SQL Server Management Studio başlatın.
  2. Yönetilen örneğe bağlanın sql-mi-publisher .
  3. Yeni Sorgu penceresi açın ve abonelik ve dağıtım aracısını eklemek için aşağıdaki Transact-SQL kodunu çalıştırın. Abone adının bir parçası olarak DNS'yi kullanın.
use [ReplTutorial]
exec sp_addsubscription
@publication = N'ReplTest',
@subscriber = N'sql-vm-sub.repldns.com', -- include the DNS configured in the private DNS zone
@destination_db = N'ReplSub',
@subscription_type = N'Push',
@sync_type = N'automatic',
@article = N'all',
@update_mode = N'read only',
@subscriber_type = 0

exec sp_addpushsubscription_agent
@publication = N'ReplTest',
@subscriber = N'sql-vm-sub.repldns.com', -- include the DNS configured in the private DNS zone
@subscriber_db = N'ReplSub',
@job_login = N'azureuser',
@job_password = '<Complex Password>',
@subscriber_security_mode = 0,
@subscriber_login = N'azureuser',
@subscriber_password = '<Complex Password>',
@dts_package_location = N'Distributor'
GO

Çoğaltmayı test etme

Ç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:

Use ReplSub
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.

Use ReplTutorial
INSERT INTO ReplTest (ID, c1) VALUES (15, 'pub')

Kaynakları temizleme

  1. Azure portal kaynak grubunuza gidin.
  2. Yönetilen örnekleri ve ardından Sil'i seçin. Kaynağı silmek istediğinizi onaylamak için metin kutusuna yazın yes ve sil'i seçin. Bu işlemin arka planda tamamlanması biraz zaman alabilir ve tamamlanana kadar sanal kümeyi veya diğer bağımlı kaynakları silemezsiniz. Yönetilen örneğinizin silindiğini onaylamak için Etkinlik sekmesinde silme işlemini izleyin.
  3. Yönetilen örnek silindikten sonra , sanal kümeyi kaynak grubunuzda seçip Sil'i seçerek silin. Kaynağı silmek istediğinizi onaylamak için metin kutusuna yazın yes ve sil'i seçin.
  4. Kalan kaynakları silin. Kaynağı silmek istediğinizi onaylamak için metin kutusuna yazın yes ve sil'i seçin.
  5. Kaynak grubunu sil'i seçip kaynak grubunun adını yazıp Sil'i seçerek kaynak grubunu myResourceGroupsilin.

Bilinen hatalar

Windows oturum açma bilgileri desteklenmiyor

Exception Message: Windows logins are not supported in this version of SQL Server.

Aracı bir Windows oturum açma bilgileriyle yapılandırıldı ve bunun yerine SQL Server oturum açma bilgileri kullanması gerekiyor. Oturum açma kimlik bilgilerini SQL Server oturum açma bilgileriyle değiştirmek için Yayın özelliklerininAracı Güvenliği sayfasını kullanın.

Azure Depolama bağlantısı kurulamadı

Connecting to Azure Files Storage '\\replstorage.file.core.windows.net\replshare' Failed to connect to Azure Storage '' with OS error: 53.

2019-11-19 02:21:05.07 Replstorage 2019-11-19 için Azure Depolama Bağlantı Dizesi Alındı 02:21:05.0507 '\replstorage.file.core.windows.net\replshare' Azure Dosyalar Depolama'ya bağlanma 2019-11-19 02:21:31.21 İşletim sistemi hatasıyla '' Azure Depolama'ya bağlanılamadı: 53.

Bunun nedeni büyük olasılıkla 445 numaralı bağlantı noktasının Azure güvenlik duvarında, Windows güvenlik duvarında veya her ikisinde de kapatılmasıdır.

Connecting to Azure Files Storage '\\replstorage.file.core.windows.net\replshare' Failed to connect to Azure Storage '' with OS error: 55.

Dosya paylaşımının dosya yolunda ters eğik çizgi yerine eğik çizgi kullanmak bu hataya neden olabilir.

  • Bu sorun değil: \\replstorage.file.core.windows.net\replshare
  • Bu, işletim sistemi 55 hatasına neden olabilir: '\\replstorage.file.core.windows.net/replshare'

Aboneye bağlanılamadı

The process could not connect to Subscriber 'SQL-VM-SUB Could not open a connection to SQL Server [53]. A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections.

Olası çözümler:

  • 1433 numaralı bağlantı noktasının açık olduğundan emin olun.
  • Abonede TCP/IP'nin etkinleştirildiğinden emin olun.
  • Abone oluşturulurken DNS adının kullanıldığını onaylayın.
  • Sanal ağlarınızın özel DNS bölgesinde doğru şekilde bağlandığını doğrulayın.
  • A kaydınızın doğru yapılandırıldığını doğrulayın.
  • Sanal ağ eşlemenizin doğru yapılandırıldığını doğrulayın.

Abone olabileceğiniz yayın yok

Yeni Abonelik sihirbazını kullanarak yeni bir abonelik eklerken, Yayın sayfasında kullanılabilir seçenekler olarak listelenen veritabanı ve yayın olmadığını ve aşağıdaki hata iletisini görebilirsiniz:

There are no publications to which you can subscribe, either because this server has no publications or because you do not have sufficient privileges to access the publications.

Bu hata iletisinin doğru olması ve bağlandığınız yayımcıda gerçekten kullanılabilir yayın olmaması veya yeterli izinlere sahip olmamanız mümkün olsa da, bu hatanın nedeni SQL Server Management Studio'nin daha eski bir sürümü olabilir. Bunu kök neden olarak elemek için SQL Server Management Studio 18.0 veya üzeri bir sürüme yükseltmeyi deneyin.

Sonraki adımlar

Güvenlik özelliklerini etkinleştirme

Veritabanınızın güvenliğini sağlamanın kapsamlı bir listesi için Azure SQL Yönetilen Örneği nedir? makalesine bakın. Aşağıdaki güvenlik özellikleri ele alınıyor:

SQL Yönetilen Örneği özellikleri

Yönetilen örnek özelliklerine tam bir genel bakış için bkz: