Kurz: Konfigurace transakční replikace mezi spravovanou instancí Azure SQL a SQL Serverem
Platí pro: Azure SQL Managed Instance
Transakční replikace umožňuje replikovat data z jedné databáze do jiné hostované na SQL Serveru nebo ve spravované instanci Azure SQL. Spravovaná instance SQL může být vydavatelem, distributorem nebo odběratelem v topologii replikace. Dostupné konfigurace najdete v konfiguracích transakční replikace.
V tomto kurzu se naučíte:
- Nakonfigurujte spravovanou instanci jako vydavatele replikace.
- Nakonfigurujte spravovanou instanci jako distributora replikace.
- Nakonfigurujte SQL Server jako odběratele.
Tento kurz je určený zkušeným cílovým skupinám a předpokládá, že uživatel je obeznámen s nasazením a připojením k spravovaným instancím i virtuálním počítačům s SQL Serverem v Rámci Azure.
Poznámka:
Tento článek popisuje použití transakční replikace ve službě Azure SQL Managed Instance. Nesouvisí se skupinami převzetí služeb při selhání, funkcí azure SQL Managed Instance, která umožňuje vytvářet úplné čitelné repliky jednotlivých instancí. Při konfiguraci transakční replikace se skupinami převzetí služeb při selhání existují další aspekty.
Požadavky
K dokončení kurzu se ujistěte, že máte následující požadavky:
- Předplatné Azure
- Zkušenosti s nasazením dvou spravovaných instancí ve stejné virtuální síti
- Předplatitel SQL Serveru, ať už místně, nebo na virtuálním počítači Azure. V tomto kurzu se používá virtuální počítač Azure.
- SQL Server Management Studio (SSMS) 18.0 nebo novější.
- Nejnovější verze Azure PowerShellu
- Porty 445 a 1433 umožňují provoz SQL na bráně Azure Firewall i bráně Windows Firewall.
Vytvoření skupiny prostředků
Pomocí následujícího fragmentu kódu PowerShellu vytvořte novou skupinu prostředků:
# set variables
$ResourceGroupName = "SQLMI-Repl"
$Location = "East US 2"
# Create a new resource group
New-AzResourceGroup -Name $ResourceGroupName -Location $Location
Vytvoření dvou spravovaných instancí
Pomocí webu Azure Portal vytvořte dvě spravované instance v této nové skupině prostředků.
Název spravované instance vydavatele by měl být
sql-mi-publisher
(spolu s několika znaky pro náhodnost) a název virtuální sítě by měl býtvnet-sql-mi-publisher
.Název spravované instance distributora by měl být
sql-mi-distributor
(spolu s několika znaky pro náhodnost) a měl by být ve stejné virtuální síti jako spravovaná instance vydavatele.
Další informace o vytvoření spravované instance najdete v tématu Vytvoření spravované instance na portálu.
Poznámka:
Kvůli jednoduchosti a vzhledem k tomu, že se jedná o nejběžnější konfiguraci, tento kurz navrhuje umístění spravované instance distributora do stejné virtuální sítě jako vydavatel. Je ale možné vytvořit distributora v samostatné virtuální síti. K tomu budete muset nakonfigurovat partnerský vztah virtuálních sítí mezi virtuálními sítěmi vydavatele a distributora a pak nakonfigurovat partnerský vztah virtuálních sítí mezi virtuálními sítěmi distributora a odběratele.
Vytvoření virtuálního počítače s SQL Serverem
Vytvořte virtuální počítač s SQL Serverem pomocí webu Azure Portal. Virtuální počítač s SQL Serverem by měl mít následující charakteristiky:
- Název:
sql-vm-sub
- Obrázek: SQL Server 2016 nebo novější
- Skupina prostředků: stejná jako spravovaná instance
- Virtuální síť:
sql-vm-sub-vnet
Další informace o nasazení virtuálního počítače s SQL Serverem do Azure najdete v tématu Rychlý start: Vytvoření virtuálního počítače s SQL Serverem.
Konfigurace partnerského vztahu virtuálních sítí
Nakonfigurujte VNet Peering tak, aby umožňoval komunikaci mezi virtuální sítí dvou spravovaných instancí a virtuální sítí SQL Serveru. K tomu použijte tento fragment kódu PowerShellu:
# 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
Po navázání partnerského vztahu virtuálních sítí otestujte připojení spuštěním aplikace SQL Server Management Studio (SSMS) na SQL Serveru a připojením k oběma spravovaným instancím. Další informace o připojení ke spravované instanci pomocí SSMS najdete v tématu Použití aplikace SSMS pro připojení ke službě SQL Managed Instance.
Vytvoření privátní zóny DNS
Privátní zóna DNS umožňuje směrování DNS mezi spravovanými instancemi a SQL Serverem.
Vytvoření privátní zóny DNS
Přihlaste se k webu Azure Portal.
Vyberte Vytvořit prostředek a vytvořte nový prostředek Azure.
Vyhledejte
private dns zone
na Azure Marketplace.Zvolte prostředek zóny Privátní DNS publikovaný Microsoftem a pak vyberte Vytvořit a vytvořte zónu DNS.
V rozevíracím seznamu zvolte předplatné a skupinu prostředků.
Zadejte libovolný název zóny DNS, například
repldns.com
.Vyberte Zkontrolovat a vytvořit. Zkontrolujte parametry privátní zóny DNS a pak vyberte Vytvořit a vytvořte prostředek.
Vytvoření záznamu A
Přejděte do nové zóny Privátní DNS a vyberte Přehled.
Vyberte + Sada záznamů a vytvořte nový záznam A.
Zadejte název virtuálního počítače s SQL Serverem a také privátní interní IP adresu.
Vyberte OK a vytvořte záznam A.
Propojení virtuální sítě
Přejděte do nové zóny Privátní DNS a vyberte propojení virtuální sítě.
Vyberte + Přidat.
Zadejte název odkazu, například
Pub-link
.V rozevíracím seznamu vyberte své předplatné a pak vyberte virtuální síť pro spravovanou instanci vydavatele.
Zaškrtněte políčko vedle možnosti Povolit automatickou registraci.
Pokud chcete propojit virtuální síť, vyberte OK .
Opakováním těchto kroků přidejte odkaz pro virtuální síť odběratele s názvem, například
Sub-link
.
Vytvoření účtu úložiště Azure
Vytvořte účet úložiště Azure pro pracovní adresář a pak vytvořte sdílenou složku v rámci účtu úložiště.
Zkopírujte cestu ke sdílené složce ve formátu: \\storage-account-name.file.core.windows.net\file-share-name
Příklad: \\replstorage.file.core.windows.net\replshare
Zkopírujte přístupový klíč úložiště připojovací řetězec ve formátu:DefaultEndpointsProtocol=https;AccountName=<Storage-Account-Name>;AccountKey=****;EndpointSuffix=core.windows.net
Příklad: DefaultEndpointsProtocol=https;AccountName=replstorage;AccountKey=dYT5hHZVu9aTgIteGfpYE64cfis0mpKTmmc8+EP53GxuRg6TCwe5eTYWrQM4AmQSG5lb3OBskhg==;EndpointSuffix=core.windows.net
Další informace najdete v tématu Správa přístupových klíčů účtu úložiště.
Vytvořit databázi
Vytvořte novou databázi ve spravované instanci vydavatele. Postup je následující:
- Spusťte SQL Server Management Studio na SQL Serveru.
- Připojte se ke
sql-mi-publisher
spravované instanci. - Otevřete okno Nový dotaz a spuštěním následujícího dotazu T-SQL vytvořte databázi.
-- 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
Konfigurace distribuce
Po navázání připojení a máte ukázkovou databázi, můžete nakonfigurovat distribuci ve spravované sql-mi-distributor
instanci. Postup je následující:
Spusťte SQL Server Management Studio na SQL Serveru.
Připojte se ke
sql-mi-distributor
spravované instanci.Otevřete okno Nový dotaz a spuštěním následujícího kódu Transact-SQL nakonfigurujte distribuci ve spravované instanci distributora:
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'
Poznámka:
Nezapomeňte pro @working_directory parametr použít pouze zpětná lomítka (
\
). Použití lomítka (/
) může způsobit chybu při připojování ke sdílené složce.Připojte se ke
sql-mi-publisher
spravované instanci.Otevřete okno Nový dotaz a spuštěním následujícího kódu Transact-SQL zaregistrujte distributora v vydavateli:
Use MASTER EXEC sys.sp_adddistributor @distributor = 'sql-mi-distributor.b6bf57.database.windows.net', @password = '<distributor_admin_password>'
Vytvoření publikace
Po nakonfigurování distribuce teď můžete publikaci vytvořit. Postup je následující:
Spusťte SQL Server Management Studio na SQL Serveru.
Připojte se ke
sql-mi-publisher
spravované instanci.V Průzkumník objektů rozbalte uzel Replikace a klikněte pravým tlačítkem myši na složku Místní publikace. Vyberte Možnost Nová publikace....
Výběrem možnosti Další přejdete na úvodní stránku.
Na stránce Databáze publikace vyberte
ReplTutorial
databázi, kterou jste vytvořili dříve. Vyberte Další.Na stránce Typ publikace vyberte Transakční publikaci. Vyberte Další.
Na stránce Články zaškrtněte políčko vedle tabulek. Vyberte Další.
Na stránce Filtrovat řádky tabulky vyberte Další bez přidání filtrů.
Na stránce Snímek agenta zaškrtněte políčko vedle možnosti Vytvořit snímek okamžitě a nechte snímek k dispozici pro inicializaci předplatných. Vyberte Další.
Na stránce Zabezpečení agenta vyberte Nastavení zabezpečení.... Zadejte přihlašovací údaje k SQL Serveru, které se mají použít pro agenta snímků, a připojte se k vydavateli. Výběrem možnosti OK zavřete stránku Zabezpečení agenta snímků. Vyberte Další.
Na stránce Akce průvodce zvolte vytvořit publikaci a (volitelně) zvolte vygenerovat soubor skriptu s postupem vytvoření publikace, pokud chcete tento skript uložit pro pozdější použití.
Na stránce Dokončit průvodce pojmenujte publikaci
ReplTest
a výběrem možnosti Další vytvořte publikaci.Po vytvoření publikace aktualizujte uzel Replikace v Průzkumník objektů a rozbalte místní publikace, aby se nová publikace zobrazila.
Vytvoření odběru
Po vytvoření publikace můžete vytvořit předplatné. Postup je následující:
- Spusťte SQL Server Management Studio na SQL Serveru.
- Připojte se ke
sql-mi-publisher
spravované instanci. - Otevřete okno Nový dotaz a spuštěním následujícího kódu Transact-SQL přidejte předplatné a distribučního agenta. Jako součást názvu odběratele použijte DNS.
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
Test replikace
Po nakonfigurování replikace ji můžete otestovat vložením nových položek na vydavatele a sledováním změn, které se rozšíří do odběratele.
Spuštěním následujícího fragmentu kódu T-SQL zobrazte řádky odběratele:
Use ReplSub
select * from dbo.ReplTest
Spuštěním následujícího fragmentu kódu T-SQL vložte do vydavatele další řádky a pak znovu zkontrolujte řádky odběratele.
Use ReplTutorial
INSERT INTO ReplTest (ID, c1) VALUES (15, 'pub')
Vyčištění prostředků
- Na webu Azure Portal přejděte ke své skupině prostředků.
- Vyberte spravované instance a pak vyberte Odstranit. Zadáním
yes
textového pole potvrďte, že chcete prostředek odstranit, a pak vyberte Odstranit. Dokončení tohoto procesu může nějakou dobu trvat na pozadí a dokud se nedokončí, nebudete moct odstranit virtuální cluster ani žádné další závislé prostředky. Sledujte odstranění na kartě Aktivita a ověřte, že vaše spravovaná instance byla odstraněna. - Po odstranění spravované instance odstraňte virtuální cluster tak, že ho vyberete ve skupině prostředků a pak zvolíte Odstranit. Zadáním
yes
textového pole potvrďte, že chcete prostředek odstranit, a pak vyberte Odstranit. - Odstraňte všechny zbývající prostředky. Zadáním
yes
textového pole potvrďte, že chcete prostředek odstranit, a pak vyberte Odstranit. - Odstraňte skupinu prostředků tak, že vyberete Odstranit skupinu prostředků, zadáte název skupiny
myResourceGroup
prostředků a pak vyberete Odstranit.
Známé chyby
Přihlášení k Windows se nepodporují.
Exception Message: Windows logins are not supported in this version of SQL Server.
Agent se nakonfiguroval s přihlášením k Windows a musí místo toho použít přihlášení k SQL Serveru. Pomocí stránky Zabezpečení agenta vlastností publikace změňte přihlašovací údaje na přihlášení k SQL Serveru.
Selhání připojení ke službě Azure Storage
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 Získání připojovacího řetězce služby Azure Storage pro replstorage 2019-11-19 02:21:05.2 07 Připojení ke službě Azure Files Storage \replstorage.file.core.windows.net\replshare 2019-11-19 02:21:31.21 Se nepodařilo připojit se ke službě Azure Storage s chybou operačního systému: 53.
Důvodem je pravděpodobně to, že port 445 je uzavřen v bráně Azure Firewall, bráně Windows Firewall nebo v obou.
Connecting to Azure Files Storage '\\replstorage.file.core.windows.net\replshare' Failed to connect to Azure Storage '' with OS error: 55.
Tato chyba může způsobit použití lomítka místo zpětného lomítka v cestě k souboru sdílené složky.
- To je v pořádku:
\\replstorage.file.core.windows.net\replshare
- To může způsobit chybu operačního systému 55:
'\\replstorage.file.core.windows.net/replshare'
Nejde se připojit k odběrateli
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.
Možná řešení:
- Ujistěte se, že je otevřený port 1433.
- Ujistěte se, že je pro předplatitele povolený protokol TCP/IP.
- Ověřte, že se při vytváření odběratele použil název DNS.
- Ověřte, že jsou vaše virtuální sítě správně propojené v privátní zóně DNS.
- Ověřte, že je záznam A správně nakonfigurovaný.
- Ověřte, že je partnerský vztah virtuálních sítí správně nakonfigurovaný.
Žádné publikace, ke kterým se můžete přihlásit
Když přidáváte nové předplatné pomocí průvodce Novým předplatným , můžete na stránce Publikace zjistit, že neexistují žádné databáze a publikace uvedené jako dostupné možnosti a může se zobrazit následující chybová zpráva:
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.
I když je možné, že tato chybová zpráva je přesná a ve skutečnosti nejsou k dispozici publikace vydavatele, ke kterému jste se připojili, nebo nemáte dostatečná oprávnění, může být tato chyba způsobená také starší verzí aplikace SQL Server Management Studio. Zkuste upgradovat na SQL Server Management Studio 18.0 nebo novější, abyste tuto možnost vyloučili jako původní příčinu.
Další kroky
Povolení funkcí zabezpečení
Úplný seznam způsobů zabezpečení databáze najdete v článku Co je Azure SQL Managed Instance? Probereme následující funkce zabezpečení:
- Auditování služby SQL Managed Instance
- Funkce Always Encrypted
- Detekce hrozeb
- Dynamické maskování dat
- Zabezpečení na úrovni řádků
- Transparentní šifrování dat (TDE)
Možnosti služby SQL Managed Instance
Úplný přehled možností spravované instance najdete tady: