Kurz: Konfigurace replikace mezi dvěma spravovanými instancemi
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 a distributora.
- Nakonfigurujte spravovanou instanci jako odběratele replikace.
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
Konfigurace služby SQL Managed Instance tak, aby fungovala jako vydavatel nebo distributor, vyžaduje:
- Že spravovaná instance vydavatele je ve stejné virtuální síti jako distributor a odběratel nebo partnerský vztah virtuálních sítí nebo brány VPN byly nakonfigurovány mezi virtuálními sítěmi všech tří entit.
- Při připojování mezi účastníky replikace se používá ověřování SQL.
- Sdílená složka účtu úložiště Azure pro pracovní adresář replikace.
- Port 445 (odchozí tcp) je otevřený v pravidlech zabezpečení skupiny zabezpečení sítě pro spravované instance pro přístup ke sdílené složce Azure. Pokud dojde k chybě
failed to connect to azure storage <storage account name> with os error 53
, budete muset přidat odchozí pravidlo do skupiny zabezpečení sítě příslušné podsítě služby SQL Managed Instance.
1. Vytvoření skupiny prostředků
Pomocí webu Azure Portal vytvořte skupinu prostředků s názvem SQLMI-Repl
.
2. Vytváření spravovaných instancí
Pomocí webu Azure Portal vytvořte dvě spravované instance SQL ve stejné virtuální síti a podsíti. Pojmenujte například dvě spravované instance:
sql-mi-pub
(spolu s znaky pro náhodnost)sql-mi-sub
(spolu s znaky pro náhodnost)
Budete také muset nakonfigurovat virtuální počítač Azure pro připojení ke spravovaným instancím.
3. 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íče k úložišti 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ě.
4. Vytvoření databáze vydavatele
Připojte sql-mi-pub
se ke spravované instanci pomocí aplikace SQL Server Management Studio a spuštěním následujícího kódu Jazyka Transact-SQL (T-SQL) vytvořte databázi vydavatele:
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. Vytvoření databáze odběratelů
Připojte sql-mi-sub
se ke spravované instanci pomocí aplikace SQL Server Management Studio a spuštěním následujícího kódu T-SQL vytvořte prázdnou databázi odběratelů:
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. Konfigurace distribuce
Připojte sql-mi-pub
se ke spravované instanci pomocí aplikace SQL Server Management Studio a spuštěním následujícího kódu T-SQL nakonfigurujte distribuční databázi.
USE [master]
GO
EXEC sp_adddistributor @distributor = @@ServerName;
EXEC sp_adddistributiondb @database = N'distribution';
GO
7. Konfigurace vydavatele pro použití distributora
Ve službě SQL Managed Instance sql-mi-pub
vydavatele změňte spuštění dotazu do režimu SQLCMD a spuštěním následujícího kódu zaregistrujte nového distributora u vydavatele.
: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
Poznámka:
Nezapomeňte pro parametr file_storage 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.
Tento skript nakonfiguruje místního vydavatele ve spravované instanci, přidá propojený server a vytvoří sadu úloh pro agenta SQL Serveru.
8. Vytvoření publikace a odběratele
Pomocí režimu SQLCMD spusťte následující skript T-SQL, který povolí replikaci pro vaši databázi a nakonfiguruje replikaci mezi vydavatelem, distributorem a odběratelem.
-- 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. Úprava parametrů agenta
Ve službě Azure SQL Managed Instance dochází v současné době k některým problémům s připojením k agentům replikace. I když se tento problém řeší, alternativním řešením je zvýšit hodnotu časového limitu přihlášení pro agenty replikace.
Spuštěním následujícího příkazu T-SQL v vydavateli zvyšte časový limit přihlášení:
-- 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 %'
Spuštěním následujícího příkazu T-SQL znovu nastavte časový limit přihlášení zpět na výchozí hodnotu, pokud to musíte udělat:
-- 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 %'
Pokud chcete tyto změny použít, restartujte všechny tři agenty.
10. Testovací 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:
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.
INSERT INTO ReplTest (ID, c1) VALUES (15, 'pub')
Vyčištění prostředků
Pokud chcete publikaci odstranit, spusťte následující příkaz T-SQL:
-- Drops the publication
USE [ReplTran_PUB]
EXEC sp_droppublication @publication = N'PublishData'
GO
Pokud chcete odebrat možnost replikace z databáze, spusťte následující příkaz T-SQL:
-- Disables publishing of the database
USE [ReplTran_PUB]
EXEC sp_removedbreplication
GO
Pokud chcete zakázat publikování a distribuci, spusťte následující příkaz T-SQL:
-- Drops the distributor
USE [master]
EXEC sp_dropdistributor @no_checks = 1
GO
Prostředky Azure můžete vyčistit odstraněním prostředků služby SQL Managed Instance ze skupiny prostředků a odstraněním skupiny SQLMI-Repl
prostředků .
Další kroky
Další informace o transakční replikaci pomocí služby Azure SQL Managed Instance nebo informace o konfiguraci replikace mezi vydavatelem nebo distributorem služby SQL Managed Instance a SQL pro předplatitele virtuálního počítače Azure.