Utilizarea unei metode online pentru migrarea la baza de date AZURE SQL
Dacă aveți nevoie de o bază de date pentru a rămâne online pentru utilizatori în întregul proces de migrare, puteți utiliza reproducerea tranzacțională pentru a muta datele. Reproducerea tranzacției este singura metodă online disponibilă pentru migrarea la baza de date SQL Azure.
În scenariul nostru de producător de biciclete, depozitele rulează pe o bază de 24 de ore, 7 zile pe săptămână și nu există perioade de inactivitate. Consiliul de administrație dorește să se asigure că baza de date de inventar este disponibilă în mod constant, chiar și în timpul migrării la baza de date SQL Azure.
Ce este reproducerea tranzacțională?
reproducerea tranzacțiilor este o modalitate de a muta datele între serverele bazei de date conectate continuu.
Procesul începe cu un instantaneu al obiectelor și datelor din baza de date a publicației. După ce se realizează instantaneul inițial, toate modificările ulterioare ale datelor sau schemei din Publisher sunt livrate de obicei la baza de date SQL Azure în timp real, pe măsură ce apar.
Baza de date Sql Azure acceptă reproducerea tranzacțiilor și instantanee ca abonat push. Aceasta înseamnă că baza de date SQL Azure poate primi și aplica modificări de la un editor utilizând o reproducere tranzacțională sau instantanee.
Editorul și/sau distribuitorul pot fi o instanță SQL Server care rulează local, pe o mașină virtuală Azure din cloud sau ca instanță gestionată Azure SQL.
Puteți configura replicarea tranzacției prin SQL Server Management Studio sau executând Transact-SQL instrucțiuni ale editorului. Reproducerea tranzacției nu poate fi configurată din portalul Azure.
Reproducerea tranzacțională necesită următoarele componente:
| Rol | Definiție |
|---|---|
| Editor | O instanță de bază de date care găzduiește datele de reprodus (sursă). |
| abonat | Primește datele reproduse de Publisher (țintă). |
| distribuitor | Colectează modificările articolelor de la un Publisher și le distribuie abonaților . |
| articol | Un obiect bază de date; de exemplu, un tabel inclus în Publicație. |
| publicației | O colecție de unul sau mai multe articole din baza de date în curs de reproducere. |
| Abonament | O solicitare de la un abonat pentru o publicație. |
Configurarea unei reproduceri tranzacționale
Urmați pașii de mai jos pentru a migra tabelul [Person].[Person] de la AdventureWorks bază de date la baza de date SQL Azure fără întreruperi. Reproducerea tranzacției poate utiliza doar conectări de autentificare SQL Server pentru a vă conecta la baza de date SQL Azure.
| Parametru | Definiție |
|---|---|
@distributor |
Nume instanță sursă. |
@publisher |
Nume instanță sursă. |
@subscriber |
Bază de date SQL Azure în format: <server>.database.windows.net. Baza de date Azure SQL trebuie să existe înainte de a rula scriptul. |
@dbname |
Nume bază de date la sursă. |
@publisher_login |
Utilizator SQL cu permisiuni necesare la sursă. |
@publisher_password |
Parolă pentru utilizatorul SQL. |
@destination_db |
Numele bazei de date la destinație. |
@subscriber_login |
Utilizator SQL cu permisiuni necesare la destinație. |
@subscriber_password |
Parolă pentru utilizatorul SQL. |
@working_directory |
Director de reproducere funcțional, modificați această locație după cum este necesar. |
Ajustați parametrii de mai sus în funcție de mediul dvs. atunci când rulați scriptul.
Crearea distribuitorului
Următorul script creează baza de date distribuitor, editorii distribuitorilor și agenții.
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
Crearea publicației tranzacționale
Următorul script creează publicația tranzacțională a bazei de date AdventureWorks de la editor.
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>'
Crearea articolului pentru publicație
Următorul script creează articolul pentru tabelul [Person].[Person].
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
Creați abonamentul și agentul de abonament
Următorul script creează abonamentul push la abonatul 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
Inițierea și monitorizarea reproducerii
Gestionarea și monitorizarea reproducerii nu sunt acceptate din baza de date SQL Azure. În schimb, efectuați aceste activități din SQL Server. Pentru a iniția reproducerea, începeți activitatea instantaneu, activitatea de cititor de jurnale și activitatea de distribuitor.
Puteți să monitorizați Agent instantaneu și Agent cititor de jurnale făcând clic dreapta pe publicație și selectând opțiunea corespunzătoare. Dacă agenții nu rulează, porniți-i.
Pentru a vizualiza starea de sincronizare, faceți clic dreapta pe abonament, selectați Vedeți starea sincronizării, apoi porniți agentul. Dacă întâmpinați mesaje de eroare, verificați istoricul de lucrări al agentului pe SQL Server Agent. Dacă agenții rulează așa cum vă așteptați, ar trebui să vedeți următoarele rezultate.
Agent instantaneu :
Agent jurnal :
stare sincronizare :
După ce datele sunt reproduse complet în baza de date Azure SQL, puteți să direcționați conexiunile la baza de date a abonatului, apoi să opriți și să eliminați reproducerea.
Pentru a afla mai multe despre configurațiile acceptate, consultați Reproducerea în baza de date SQL Azure.