Öğ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.
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ırvnet-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.
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.
Ö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
Azure portal oturum açın.
Yeni bir Azure kaynağı oluşturmak için Kaynak oluştur'u seçin.
Azure Market arama
private dns zone
.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.
Açılan listeden aboneliği ve kaynak grubunu seçin.
DNS bölgeniz
repldns.com
için gibi rastgele bir ad sağlayın.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
Yeni Özel DNS bölgenize gidin ve Genel Bakış'ı seçin.
Yeni bir A kaydı oluşturmak için + Kayıt kümesi'ni seçin.
SQL Server VM'nizin adını ve özel iç IP adresini belirtin.
A kaydını oluşturmak için Tamam'ı seçin.
Sanal ağı bağlama
Yeni Özel DNS bölgenize gidin ve Sanal ağ bağlantıları'na tıklayın.
+ Ekle'yi seçin.
Bağlantı için gibi
Pub-link
bir ad sağlayın.Açılan listeden aboneliğinizi seçin ve ardından yayımcı tarafından yönetilen örneğiniz için sanal ağı seçin.
Otomatik kaydı etkinleştir'in yanındaki kutuyu işaretleyin.
Sanal ağınızı bağlamak için Tamam'ı seçin.
Abone sanal ağına gibi
Sub-link
bir 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:
- SQL Server'da SQL Server Management Studio'yu başlatın.
- Yönetilen örneğe
sql-mi-publisher
Bağlan. - 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:
SQL Server'da SQL Server Management Studio'yu başlatın.
Yönetilen örneğe
sql-mi-distributor
Bağlan.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.Yönetilen örneğe
sql-mi-publisher
Bağlan.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:
SQL Server'da SQL Server Management Studio'yu başlatın.
Yönetilen örneğe
sql-mi-publisher
Bağlan.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 ....
Hoş geldiniz sayfasından geçmek için İleri'yi seçin.
Yayın Veritabanı sayfasında, daha önce oluşturduğunuz veritabanını seçin
ReplTutorial
. İleri'yi seçin.Yayın türü sayfasında İşlemsel yayın'ı seçin. İleri'yi seçin.
Makaleler sayfasında, Tablolar'ın yanındaki kutuyu işaretleyin. İleri'yi seçin.
Tablo Satırlarını Filtrele sayfasında, filtre eklemeden İleri'yi seçin.
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.
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.
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.
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.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:
- SQL Server'da SQL Server Management Studio'yu başlatın.
- Yönetilen örneğe
sql-mi-publisher
Bağlan. - 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
- Azure portalında kaynak grubunuz için gidin.
- 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. - 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. - Kalan tüm kaynakları silin. Kaynağı silmek istediğinizi onaylamak için metin kutusuna yazın
yes
ve sil'i seçin. - Kaynak grubunu sil'i seçip kaynak grubunun adını yazıp Sil'i seçerek kaynak grubunu
myResourceGroup
silin.
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 denetimi
- Always Encrypted
- Tehdit algılama
- Dinamik veri maskeleme
- Satır düzeyi güvenlik
- Saydam veri şifrelemesi (TDE)
SQL Yönetilen Örneği özellikleri
Yönetilen örnek özelliklerine tam bir genel bakış için bkz:
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin