Replikacja transakcyjna z Azure SQL Managed Instance
Artykuł
Dotyczy: Azure SQL Managed Instance
Replikacja transakcyjna to funkcja Azure SQL Managed Instance i SQL Server, która umożliwia replikowanie danych z tabeli w Azure SQL Managed Instance lub w wystąpieniu SQL Server do tabel umieszczonych w zdalnych bazach danych. Ta funkcja umożliwia synchronizowanie wielu tabel w różnych bazach danych.
Omówienie
Za pomocą replikacji transakcyjnej można wypychać zmiany wprowadzone w wystąpieniu zarządzanym Azure SQL do:
Baza danych SQL Server (lokalna lub na maszynie wirtualnej platformy Azure)
Baza danych w usłudze Azure SQL Database
Wystąpienie bazy danych w usłudze Azure SQL Managed Instance
Kluczowymi składnikami replikacji transakcyjnej są wydawcy, dystrybutora i subskrybenta, jak pokazano na poniższej ilustracji:
Rola
Azure SQL Database
Wystąpienie zarządzane Azure SQL
Wydawca
Nie
Tak
Dystrybutor
Nie
Tak
Subskrybent ściągania
Nie
Tak
Subskrybent wypychania
Tak
Tak
Wydawca publikuje zmiany wprowadzone w niektórych tabelach (artykułach), wysyłając aktualizacje do dystrybutora. Wydawcą może być wystąpienie zarządzane Azure SQL lub wystąpienie SQL Server.
Dystrybutor zbiera zmiany w artykułach od wydawcy i dystrybuuje je do subskrybentów. Dystrybutor może być wystąpieniem zarządzanym Azure SQL lub wystąpieniem SQL Server (dowolna wersja, o ile jest równa lub wyższa niż wersja programu Publisher).
Subskrybent otrzymuje zmiany wprowadzone w wydawcy. Wystąpienie SQL Server i wystąpienie zarządzane Azure SQL mogą być zarówno wypychane, jak i ściągane, chociaż subskrypcja ściągania nie jest obsługiwana, gdy dystrybutor jest Azure SQL wystąpieniem zarządzanym, a subskrybent nie jest. Baza danych w usłudze Azure SQL Database może być tylko subskrybentem wypychania.
Azure SQL Managed Instance może obsługiwać bycie subskrybentem z następujących wersji SQL Server:
W przypadku innych wersji SQL Server, które nie obsługują publikowania obiektów na platformie Azure, można użyć metody ponownego publikowania danych, aby przenieść dane do nowszych wersji SQL Server.
Próba skonfigurowania replikacji przy użyciu starszej wersji może spowodować błąd MSSQL_REPL20084 (proces nie może nawiązać połączenia z subskrybentem) i MSSQL_REPL40532 (nie można otworzyć nazwy> serwera <żądanej podczas logowania. Logowanie nie powiodło się).
Macierz obsługi replikacji transakcyjnej dla Azure SQL Managed Instance jest taka sama jak w przypadku SQL Server.
Wydawca
Dystrybutor
Subskrybent
SQL Server 2022
SQL Server 2022
SQL Server 2022 SQL Server 2019 SQL Server 2017
SQL Server 2019
SQL Server 2022 SQL Server 2019
SQL Server 2022 SQL Server 2019 SQL Server 2017 SQL Server 2016
SQL Server 2017
SQL Server 2022 SQL Server 2019 SQL Server 2017
SQL Server 2022 SQL Server 2019 SQL Server 2017 SQL Server 2016 SQL Server 2014
SQL Server 2016
SQL Server 2022 SQL Server 2019 SQL Server 2017 SQL Server 2016
SQL Server 2019 SQL Server 2017 SQL Server 2016 SQL Server 2014 SQL Server 2012
SQL Server 2014
SQL Server 2022 SQL Server 2019 SQL Server 2017 SQL Server 2016 SQL Server 2014
SQL Server 2017 SQL Server 2016 SQL Server 2014 SQL Server 2012 SQL Server 2008 R2 SQL Server 2008
SQL Server 2012
SQL Server 2022 SQL Server 2019 SQL Server 2017 SQL Server 2016 SQL Server 2014 SQL Server 2012
SQL Server 2016 SQL Server 2014 SQL Server 2012 SQL Server 2008 R2 SQL Server 2008
SQL Server 2008 R2 SQL Server 2008
SQL Server 2022 SQL Server 2019 SQL Server 2017 SQL Server 2016 SQL Server 2014 SQL Server 2012 SQL Server 2008 R2 SQL Server 2008
SQL Server 2014 SQL Server 2012 SQL Server 2008 R2 SQL Server 2008
Kiedy stosować
Replikacja transakcyjna jest przydatna w następujących scenariuszach:
Opublikuj zmiany wprowadzone w co najmniej jednej tabeli w bazie danych i rozpowszechnij je do jednej lub wielu baz danych w wystąpieniu SQL Server lub Azure SQL Database, która subskrybuje zmiany.
Zachowaj kilka rozproszonych baz danych w stanie synchronizacji.
Migrowanie baz danych z jednego wystąpienia SQL Server lub Azure SQL Managed Instance do innej bazy danych przez ciągłe publikowanie zmian.
Porównywanie synchronizacji danych z replikacją transakcyjną
Kategoria
Synchronizacja danych
Replikacja transakcyjna
Zalety
- Obsługa aktywne-aktywne - Dwukierunkowe między lokalną i Azure SQL Database
- Mniejsze opóźnienie - Spójność transakcyjna — Ponowne używanie istniejącej topologii po migracji
Wady
- Brak spójności transakcyjnej - Większy wpływ na wydajność
— Nie można opublikować z usługi Azure SQL Database - Wysoki koszt konserwacji
Typowe konfiguracje
Ogólnie rzecz biorąc, wydawca i dystrybutor muszą znajdować się w chmurze lub lokalnie. Obsługiwane są następujące konfiguracje:
Wydawca z lokalnym dystrybutorem w SQL Managed Instance
Wydawca i dystrybutor są konfigurowane w ramach pojedynczego wystąpienia zarządzanego SQL i rozpowszechniają zmiany w innym wystąpieniu zarządzanym SQL, SQL Database lub SQL Server wystąpieniu.
Wydawca z dystrybutorem zdalnym w SQL Managed Instance
W tej konfiguracji jedno wystąpienie zarządzane SQL publikuje zmiany w dystrybutorze umieszczonym w innym wystąpieniu zarządzanym SQL, które może obsługiwać wiele źródłowych wystąpień zarządzanych SQL i rozpowszechniać zmiany w co najmniej jednym miejscu docelowym w usłudze Azure SQL Database, Azure SQL Managed Instance lub SQL Server.
Wydawca i dystrybutor są konfigurowane w dwóch wystąpieniach zarządzanych. Ta konfiguracja ma pewne ograniczenia:
Oba wystąpienia zarządzane znajdują się w tej samej sieci wirtualnej.
Oba wystąpienia zarządzane znajdują się w tej samej lokalizacji.
Lokalny wydawca/dystrybutor ze zdalnym subskrybentem
W tej konfiguracji baza danych w usłudze Azure SQL Database lub Azure SQL Managed Instance jest subskrybentem. Ta konfiguracja obsługuje migrację ze środowiska lokalnego na platformę Azure. Jeśli subskrybent jest bazą danych w usłudze Azure SQL Database, musi być w trybie wypychania.
Wymagania
Użyj uwierzytelniania SQL na potrzeby łączności między uczestnikami replikacji.
Użyj udziału konta usługi Azure Storage dla katalogu roboczego używanego przez replikację.
Otwórz port wychodzący TCP 445 w regułach zabezpieczeń podsieci, aby uzyskać dostęp do udziału plików platformy Azure.
Otwórz port wychodzący TCP 1433, gdy wystąpienie zarządzane SQL jest wydawcą/dystrybutorem, a subskrybent nie. Może być również konieczna zmiana reguły zabezpieczeń ruchu wychodzącego sieciowej grupy zabezpieczeń wystąpienia zarządzanego SQL dla allow_linkedserver_outboundtagu usługi docelowej 1433 z virtualnetwork na internet.
Umieść zarówno wydawcę, jak i dystrybutora w chmurze lub w obu środowiskach lokalnych.
Skonfiguruj komunikację równorzędną sieci VPN między sieciami wirtualnymi uczestników replikacji, jeśli sieci wirtualne są inne.
Uwaga
Błąd 53 może wystąpić podczas nawiązywania połączenia z plikiem usługi Azure Storage, jeśli port 445 sieciowej grupy zabezpieczeń ruchu wychodzącego jest blokowany, gdy dystrybutor jest bazą danych Azure SQL Managed Instance, a subskrybent jest lokalny. Zaktualizuj sieciową grupę zabezpieczeń sieci wirtualnej , aby rozwiązać ten problem.
Ograniczenia
Replikacja transakcyjna ma pewne ograniczenia specyficzne dla Azure SQL Managed Instance. Dowiedz się więcej o tych ograniczeniach w tej sekcji.
Pliki migawek nie są usuwane z konta usługi Azure Storage
Azure SQL Managed Instance używa skonfigurowanego przez użytkownika konta usługi Azure Storage dla plików migawek używanych do replikacji transakcyjnej. W przeciwieństwie do SQL Server w środowisku lokalnym Azure SQL Managed Instance nie usuwa plików migawek z konta usługi Azure Storage. Gdy pliki nie będą już potrzebne, należy je usunąć. Można to zrobić za pośrednictwem interfejsu usługi Azure Storage na Azure Portal, Eksplorator usługi Microsoft Azure Storage lub za pośrednictwem klientów wiersza polecenia (Azure PowerShell lub interfejsu wiersza polecenia) lub interfejsu API REST usługi Azure Storage Management.
Oto przykład sposobu usuwania pliku i usuwania pustego folderu.
Liczba agentów dystrybucji uruchomionych w sposób ciągły
Liczba agentów dystrybucji skonfigurowanych do ciągłego uruchamiania jest ograniczona do 30 w Azure SQL Managed Instance. Aby mieć więcej agentów dystrybucji, muszą być uruchomione na żądanie lub ze zdefiniowanym harmonogramem. Harmonogram można zdefiniować z częstotliwością dzienną i wystąpieniem co 10 sekund (lub więcej), więc mimo że nie jest to ciągłe, nadal można mieć dystrybutora, który wprowadza opóźnienie tylko kilka sekund. Jeśli wymagana jest duża liczba dystrybutorów, zaleca się używanie zaplanowanej i nie ciągłej konfiguracji.
Z grupami trybu failover
Używanie replikacji transakcyjnej z wystąpieniami w grupie trybu failover jest obsługiwane. Jeśli jednak skonfigurujesz replikację przed dodaniem wystąpienia zarządzanego SQL do grupy trybu failover, replikacja zostanie wstrzymana po rozpoczęciu tworzenia grupy trybu failover, a monitor replikacji wyświetla stan Replicated transactions are waiting for the next log backup or for mirroring partner to catch up. Replikacja zostanie wznowiona po pomyślnym utworzeniu grupy trybu failover.
Jeśli wystąpienie zarządzane SQL wydawcy lub dystrybutora znajduje się w grupie trybu failover, administrator wystąpienia zarządzanego SQL musi wyczyścić wszystkie publikacje na starym podstawowym serwerze podstawowym i ponownie skonfigurować je w nowym serwerze podstawowym po przejściu w tryb failover. W tym scenariuszu potrzebne są następujące działania:
Zatrzymaj wszystkie zadania replikacji uruchomione w bazie danych, jeśli istnieją.
Porzucanie metadanych subskrypcji od wydawcy przez uruchomienie następującego skryptu w bazie danych wydawcy. Zastąp <name of publication> wartości i <name of subscriber> :
SQL
EXEC sp_dropsubscription @publication = '<name of publication>',
@article = 'all',
@subscriber = '<name of subscriber>'
Usuwanie metadanych subskrypcji z subskrybenta. Uruchom następujący skrypt w bazie danych subskrypcji w wystąpieniu zarządzanym SQL subskrybenta. Zastąp <full DNS of publisher> wartość . Na przykład example.ac2d23028af5.database.windows.net:
SQL
EXEC sp_subscription_cleanup
@publisher = N'<full DNS of publisher>',
@publisher_db = N'<publisher database>',
@publication = N'<name of publication>';
Wymuś usunięcie wszystkich obiektów replikacji od wydawcy, uruchamiając następujący skrypt w opublikowanej bazie danych:
SQL
EXEC sp_removedbreplication;
Wymuś usunięcie starego dystrybutora z oryginalnego podstawowego wystąpienia zarządzanego SQL (w przypadku powrotu po awarii do starego serwera podstawowego, który był używany do dystrybucji). Uruchom następujący skrypt w bazie danych w starym wystąpieniu master zarządzanym SQL dystrybutora:
SQL
EXEC sp_dropdistributor 1, 1;
Jeśli subskrybent wystąpienia zarządzanego SQL znajduje się w grupie trybu failover, publikacja powinna być skonfigurowana do nawiązywania połączenia z punktem końcowym odbiornika grupy trybu failover dla wystąpienia zarządzanego SQL subskrybenta. W przypadku przejścia w tryb failover kolejna akcja administratora wystąpienia zarządzanego SQL zależy od typu trybu failover, który wystąpił:
W przypadku przejścia w tryb failover bez utraty danych replikacja będzie kontynuowana po przejściu w tryb failover.
W przypadku przejścia w tryb failover z utratą danych replikacja również działa. Ponownie replikuje utracone zmiany.
W przypadku przejścia w tryb failover z utratą danych, ale utrata danych wykracza poza okres przechowywania bazy danych dystrybucji, administrator wystąpienia zarządzanego SQL musi ponownie zainicjować bazę danych subskrypcji.
Następne kroki
Aby uzyskać więcej informacji na temat konfigurowania replikacji transakcyjnej, zobacz następujące samouczki:
Utwórz subskrypcję wypychania przy użyciu nazwy serwera jako subskrybenta (na przykład N'azuresqldbdns.database.windows.net), a baza danych w Azure SQL Nazwa bazy danych jako docelowa baza danych (na przykład Adventureworks).
W tym samouczku pokazano, jak skonfigurować replikację transakcyjną między wydawcą/dystrybutorem Azure SQL Managed Instance a subskrybentem SQL Managed Instance.
Samouczek, który konfiguruje replikację między wystąpieniem zarządzanym wydawcy, wystąpieniem zarządzanym dystrybutora i subskrybentem SQL Server na maszynie wirtualnej platformy Azure oraz niezbędnymi składnikami sieciowymi, takimi jak prywatna strefa DNS i komunikacja równorzędna sieci wirtualnych.