Samouczek: konfigurowanie replikacji transakcyjnej między usługą Azure SQL Managed Instance i programem SQL Server
Dotyczy:Azure SQL Managed Instance
Replikacja transakcyjna umożliwia replikowanie danych z jednej bazy danych do innej hostowanej w programie SQL Server lub usłudze Azure SQL Managed Instance. Wystąpienie zarządzane SQL może być wydawcą, dystrybutorem lub subskrybentem w topologii replikacji. Aby uzyskać dostępne konfiguracje, zobacz Konfiguracje replikacji transakcyjnej.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Skonfiguruj wystąpienie zarządzane jako wydawcę replikacji.
- Konfigurowanie wystąpienia zarządzanego jako dystrybutora replikacji.
- Skonfiguruj program SQL Server jako subskrybenta.
Ten samouczek jest przeznaczony dla doświadczonych odbiorców i zakłada, że użytkownik jest zaznajomiony z wdrażaniem i nawiązywaniem połączenia z wystąpieniami zarządzanymi i maszynami wirtualnymi programu SQL Server na platformie Azure.
Uwaga
W tym artykule opisano użycie replikacji transakcyjnej w usłudze Azure SQL Managed Instance. Nie jest to powiązane z grupami trybu failover— funkcją usługi Azure SQL Managed Instance, która umożliwia tworzenie pełnych replik do odczytu poszczególnych wystąpień. Podczas konfigurowania replikacji transakcyjnej z grupami trybu failover należy wziąć pod uwagę dodatkowe zagadnienia.
Wymagania wstępne
Aby ukończyć ten samouczek, upewnij się, że dysponujesz następującymi elementami:
- Subskrypcja platformy Azure.
- Doświadczenie w wdrażaniu dwóch wystąpień zarządzanych w tej samej sieci wirtualnej.
- Subskrybent programu SQL Server lokalnie lub na maszynie wirtualnej platformy Azure. W tym samouczku jest używana maszyna wirtualna platformy Azure.
- PROGRAM SQL Server Management Studio (SSMS) 18.0 lub nowszy.
- Najnowsza wersja programu Azure PowerShell.
- Porty 445 i 1433 zezwalają na ruch SQL zarówno przez zaporę platformy Azure, jak i zaporę systemu Windows.
Tworzenie grupy zasobów
Użyj następującego fragmentu kodu programu PowerShell, aby utworzyć nową grupę zasobów:
# set variables
$ResourceGroupName = "SQLMI-Repl"
$Location = "East US 2"
# Create a new resource group
New-AzResourceGroup -Name $ResourceGroupName -Location $Location
Tworzenie dwóch wystąpień zarządzanych
Utwórz dwa wystąpienia zarządzane w tej nowej grupie zasobów przy użyciu witryny Azure Portal.
Nazwa wystąpienia zarządzanego wydawcy powinna mieć
sql-mi-publisher
wartość (wraz z kilkoma znakami dla losowania), a nazwa sieci wirtualnej powinna mieć wartośćvnet-sql-mi-publisher
.Nazwa wystąpienia zarządzanego dystrybutora powinna być
sql-mi-distributor
(wraz z kilkoma znakami losowości) i powinna znajdować się w tej samej sieci wirtualnej co wystąpienie zarządzane wydawcy.
Aby uzyskać więcej informacji na temat tworzenia wystąpienia zarządzanego, zobacz Tworzenie wystąpienia zarządzanego w portalu.
Uwaga
Ze względu na prostotę i ponieważ jest to najbardziej typowa konfiguracja, ten samouczek sugeruje umieszczenie wystąpienia zarządzanego dystrybutora w tej samej sieci wirtualnej co wydawca. Można jednak utworzyć dystrybutora w oddzielnej sieci wirtualnej. W tym celu należy skonfigurować komunikację równorzędną sieci wirtualnych między sieciami wirtualnymi wydawcy i dystrybutora, a następnie skonfigurować komunikację równorzędną sieci wirtualnych między sieciami wirtualnymi dystrybutora i subskrybenta.
Tworzenie maszyny wirtualnej z programem SQL Server
Utwórz maszynę wirtualną z programem SQL Server przy użyciu witryny Azure Portal. Maszyna wirtualna programu SQL Server powinna mieć następujące cechy:
- Nazwa:
sql-vm-sub
- Obraz: SQL Server 2016 lub nowszy
- Grupa zasobów: taka sama jak wystąpienie zarządzane
- Sieć wirtualna:
sql-vm-sub-vnet
Aby uzyskać więcej informacji na temat wdrażania maszyny wirtualnej z programem SQL Server na platformie Azure, zobacz Szybki start: tworzenie maszyny wirtualnej z programem SQL Server.
Zarządzanie komunikacją równorzędną sieci wirtualnych
Skonfiguruj komunikację równorzędną sieci wirtualnych, aby umożliwić komunikację między siecią wirtualną dwóch wystąpień zarządzanych i siecią wirtualną programu SQL Server. W tym celu użyj tego fragmentu kodu programu PowerShell:
# Set variables
$SubscriptionId = '<SubscriptionID>'
$resourceGroup = 'SQLMI-Repl'
$pubvNet = 'sql-mi-publisher-vnet'
$subvNet = 'sql-vm-sub-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 ustanowieniu komunikacji równorzędnej sieci wirtualnych przetestuj łączność, uruchamiając program SQL Server Management Studio (SSMS) w programie SQL Server i łącząc się z obydwoma wystąpieniami zarządzanymi. Aby uzyskać więcej informacji na temat nawiązywania połączenia z wystąpieniem zarządzanym przy użyciu programu SSMS, zobacz Nawiązywanie połączenia z usługą SQL Managed Instance przy użyciu programu SSMS.
Tworzenie prywatnej strefy DNS
Prywatna strefa DNS umożliwia routing DNS między wystąpieniami zarządzanymi i programem SQL Server.
Tworzenie prywatnej strefy DNS
Zaloguj się do Azure Portal.
Wybierz pozycję Utwórz zasób, aby utworzyć nowy zasób platformy Azure.
Wyszukaj ciąg
private dns zone
w witrynie Azure Marketplace.Wybierz zasób strefy Prywatna strefa DNS opublikowany przez firmę Microsoft, a następnie wybierz pozycję Utwórz, aby utworzyć strefę DNS.
Wybierz subskrypcję i grupę zasobów z listy rozwijanej.
Podaj dowolną nazwę strefy DNS, taką jak
repldns.com
.Wybierz pozycję Przejrzyj i utwórz. Przejrzyj parametry prywatnej strefy DNS, a następnie wybierz pozycję Utwórz , aby utworzyć zasób.
Tworzenie rekordu A
Przejdź do nowej strefy Prywatna strefa DNS i wybierz pozycję Przegląd.
Wybierz pozycję + Zestaw rekordów, aby utworzyć nowy rekord A.
Podaj nazwę maszyny wirtualnej z programem SQL Server, a także prywatny wewnętrzny adres IP.
Wybierz przycisk OK , aby utworzyć rekord A.
Łączenie sieci wirtualnej
Przejdź do nowej strefy Prywatna strefa DNS i wybierz pozycję Łącza sieci wirtualnej.
Wybierz + Dodaj.
Podaj nazwę linku, na przykład
Pub-link
.Wybierz swoją subskrypcję z listy rozwijanej, a następnie wybierz sieć wirtualną dla wystąpienia zarządzanego wydawcy.
Zaznacz pole wyboru obok pozycji Włącz automatyczną rejestrację.
Wybierz przycisk OK , aby połączyć sieć wirtualną.
Powtórz te kroki, aby dodać link dla sieci wirtualnej subskrybenta z nazwą taką jak
Sub-link
.
Tworzenie konta usługi Azure Storage
Utwórz konto usługi Azure Storage dla katalogu roboczego, a następnie utwórz udział plików na koncie magazynu.
Skopiuj ścieżkę udziału plików w formacie: \\storage-account-name.file.core.windows.net\file-share-name
Przykład: \\replstorage.file.core.windows.net\replshare
Skopiuj klucz dostępu do magazynu parametry połączenia w formacie:DefaultEndpointsProtocol=https;AccountName=<Storage-Account-Name>;AccountKey=****;EndpointSuffix=core.windows.net
Przykład: DefaultEndpointsProtocol=https;AccountName=replstorage;AccountKey=dYT5hHZVu9aTgIteGfpYE64cfis0mpKTmmc8+EP53GxuRg6TCwe5eTYWrQM4AmQSG5lb3OBskhg==;EndpointSuffix=core.windows.net
Aby uzyskać więcej informacji, zobacz Zarządzanie kluczami dostępu do konta magazynu.
Utwórz bazę danych
Utwórz nową bazę danych w wystąpieniu zarządzanym wydawcy. W tym celu wykonaj następujące kroki:
- Uruchom program SQL Server Management Studio w programie SQL Server.
- Połączenie do wystąpienia zarządzanego
sql-mi-publisher
. - Otwórz okno Nowe zapytanie i wykonaj następujące zapytanie T-SQL, aby utworzyć bazę danych.
-- 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
Konfigurowanie dystrybucji
Po nawiązaniu łączności i utworzeniu przykładowej bazy danych można skonfigurować dystrybucję w wystąpieniu sql-mi-distributor
zarządzanym. W tym celu wykonaj następujące kroki:
Uruchom program SQL Server Management Studio w programie SQL Server.
Połączenie do wystąpienia zarządzanego
sql-mi-distributor
.Otwórz okno Nowe zapytanie i uruchom następujący kod Języka Transact-SQL, aby skonfigurować dystrybucję w wystąpieniu zarządzanym dystrybutora:
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=dYT5hHZVu9aTgIteGfpYE64cfis0mpKTmmc8+EP53GxuRg6TCwe5eTYWrQM4AmQSG5lb3OBskhg==;EndpointSuffix=core.windows.net'
Uwaga
Pamiętaj, aby użyć tylko ukośników odwrotnych (
\
) dla parametru @working_directory . Użycie ukośnika (/
) może spowodować błąd podczas nawiązywania połączenia z udziałem plików.Połączenie do wystąpienia zarządzanego
sql-mi-publisher
.Otwórz okno Nowe zapytanie i uruchom następujący kod języka Transact-SQL, aby zarejestrować dystrybutora w wydawcy:
Use MASTER EXEC sys.sp_adddistributor @distributor = 'sql-mi-distributor.b6bf57.database.windows.net', @password = '<distributor_admin_password>'
Tworzenie publikacji
Po skonfigurowaniu dystrybucji można teraz utworzyć publikację. W tym celu wykonaj następujące kroki:
Uruchom program SQL Server Management Studio w programie SQL Server.
Połączenie do wystąpienia zarządzanego
sql-mi-publisher
.W Eksplorator obiektów rozwiń węzeł Replikacja i kliknij prawym przyciskiem myszy folder Publikacja lokalna. Wybierz pozycję Nowa publikacja....
Wybierz przycisk Dalej , aby przejść obok strony powitalnej.
Na stronie Baza danych publikacji wybierz utworzoną
ReplTutorial
wcześniej bazę danych. Wybierz Dalej.Na stronie Typ publikacji wybierz pozycję Publikacja transakcyjna. Wybierz Dalej.
Na stronie Artykuły zaznacz pole wyboru obok pozycji Tabele. Wybierz Dalej.
Na stronie Filtrowanie wierszy tabeli wybierz pozycję Dalej bez dodawania filtrów.
Na stronie Agent migawek zaznacz pole wyboru obok pozycji Utwórz migawkę natychmiast i zachowaj migawkę dostępną do inicjowania subskrypcji. Wybierz Dalej.
Na stronie Zabezpieczenia agenta wybierz pozycję Zabezpieczenia Ustawienia.... Podaj poświadczenia logowania programu SQL Server do użycia dla agenta migawek i połącz się z wydawcą. Wybierz przycisk OK , aby zamknąć stronę Zabezpieczenia agenta migawek. Wybierz Dalej.
Na stronie Akcje kreatora wybierz pozycję Utwórz publikację, a (opcjonalnie) wybierz pozycję Wygeneruj plik skryptu z krokami tworzenia publikacji, jeśli chcesz zapisać ten skrypt do późniejszego użycia.
Na stronie Zakończ pracę kreatora nadaj publikacji nazwę i
ReplTest
wybierz przycisk Dalej, aby utworzyć publikację.Po utworzeniu publikacji odśwież węzeł Replikacja w Eksplorator obiektów i rozwiń węzeł Publikacje lokalne, aby zobaczyć nową publikację.
Tworzenie subskrypcji
Po utworzeniu publikacji możesz utworzyć subskrypcję. W tym celu wykonaj następujące kroki:
- Uruchom program SQL Server Management Studio w programie SQL Server.
- Połączenie do wystąpienia zarządzanego
sql-mi-publisher
. - Otwórz okno Nowe zapytanie i uruchom następujący kod języka Transact-SQL, aby dodać subskrypcję i agenta dystrybucji. Użyj dns jako części nazwy subskrybenta.
use [ReplTutorial]
exec sp_addsubscription
@publication = N'ReplTest',
@subscriber = N'sql-vm-sub.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-sub.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
Testowanie replikacji
Po skonfigurowaniu replikacji można ją przetestować, wstawiając nowe elementy wydawcy i obserwując propagację zmian do subskrybenta.
Uruchom następujący fragment kodu T-SQL, aby wyświetlić wiersze dla subskrybenta:
Use ReplSub
select * from dbo.ReplTest
Uruchom poniższy fragment kodu T-SQL, aby wstawić dodatkowe wiersze do wydawcy, a następnie ponownie sprawdź wiersze na subskrybenta.
Use ReplTutorial
INSERT INTO ReplTest (ID, c1) VALUES (15, 'pub')
Czyszczenie zasobów
- Przejdź do grupy zasobów w witrynie Azure Portal.
- Wybierz wystąpienia zarządzane, a następnie wybierz pozycję Usuń. Wpisz
yes
w polu tekstowym, aby potwierdzić, że chcesz usunąć zasób, a następnie wybierz pozycję Usuń. Ukończenie tego procesu w tle może zająć trochę czasu i dopóki nie zostanie to zrobione, nie będzie można usunąć klastra wirtualnego ani żadnych innych zasobów zależnych. Monitoruj usuwanie na karcie Działanie , aby potwierdzić, że wystąpienie zarządzane zostało usunięte. - Po usunięciu wystąpienia zarządzanego usuń klaster wirtualny, wybierając go w grupie zasobów, a następnie wybierając pozycję Usuń. Wpisz
yes
w polu tekstowym, aby potwierdzić, że chcesz usunąć zasób, a następnie wybierz pozycję Usuń. - Usuń wszystkie pozostałe zasoby. Wpisz
yes
w polu tekstowym, aby potwierdzić, że chcesz usunąć zasób, a następnie wybierz pozycję Usuń. - Usuń grupę zasobów, wybierając pozycję Usuń grupę zasobów, wpisując nazwę grupy zasobów ,
myResourceGroup
a następnie wybierając pozycję Usuń.
Znane błędy
Identyfikatory logowania systemu Windows nie są obsługiwane
Exception Message: Windows logins are not supported in this version of SQL Server.
Agent został skonfigurowany przy użyciu nazwy logowania systemu Windows i musi zamiast tego użyć nazwy logowania programu SQL Server. Użyj strony Zabezpieczenia agenta właściwości publikacji, aby zmienić poświadczenia logowania na identyfikator logowania programu SQL Server.
Nie można nawiązań połączenia z usługą 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 Uzyskany ciąg Połączenie ion usługi Azure Storage dla repozytorium 2019-11-19 02:21:05.07 Połączenie do usługi Azure Files Storage "\replstorage.file.core.windows.net\replshare" 2019-11-19 02:21:31.21 Nie można nawiązać połączenia z usługą Azure Storage "" z błędem systemu operacyjnego: 53.
Prawdopodobnie jest to spowodowane zamknięciem portu 445 w zaporze platformy Azure, zaporze systemu Windows lub obu tych portach.
Connecting to Azure Files Storage '\\replstorage.file.core.windows.net\replshare' Failed to connect to Azure Storage '' with OS error: 55.
Użycie ukośnika zamiast ukośnika odwrotnego w ścieżce pliku udziału plików może spowodować ten błąd.
- To jest w porządku:
\\replstorage.file.core.windows.net\replshare
- Może to spowodować błąd systemu operacyjnego 55:
'\\replstorage.file.core.windows.net/replshare'
Nie można nawiązać połączenia z subskrybentem
The process could not connect to Subscriber 'SQL-VM-SUB
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żliwe rozwiązania:
- Upewnij się, że port 1433 jest otwarty.
- Upewnij się, że protokół TCP/IP jest włączony dla subskrybenta.
- Upewnij się, że nazwa DNS została użyta podczas tworzenia subskrybenta.
- Sprawdź, czy sieci wirtualne są poprawnie połączone w prywatnej strefie DNS.
- Sprawdź, czy rekord A jest poprawnie skonfigurowany.
- Sprawdź, czy komunikacja równorzędna sieci wirtualnych jest poprawnie skonfigurowana.
Brak publikacji, do których można subskrybować
Podczas dodawania nowej subskrypcji przy użyciu kreatora Nowa subskrypcja na stronie Publikacja może się okazać, że nie ma baz danych i publikacji wymienionych jako dostępne opcje i może zostać wyświetlony następujący komunikat o błędzie:
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.
Chociaż jest możliwe, że ten komunikat o błędzie jest dokładny i naprawdę nie ma publikacji dostępnych dla wydawcy, z którym nawiązałeś połączenie, lub brakuje wystarczających uprawnień, ten błąd może być również spowodowany przez starszą wersję programu SQL Server Management Studio. Spróbuj przeprowadzić uaktualnienie do programu SQL Server Management Studio 18.0 lub nowszego, aby wykluczyć to jako główną przyczynę.
Następne kroki
Włączanie funkcji zabezpieczeń.
Zobacz artykuł Co to jest usługa Azure SQL Managed Instance? (Co to jest usługa Azure SQL Managed Instance?), aby uzyskać pełną listę sposobów zabezpieczania bazy danych. Omówione są następujące funkcje zabezpieczeń:
- Inspekcja usługi SQL Managed Instance
- Zawsze szyfrowane
- Wykrywanie zagrożeń
- Dynamiczne maskowanie danych
- Zabezpieczenia na poziomie wiersza
- Transparent Data Encryption (TDE)
Możliwości usługi SQL Managed Instance
Aby zapoznać się z pełnym omówieniem możliwości wystąpienia zarządzanego, zobacz:
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla