Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 předplatitelem v topologii replikace. Dostupné konfigurace najdete v konfiguracích transakční replikace.
V tomto kurzu se naučíte:
- Nakonfigurujte spravovanou instanci SQL jako vydavatele replikace a distributora.
- Nakonfigurujte spravovanou instanci SQL 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 SQL 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:
- Spravovaná instance SQL vydavatele je ve stejné virtuální síti jako distributor a odběratel nebo mezi virtuálními sítěmi všech tří entit jsou nakonfigurované partnerské vztahy virtuálních sítí nebo brány VPN .
- 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 SQL 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. Vytvoření spravovaných instancí SQL
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:
-
sql-mi-publisher(spolu s znaky pro náhodnost) -
sql-mi-subscriber(spolu s znaky pro náhodnost)
Budete také muset nakonfigurovat virtuální počítač Azure pro připojení k vašim spravovaným instancím SQL.
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=123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ==;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 se ke spravované instanci SQL vydavatele (sql-mi-publisher) pomocí aplikace SQL Server Management Studio a spuštěním následujícího kódu 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 se ke spravované instanci SQL odběratele (sql-mi-subscriber) 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 se ke spravované instanci SQL vydavatele (sql-mi-publisher) pomocí aplikace SQL Server Management Studio a spuštěním následujícího kódu T-SQL nakonfigurujte vaši 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 spravované instanci SQL vydavatele (sql-mi-publisher), 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=123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ==;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 SQL, 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-subscriber.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 %'
Pokud potřebujete nastavit časový limit přihlášení zpět na výchozí hodnotu, spusťte znovu následující příkaz T-SQL:
-- 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 %'
Chcete-li tyto změny použít, restartujte všechny tři agenty.
10. Testovací replikace
Jakmile je replikace nakonfigurovaná, můžete ji otestovat vložením nových položek na vydavatele a sledováním šíření změn pro předplatitele.
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-Replprostředků .