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 Server nebo Azure SQL Managed Instance. SQL spravovaná instance může být vydavatelem, distributorem nebo předplatitelem v replikační topologii. Podívejte se na informace o konfiguracích transakční replikace pro dostupné konfigurace.

Transakční replikace je aktuálně ve verzi Public Preview pro SQL spravovanou instanci.

V tomto kurzu se dozvíte, jak:

  • Nakonfigurujte spravovanou instanci jako vydavatele a distributora replikace.
  • Nakonfigurujte spravovanou instanci jako předplatitele replikace.

Replicate between two managed instances

Tento kurz je určený pro zkušené cílové skupiny a předpokládá, že uživatel dobře zná nasazení a připojení k spravovaným instancím i virtuálním SQL Server v Azure.This tutorial is intended for a experienced audience and assumes that the user is familiar with deploying and connecting to both managed instances and SQL Server VMs within Azure.

Poznámka:

  • Tento článek popisuje použití transakční replikace v Azure SQL Spravované instanci. Nesouvisí se skupinami převzetíslužeb při selhání , což je funkce azure SQL spravované 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í jsou důležité další aspekty.

Požadavky

Konfigurace SQL spravované instance tak, aby fungovala jako vydavatel nebo distributor, vyžaduje:

  • Že je instance spravovaná vydavatelem ve stejné virtuální síti jako distributor a předplatitel nebo že brány VPN jsou nakonfigurované mezi virtuálními sítěmi všech tří entit.
  • Připojení používá SQL ověřování mezi účastníky replikace.
  • Sdílet účet úložiště Azure pro pracovní adresář replikace.
  • Port 445 (odchozí port TCP) je otevřený v pravidlech zabezpečení skupiny zabezpečení pro spravované instance pro přístup ke sdílené složky Azure. Pokud narazíte na chybu , budete muset přidat odchozí pravidlo do sítě sítě příslušné podsítě failed to connect to azure storage <storage account name> with os error 53 SQL spravované instance.

1 – Vytvoření skupiny zdrojů

Pomocí portálu Azure Portal můžete vytvořit skupinu prostředků s názvem .

2 – Vytváření spravovaných instancí

Na portálu Azure Portal můžete vytvořit dvě SQL spravované instance ve stejné virtuální síti a podsíti. Zadejte třeba název obou spravovaných instancí:

  • sql-mi-pub (spolu s některými znaky pro randomizaci)
  • sql-mi-sub (spolu s některými znaky pro randomizaci)

Pro připojení ke spravovaným instancím budete taky muset nakonfigurovat virtuální počítač Azure.You will also need to configure an Azure VM to connect to your managed instances.

3 – Vytvoření účtu úložiště Azure

Vytvořte účet úložiště Azure pro pracovní adresář a pak vytvořte sdílení souborů 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ávesy úložiště 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 publisheru

Připojení do spravované instance pomocí SQL Server Management Studio a spuštěním následujícího kódu sql-mi-pub 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 předplatitele

Připojení do spravované instance pomocí SQL Server Management Studio a spuštěním následujícího sql-mi-sub kódu T-SQL vytvořte prázdnou databázi předplatitele:

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řipojení ke spravované instanci pomocí SQL Server Management Studio a spusťte následující kód T-SQL pro konfiguraci sql-mi-pub distribuční databáze.

USE [master]
GO

EXEC sp_adddistributor @distributor = @@ServerName;
EXEC sp_adddistributiondb @database = N'distribution';
GO

7 – Konfigurace publisheru pro použití distributora

V aplikaci publisher SQL Managed Instance změňte spuštění dotazu na režim SQLCMD a spuštěním následujícího kódu zaregistrujte nového sql-mi-pub distributora u svého vydavatele. sql-mi-pub

: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ému souboru.

Tento skript nakonfiguruje místního vydavatele ve spravované instanci, přidá odkazovaný server a vytvoří sadu úloh pro SQL Server agenta.

8 – Vytvoření publikace a předplatitele

V režimu SQLCMD spusťte následující skript T-SQL, který povolí replikaci databáze a nakonfiguruje replikaci mezi vydavatelem, distributorem a předplatitelem.

-- 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 – Změna parametrů agenta

Azure SQL Spravované instance v současné době dochází k některým problémům s back-endem s připojením k replikačním agentům. 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 u vydavatele zvětšete č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átky na výchozí hodnotu, pokud to budete muset 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šíří na předplatitele.

Spuštěním následujícího fragmentu SQL T-SQL zobrazíte řádky u předplatitele:

select * from dbo.ReplTest

Spusťte následující výstřižek T-SQL, který vloží další řádky na vydavatele, a pak znovu zkontrolujte řádky u předplatitele.

INSERT INTO ReplTest (ID, c1) VALUES (15, 'pub')

Vyčištění zdrojů

Pokud chcete publikaci pustit, 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 publikování a distribuci zakázat, 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ů SQL instance ze skupiny prostředků a odstraněním skupiny prostředků .

Další kroky

Můžete také získat další informace o transakční replikaci pomocí spravované instance Azure SQL nebo se naučit konfigurovat replikaci mezi vydavatelem nebo distributorem spravované instance SQL a SQL předplatitelem virtuálního počítače Azure.