Öğ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, 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ı olarak yapılandırın.
  • Yönetilen örneği çoğaltma dağıtımcısı olarak yapılandırın.
  • SQL Server'ı abone olarak yapılandırın.

Replication between a managed instance publisher, managed instance distributor, and SQL Server subscriber

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.

Dekont

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.

Önkoşullar

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

  • Bir Azure aboneliği.
  • Aynı sanal ağ içinde iki yönetilen örnek dağıtma deneyimi.
  • Şirket içi veya Azure VM'sinde bulunan bir SQL Server abonesi. Bu öğreticide bir Azure VM kullanılır.
  • SQL Server Management Studio (SSMS) 18.0 veya üzeri.
  • Azure PowerShell'in en son sürümü.
  • 445 ve 1433 bağlantı noktaları hem Azure güvenlik duvarında hem de Windows güvenlik duvarında SQL trafiğine izin verir.

Bir kaynak grubu oluştur

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ını kullanarak bu yeni kaynak grubunda iki yönetilen örnek oluşturun.

  • Yayımcı tarafından yönetilen örneğin sql-mi-publisher adı (rastgele seçim 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çim için birkaç karakterle birlikte) ve yayımcı tarafından yönetilen örnekle aynı sanal ağda olmalıdır.

    Use the publisher VNet for the distributor

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

Dekont

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ını kullanarak bir SQL Server sanal makinesi oluşturun. SQL Server sanal makinesi aşağıdaki özelliklere sahip olmalıdır:

  • Ad: sql-vm-sub
  • Görüntü: 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'ın 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'da SQL Server Management Studio'yu (SSMS) başlatıp her iki yönetilen örneğe de 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.

Test connectivity to the managed instances

Özel DNS bölgesi oluşturma

Özel DNS bölgesi, yönetilen örneklerle SQL Server arasında DNS yönlendirmesine izin verir.

Ö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. Azure Market aramaprivate dns zone.

  4. Microsoft tarafından yayımlanan Özel DNS bölge 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.

    Create private DNS zone

  7. Gözden geçir ve oluştur’u seçin. Özel DNS bölgenizin parametrelerini gözden geçirin ve ardından 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.

    Configure an A record

  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.

    Create VNet link

  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ını bağlantı dizesi ş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şturun

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'yu başlatın.
  2. Yönetilen örneğe sql-mi-publisher Bağlan.
  3. Yeni Sorgu penceresini 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 veritabanınız olduktan sonra 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'yu başlatın.

  2. Yönetilen örneğe sql-mi-distributor Bağlan.

  3. Yeni Sorgu penceresini açın ve dağıtımcı yönetilen örneğinde dağıtımı yapılandırmak için 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'
    
    

    Dekont

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

  4. Yönetilen örneğe sql-mi-publisher Bağlan.

  5. Yeni Sorgu penceresini 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'yu başlatın.

  2. Yönetilen örneğe sql-mi-publisher Bağlan.

  3. Nesne Gezgini Ç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 İşlemsel yayı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ü hemen 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. Anlık Görüntü Aracısı 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.

    Configure Snapshot Agent security

  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 yayınınızı ReplTest oluşturmak için İleri'yi seçin.

  13. Yayınınız oluşturulduktan sonra, Nesne Gezgini Çoğaltmadüğü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'yu başlatın.
  2. Yönetilen örneğe sql-mi-publisher Bağlan.
  3. Yeni Sorgu penceresini 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 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:

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ında kaynak grubunuz için 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 tüm 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 bir SQL Server oturum açma bilgisi kullanması gerekiyor. Oturum açma kimlik bilgilerini SQL Server oturum açma bilgileriyle değiştirmek için Yayın özelliklerinin Aracı 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ğlan ion Dizesi Alındı 02:21:05.07 '\replstorage.file.core.windows.net\replshare' Azure Dosyalar Depolama Bağlan 2019-11-19 02:21:31.21 İşletim sistemi hatasıyla '' Azure Depolama 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 abonelik eklerken, Yayın sayfasında kullanılabilir seçenekler olarak listelenen veritabanı ve yayın olmadığını fark edebilirsiniz 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 hataya SQL Server Management Studio'nun eski bir sürümünden de kaynaklanabilir. Bunu kök neden olarak elemek için SQL Server Management Studio 18.0 veya sonraki 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: