Sdílet prostřednictvím


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 předplatitelem v topologii replikace. Dostupné konfigurace transakční replikace najdete zde.

V tomto kurzu se naučíte:

  • Nakonfigurujte spravovanou instanci SQL jako vydavatele replikace.
  • Nakonfigurujte spravovanou instanci SQL jako distributora replikace.
  • Nakonfigurujte SQL Server jako odběratele.

Diagram znázorňující replikaci mezi vydavatelem spravované instance SQL, distributorem spravované instance SQL a předplatitelem SQL Serveru

Tento kurz je určený zkušeným cílovým skupinám a předpokládá, že je uživatel 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

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í SQL 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řte skupinu 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í SQL

Pomocí webu Azure Portal vytvořte dvě spravované instance SQL v této nové skupině prostředků.

  • Název spravované instance SQL 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ýt vnet-sql-mi-publisher.

  • Název distributora spravované instance SQL 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 SQL vydavatele.

    Snímek obrazovky znázorňující použití virtuální sítě vydavatele pro distributora

Další informace o vytvoření spravované instance SQL najdete v tématu Vytvoření spravované instance SQL 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 SQL 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-subscriber
  • Obrázek: SQL Server 2016 nebo novější
  • Skupina prostředků: stejná jako spravovaná instance SQL
  • Virtuální síť: sql-vm-subscriber-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 propojení virtuálních sítí

Nakonfigurujte VNet Peering tak, aby umožňoval komunikaci mezi virtuální sítí dvou spravovaných instancí SQL 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-subscriber-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 vytvoření partnerského vztahu virtuálních sítí otestujte připojení spuštěním aplikace SQL Server Management Studio (SSMS) na hostiteli SQL Serveru a připojením k oběma spravovaným instancím SQL. Další informace o připojení ke spravované instanci SQL pomocí SSMS najdete v tématu Použití aplikace SSMS pro připojení ke službě SQL Managed Instance.

Snímek obrazovky znázorňující, jak otestovat připojení ke spravovaným instancím SQL

Vytvoření privátní zóny DNS

Privátní zóna DNS umožňuje směrování DNS mezi spravovanými instancemi SQL a SQL Serverem.

Vytvoření privátní zóny DNS

  1. Přihlaste se k webu Azure Portal.

  2. Vyberte Vytvořit prostředek a vytvořte nový prostředek Azure.

  3. Vyhledejte private dns zone na Azure Marketplace.

  4. Zvolte prostředek privátní zóny DNS publikovaný Microsoftem a pak vyberte Vytvořit a vytvořte zónu DNS.

  5. V rozevíracím seznamu zvolte předplatné a skupinu prostředků.

  6. Zadejte libovolný název zóny DNS, například repldns.com.

    Snímek obrazovky znázorňující zónu Vytvořit privátní DNS na webu Azure Portal

  7. Vyberte Zkontrolovat a vytvořit. Zkontrolujte parametry privátní zóny DNS a pak vyberte Vytvořit a vytvořte prostředek.

Vytvořte záznam A

  1. Přejděte do nové zóny Privátní DNS a vyberte Přehled.

  2. Vyberte + Sada záznamů a vytvořte nový záznam A.

  3. Zadejte název virtuálního počítače s SQL Serverem a také privátní interní IP adresu.

    Snímek obrazovky znázorňující, jak nakonfigurovat záznam A

  4. Vyberte OK a vytvořte záznam A.

  1. Přejděte do nové zóny Privátní DNS a vyberte propojení virtuální sítě.

  2. Vyberte + Přidat.

  3. Zadejte název odkazu, například Pub-link.

  4. V rozevíracím seznamu vyberte své předplatné a pak vyberte virtuální síť pro spravovanou instanci SQL vydavatele.

  5. Zaškrtněte políčko vedle možnosti Povolit automatickou registraci.

    Snímek obrazovky znázorňující, jak vytvořit odkaz na virtuální síť

  6. Pokud chcete propojit virtuální síť, vyberte OK .

  7. 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řipojovací řetězec přístupového klíče úložiště 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ě.

Vytvořit databázi

Vytvořte novou databázi ve spravované instanci SQL vydavatele. Postup je následující:

  1. Spusťte SQL Server Management Studio na SQL Serveru.
  2. Připojte se ke spravované instanci SQL vydavatele (sql-mi-publisher).
  3. 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

Konfigurujte distribuci

Po navázání připojení a máte ukázkovou databázi, můžete nakonfigurovat distribuci ve spravované instanci SQL distributora (sql-mi-distributor). Postup je následující:

  1. Spusťte SQL Server Management Studio na SQL Serveru.

  2. Připojte se ke spravované instanci SQL distributora (sql-mi-distributor).

  3. Otevřete okno Nový dotaz a spuštěním následujícího Transact-SQL kódu nakonfigurujte distribuci ve spravované instanci SQL 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=123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ==;EndpointSuffix=core.windows.net'
    

    Poznámka:

    Nezapomeňte pro \ parametr použít pouze zpětná lomítka (@working_directory). Použití lomítka (/) může způsobit chybu při připojování ke sdílené složce.

  4. Připojte se ke spravované instanci SQL vydavatele (sql-mi-publisher).

  5. Otevřete okno Nový dotaz a spuštěním následujícího Transact-SQL kódu zaregistrujte distributora u vydavatele:

    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 můžete publikaci vytvořit. Postup je následující:

  1. Spusťte SQL Server Management Studio na SQL Serveru.

  2. Připojte se ke spravované instanci SQL vydavatele (sql-mi-publisher).

  3. V Průzkumník objektů rozbalte uzel Replikace a klikněte pravým tlačítkem myši na složku Místní publikace. Vyberte Nová publikace....

  4. Výběrem možnosti Další přejdete na úvodní stránku.

  5. Na stránce Databáze publikace vyberte ReplTutorial databázi, kterou jste vytvořili dříve. Vyberte Další.

  6. Na stránce Typ publikace vyberte Transakční publikaci. Vyberte Další.

  7. Na stránce Články zaškrtněte políčko vedle tabulek. Vyberte Další.

  8. Na stránce Filtrovat řádky tabulky vyberte Další bez přidání filtrů.

  9. Na stránce agenta snímků zaškrtněte políčko vedle možnosti Vytvořit snímek okamžitě a držet snímek k dispozici k inicializaci předplatného. Vyberte Další.

  10. Na stránce Zabezpečení agenta vyberte Nastavení zabezpečení.... Zadejte přihlašovací údaje SQL Serveru pro použití pro agenta snímků a pro připojení k vydavateli. Výběrem OK zavřete stránku zabezpečení agenta snímků. Vyberte Další.

    Snímek obrazovky znázorňující, jak nakonfigurovat zabezpečení snapshot agenta

  11. 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í.

  12. Na stránce Dokončit průvodce pojmenujte publikaci ReplTesta výběrem možnosti Další vytvořte publikaci.

  13. 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í:

  1. Spusťte SQL Server Management Studio na SQL Serveru.
  2. Připojte se ke spravované instanci SQL vydavatele (sql-mi-publisher).
  3. 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-subscriber.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-subscriber.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')

Uvolnění prostředků

  1. Na webu Azure Portal přejděte ke své skupině prostředků.
  2. Vyberte spravované instance SQL 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 až do jeho dokončení nebudete moct odstranit virtuální cluster ani žádné jiné závislé prostředky. Sledujte odstranění na kartě Aktivita a ověřte, že vaše spravovaná instance SQL byla odstraněna.
  3. Po odstranění spravované instance SQL 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.
  4. 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.
  5. Odstraňte skupinu prostředků tak, že vyberete Odstranit skupinu prostředků, zadáte název skupiny myResourceGroupprostř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 ve vlastnostech publikace změňte přihlašovací údaje na SQL Server.

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 Obtained Azure Storage Connection String for replstorage
2019-11-19 02:21:05.07 Connecting to Azure Files Storage '\\replstorage.file.core.windows.net\replshare'
2019-11-19 02:21:31.21 Failed to connect to Azure Storage '' with OS error: 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 také použití lomítka místo zpětného lomítka v cestě k souboru sdílené složky.

  • To je přijatelné: \\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-SUBSCRIBER
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 připojení virtuálních sítí nastavené správně.

Žá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 tato chyba způsobit také starší verze aplikace SQL Server Management Studio. Zkuste upgradovat na SQL Server Management Studio 18.0 nebo novější, abyste tento problém vyloučili jako původní příčinu.