Oktatóanyag: Replikáció konfigurálása két felügyelt példány között

A következőre vonatkozik: Felügyelt Azure SQL-példány

A tranzakciós replikáció lehetővé teszi, hogy adatokat replikáljon az egyik adatbázisból egy másikba, amely az SQL Serveren vagy az Azure SQL Managed Instance-en fut. A felügyelt SQL-példány lehet közzétevő, terjesztő vagy előfizető a replikációs topológiában. Az elérhető konfigurációkhoz tekintse meg a tranzakciós replikáció konfigurációit.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Felügyelt példány konfigurálása replikáció közzétevőként és terjesztőként.
  • Felügyelt példány konfigurálása replikációs előfizetőként.

Replicate between two managed instances

Ez az oktatóanyag egy tapasztalt célközönség számára készült, és feltételezi, hogy a felhasználó ismeri a felügyelt példányok és az AZURE-beli SQL Server virtuális gépek üzembe helyezését és csatlakoztatását.

Megjegyzés:

  • Ez a cikk a tranzakciós replikáció használatát ismerteti a felügyelt Azure SQL-példányban. Nem kapcsolódik a feladatátvételi csoportokhoz, amely egy Felügyelt Azure SQL-példány funkció, amely lehetővé teszi az egyes példányok teljes olvasható replikáinak létrehozását. A tranzakciós replikáció feladatátvételi csoportokkal való konfigurálásakor további szempontokat is figyelembe kell venni.

Requirements

Ahhoz, hogy a felügyelt SQL-példány közzétevőként és/vagy forgalmazóként működjön, a következőkre van szükség:

  • Hogy a közzétevő által felügyelt példány ugyanazon a virtuális hálózaton található, mint a forgalmazó és az előfizető, vagy a virtuális hálózatok közötti társviszony-létesítés vagy VPN-átjárók mind a három entitás virtuális hálózatai között vannak konfigurálva.
  • Connectivity uses SQL Authentication between replication participants.
  • Azure Storage-fiókmegosztás a replikációs munkakönyvtárhoz.
  • A 445-ös port (TCP kimenő) az NSG biztonsági szabályaiban van megnyitva, hogy a felügyelt példányok hozzáférjenek az Azure-fájlmegosztáshoz. Ha hibát failed to connect to azure storage <storage account name> with os error 53tapasztal, egy kimenő szabályt kell hozzáadnia a megfelelő felügyelt SQL-példány alhálózatának NSG-éhez.

1 – Erőforráscsoport létrehozása

Az Azure Portal használatával hozzon létre egy erőforráscsoportot a névvelSQLMI-Repl.

2 – Felügyelt példányok létrehozása

Az Azure Portal használatával két felügyelt SQL-példányt hozhat létre ugyanazon a virtuális hálózaton és alhálózaton. Nevezze el például a két felügyelt példányt:

  • sql-mi-pub (néhány karakterrel együtt a véletlenszerűséghez)
  • sql-mi-sub (néhány karakterrel együtt a véletlenszerűséghez)

Emellett konfigurálnia kell egy Azure-beli virtuális gépet is a felügyelt példányokhoz való csatlakozáshoz .

3 – Azure Storage-fiók létrehozása

Hozzon létre egy Azure Storage-fiókot a munkakönyvtárhoz, majd hozzon létre egy fájlmegosztást a tárfiókon belül.

Másolja a fájlmegosztás elérési útját a következő formátumban: \\storage-account-name.file.core.windows.net\file-share-name

Example: \\replstorage.file.core.windows.net\replshare

Másolja a tárelérési kulcsokat a következő formátumban: DefaultEndpointsProtocol=https;AccountName=<Storage-Account-Name>;AccountKey=****;EndpointSuffix=core.windows.net

Example: DefaultEndpointsProtocol=https;AccountName=replstorage;AccountKey=dYT5hHZVu9aTgIteGfpYE64cfis0mpKTmmc8+EP53GxuRg6TCwe5eTYWrQM4AmQSG5lb3OBskhg==;EndpointSuffix=core.windows.net

További információ: Tárfiók hozzáférési kulcsainak kezelése.

4 – Közzétevő adatbázis létrehozása

Csatlakozás a felügyelt példányhoz az sql-mi-pub SQL Server Management Studióval, és futtassa a következő Transact-SQL -kódot (T-SQL) a közzétevő adatbázis létrehozásához:

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 – Előfizetői adatbázis létrehozása

Csatlakozás a felügyelt példányhoz az sql-mi-sub SQL Server Management Studióval, és futtassa a következő T-SQL-kódot az üres előfizetői adatbázis létrehozásához:

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 – A disztribúció konfigurálása

Csatlakozás a felügyelt példányra az sql-mi-pub SQL Server Management Studióval, és futtassa a következő T-SQL-kódot a terjesztési adatbázis konfigurálásához.

USE [master]
GO

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

7 – A közzétevő konfigurálása a terjesztő használatára

A közzétevő felügyelt SQL-példányán sql-mi-pubmódosítsa a lekérdezés végrehajtását SQLCMD módra, és futtassa a következő kódot az új terjesztő regisztrálásához a közzétevőnél.

: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

Megjegyzés:

Ügyeljen arra, hogy csak fordított perjeleket (\) használjon a file_storage paraméterhez. A perjel (/) használata hibát okozhat a fájlmegosztáshoz való csatlakozáskor.

Ez a szkript konfigurál egy helyi közzétevőt a felügyelt példányon, hozzáad egy csatolt kiszolgálót, és létrehoz egy feladatkészletet az SQL Server-ügynök számára.

8 – Kiadvány és előfizető létrehozása

SQLCMD módban futtassa a következő T-SQL-szkriptet az adatbázis replikációjának engedélyezéséhez, és konfigurálja a replikációt a közzétevő, a terjesztő és az előfizető között.

-- 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 – Ügynökparaméterek módosítása

A felügyelt Azure SQL-példány jelenleg néhány háttérbeli problémát tapasztal a replikációs ügynökökkel való kapcsolattal kapcsolatban. A probléma megoldása közben a megkerülő megoldás a replikációs ügynökök bejelentkezési időtúllépési értékének növelése.

Futtassa a következő T-SQL-parancsot a közzétevőn a bejelentkezési időtúllépés növeléséhez:

-- 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 %'

A következő T-SQL-parancs ismételt futtatásával állítsa vissza a bejelentkezési időtúllépést az alapértelmezett értékre, ha erre van szükség:

-- 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 %'

A módosítások alkalmazásához indítsa újra mindhárom ügynököt.

10 – Replikáció tesztelése

Miután konfigurálta a replikációt, tesztelheti azt úgy, hogy új elemeket szúr be a közzétevőbe, és figyeli, ahogy a módosítások propagálása megtörténik az előfizető számára.

Futtassa a következő T-SQL-kódrészletet az előfizető sorainak megtekintéséhez:

select * from dbo.ReplTest

Futtassa a következő T-SQL-kódrészletet, hogy további sorokat szúrjon be a közzétevőbe, majd ellenőrizze újra a sorokat az előfizetőn.

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

Clean up resources

A kiadvány elvetéséhez futtassa a következő T-SQL-parancsot:

-- Drops the publication
USE [ReplTran_PUB]
EXEC sp_droppublication @publication = N'PublishData'
GO

A replikációs beállítás adatbázisból való eltávolításához futtassa a következő T-SQL-parancsot:

-- Disables publishing of the database
USE [ReplTran_PUB]
EXEC sp_removedbreplication
GO

A közzététel és a terjesztés letiltásához futtassa a következő T-SQL-parancsot:

-- Drops the distributor
USE [master]
EXEC sp_dropdistributor @no_checks = 1
GO

Az Azure-erőforrások törléséhez törölje a felügyelt SQL-példány erőforrásait az erőforráscsoportból , majd törölje az erőforráscsoportot SQLMI-Repl.

További lépések

További információ a felügyelt Azure SQL-példányokkal történő tranzakciós replikációról, illetve a felügyelt SQL-példány közzétevője/forgalmazója és az Azure-beli virtuálisgép-előfizetők SQL-példánya közötti replikáció konfigurálásáról is.