Migrowanie do usługi Azure SQL Database przy użyciu metody online
Jeśli potrzebujesz bazy danych, aby pozostać w trybie online dla użytkowników w całym procesie migracji, możesz użyć replikacji transakcyjnej, aby przenieść dane. Replikacja transakcyjna jest jedyną metodą online dostępną do migracji do usługi Azure SQL Database.
W naszym scenariuszu producenta rowerów magazyny działają przez 24 godziny, 7 dni w tygodniu i nie ma okresów braku aktywności. Zarząd chce mieć pewność, że baza danych spisu jest stale dostępna, nawet podczas migracji do usługi Azure SQL Database.
Co to jest replikacja transakcyjna?
Replikacja transakcyjna to sposób przenoszenia danych między stale połączonymi serwerami baz danych.
Proces rozpoczyna się od migawki obiektów i danych bazy danych publikacji. Po utworzeniu początkowej migawki wszelkie kolejne zmiany danych lub schematu w programie Publisher są zwykle dostarczane do usługi Azure SQL Database niemal w czasie rzeczywistym w miarę ich występowania.
Usługa Azure SQL Database obsługuje zarówno replikację transakcyjną, jak i migawkę jako subskrybent wypychania. Oznacza to, że usługa Azure SQL Database może odbierać i stosować zmiany od wydawcy przy użyciu replikacji transakcyjnej lub migawki.
Wydawca i/lub dystrybutor może być wystąpieniem programu SQL Server, które działa lokalnie, na maszynie wirtualnej platformy Azure w chmurze lub jako wystąpienie zarządzane usługi Azure SQL.
Replikację transakcyjną można skonfigurować za pomocą programu SQL Server Management Studio lub wykonując instrukcje Języka Transact-SQL dla wydawcy. Nie można skonfigurować replikacji transakcyjnej w witrynie Azure Portal.
Replikacja transakcyjna wymaga następujących składników:
Rola | Definicja |
---|---|
Wydawca | Wystąpienie bazy danych, które hostuje dane do replikacji (źródło). |
Abonent | Odbiera dane replikowane przez program Publisher (element docelowy). |
Dystrybutor | Zbiera zmiany w artykułach z programu Publisher i dystrybuuje je do subskrybentów. |
Artykuł | Obiekt bazy danych; na przykład tabela zawarta w publikacji. |
Publikacja | Kolekcja co najmniej jednego artykułu z replikowanej bazy danych. |
Subskrypcja | Żądanie od subskrybenta publikacji. |
Konfigurowanie replikacji transakcyjnej
Wykonaj poniższe kroki, aby przeprowadzić migrację tabeli [Person].[Person]
z bazy danych AdventureWorks do usługi Azure SQL Database bez przestojów. Replikacja transakcyjna może używać tylko identyfikatorów logowania uwierzytelniania programu SQL Server do nawiązywania połączenia z usługą Azure SQL Database.
Parametr | Definicja |
---|---|
@distributor |
Nazwa wystąpienia źródłowego. |
@publisher |
Nazwa wystąpienia źródłowego. |
@subscriber |
Usługa Azure SQL Database w formacie: <server>.database.windows.net . Usługa Azure SQL Database musi istnieć przed uruchomieniem skryptu. |
@dbname |
Nazwa bazy danych w źródle. |
@publisher_login |
Użytkownik SQL z wymaganymi uprawnieniami w źródle. |
@publisher_password |
Hasło użytkownika SQL. |
@destination_db |
Nazwa bazy danych w miejscu docelowym. |
@subscriber_login |
Użytkownik SQL z wymaganymi uprawnieniami w miejscu docelowym. |
@subscriber_password |
Hasło użytkownika SQL. |
@working_directory |
Katalog roboczy replikacji, zmień tę lokalizację odpowiednio. |
Dostosuj powyższe parametry zgodnie z własnym środowiskiem podczas uruchamiania skryptu.
Tworzenie dystrybutora
Poniższy skrypt tworzy bazę danych dystrybutora, wydawców dystrybutorów i agentów.
USE [master]
GO
EXEC sp_adddistributor @distributor = N'CONTOSO-SRV', @password = N''
GO
EXEC sp_adddistributiondb
@database = N'distribution',
@data_folder = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data',
@data_file = N'distribution.MDF',
@data_file_size = 13,
@log_folder = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data',
@log_file = N'distribution.LDF',
@log_file_size = 9,
@min_distretention = 0,
@max_distretention = 72,
@history_retention = 48,
@deletebatchsize_xact = 5000,
@deletebatchsize_cmd = 2000,
@security_mode = 1
GO
-- Adding the distribution publishers
exec sp_adddistpublisher
@publisher = N'CONTOSO-SRV',
@distribution_db = N'distribution',
@security_mode = 1,
@working_directory = N'C:\REPL',
@trusted = N'false',
@thirdparty_flag = 0,
@publisher_type = N'MSSQLSERVER'
GO
exec sp_addsubscriber
@subscriber = N'contoso.database.windows.net',
@type = 0,
@description = N'Azure SQL Database (target)'
GO
-- Enabling the replication database
use master
exec sp_replicationdboption
@dbname = N'AdventureWorks',
@optname = N'publish',
@value = N'true'
GO
--Adds a Log Reader agent for the AdventureWorks database.
exec [AdventureWorks].sys.sp_addlogreader_agent
@publisher_security_mode = 1
GO
--Adds a Queue Reader agent for the distributor.
exec [AdventureWorks].sys.sp_addqreader_agent
@frompublisher = 1
GO
Tworzenie publikacji transakcyjnej
Poniższy skrypt tworzy transakcyjną publikację AdventureWorks
bazy danych od wydawcy.
USE [AdventureWorks]
GO
EXEC sp_addpublication
@publication = N'REPL-AdventureWorks',
@description = N'Transactional publication of database ''AdventureWorks'' from Publisher ''CONTOSO-SRV''.',
@sync_method = N'concurrent',
@retention = 0,
@allow_push = N'true',
@allow_pull = N'true',
@allow_anonymous = N'true',
@enabled_for_internet = N'false',
@snapshot_in_defaultfolder = N'false',
@alt_snapshot_folder = N'C:\REPL',
@compress_snapshot = N'true',
@ftp_port = 21,
@ftp_login = N'anonymous',
@allow_subscription_copy = N'false',
@add_to_active_directory = N'false',
@repl_freq = N'continuous',
@status = N'active',
@independent_agent = N'true',
@immediate_sync = N'true',
@allow_sync_tran = N'false',
@autogen_sync_procs = N'false',
@allow_queued_tran = N'false',
@allow_dts = N'false',
@replicate_ddl = 1,
@allow_initialize_from_backup = N'false',
@enabled_for_p2p = N'false',
@enabled_for_het_sub = N'false'
GO
exec sp_addpublication_snapshot
@publication = N'REPL-AdventureWorks',
@frequency_type = 1,
@frequency_interval = 0,
@frequency_relative_interval = 0,
@frequency_recurrence_factor = 0,
@frequency_subday = 0,
@frequency_subday_interval = 0,
@active_start_time_of_day = 0,
@active_end_time_of_day = 235959,
@active_start_date = 0,
@active_end_date = 0,
@publisher_security_mode = 0,
@publisher_login = N'sqladmin',
@publisher_password = N'<pwd>'
Tworzenie artykułu dla publikacji
Poniższy skrypt tworzy artykuł dla [Person].[Person]
tabeli.
USE [AdventureWorks]
GO
EXEC sp_addarticle
@publication = N'REPL-AdventureWorks',
@article = N'Person',
@source_owner = N'Person',
@source_object = N'Person',
@type = N'logbased',
@description = N'',
@creation_script = N'',
@pre_creation_cmd = N'drop',
@schema_option = 0x000000000803509F,
@identityrangemanagementoption = N'none',
@destination_table = N'Person',
@destination_owner = N'Person',
@status = 24,
@vertical_partition = N'false',
@ins_cmd = N'CALL [sp_MSins_PersonPerson]',
@del_cmd = N'CALL [sp_MSdel_PersonPerson]',
@upd_cmd = N'SCALL [sp_MSupd_PersonPerson]'
GO
Tworzenie subskrypcji i agenta subskrypcji
Poniższy skrypt tworzy subskrypcję wypychaną do subskrybenta usługi Azure SQL Database.
USE [AdventureWorks]
GO
EXEC sp_addsubscription
@publication = N'REPL-AdventureWorks',
@subscriber = N'contoso.database.windows.net',
@destination_db = N'my-db',
@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'REPL-AdventureWorks',
@subscriber = N'contoso.database.windows.net',
@subscriber_db = N'my-db',
@job_login = null,
@job_password = null,
@subscriber_security_mode = 0,
@subscriber_login = N'sqladmin',
@subscriber_password = '<pwd>',
@frequency_type = 64,
@frequency_interval = 1,
@frequency_relative_interval = 1,
@frequency_recurrence_factor = 0,
@frequency_subday = 4,
@frequency_subday_interval = 5,
@active_start_time_of_day = 0,
@active_end_time_of_day = 235959,
@active_start_date = 0,
@active_end_date = 0,
@dts_package_location = N'Distributor'
GO
Inicjowanie i monitorowanie replikacji
Zarządzanie replikacją i monitorowanie nie są obsługiwane w usłudze Azure SQL Database. Zamiast tego wykonaj te działania z programu SQL Server. Aby zainicjować replikację, uruchom zadanie migawki, zadanie czytnika dzienników i zadanie dystrybutora.
Agent migawek i agent czytelnika dzienników można monitorować, klikając publikację prawym przyciskiem myszy i wybierając odpowiednią opcję. Jeśli agenci nie są uruchomioni, uruchom je.
Aby wyświetlić stan synchronizacji, kliknij prawym przyciskiem myszy subskrypcję, wybierz pozycję Wyświetl stan synchronizacji, a następnie uruchom agenta. Jeśli wystąpią jakiekolwiek komunikaty o błędach, sprawdź historię zadań agenta w agencie programu SQL Server. Jeśli agenci działają zgodnie z oczekiwaniami, powinny zostać wyświetlone następujące wyniki.
Agent migawki:
Agent czytnika dzienników:
Stan synchronizacji:
Po pełnej replikacji danych do usługi Azure SQL Database można kierować połączenia z bazą danych subskrybentów, a następnie zatrzymać i usunąć replikację.
Aby dowiedzieć się więcej na temat obsługiwanych konfiguracji, zobacz Replikacja do usługi Azure SQL Database.