Menggunakan metode online untuk bermigrasi ke Azure SQL Database

Selesai

Jika Anda memerlukan database untuk tetap online kepada pengguna selama proses migrasi, Anda dapat menggunakan replikasi transaksional untuk memindahkan data. Replikasi transaksional adalah satu-satunya metode online yang tersedia untuk bermigrasi ke Azure SQL Database.

Dalam skenario produsen sepeda kami, gudang berjalan pada basis 24 jam, 7 hari seminggu, dan tidak ada periode tidak aktif. Dewan direksi Anda ingin memastikan bahwa database inventori terus tersedia, bahkan selama migrasi ke Azure SQL Database.

Diagram memperlihatkan topologi replikasi yang melibatkan SQL Server dan Azure SQL Database.

Apa itu replikasi transaksional?

Replikasi transaksional adalah cara untuk memindahkan data antara server database yang terus tersambung.

Proses dimulai dengan rekam jepret objek dan data database publikasi. Setelah rekam jepret awal diambil, setiap perubahan berikutnya pada data atau skema di Publisher biasanya dikirimkan ke Azure SQL Database mendekati real-time saat terjadi.

Diagram memperlihatkan komponen kunci dalam replikasi transaksional.

Azure SQL Database mendukung replikasi transaksional dan rekam jepret sebagai pelanggan pendorongan. Itu berarti Azure SQL Database dapat menerima dan menerapkan perubahan dari penerbit menggunakan replikasi transaksional atau rekam jepret.

Penerbit dan/atau distributor dapat menjadi instans SQL Server yang berjalan secara lokal, pada komputer virtual Azure di cloud, atau sebagai Azure SQL Managed Instance.

Anda dapat mengonfigurasi replikasi transaksional melalui SQL Server Management Studio, atau dengan menjalankan pernyataan Transact-SQL pada penerbit. Replikasi transaksional tidak dapat dikonfigurasi dari portal Azure.

Replikasi transaksional memerlukan komponen berikut:

Peran Definisi
Penerbit Instans database yang menghosting data yang akan direplikasi (sumber).
Pelanggan Menerima data yang sedang direplikasi oleh Penerbit (target).
Distributor Mengumpulkan perubahan dalam artikel dari Penerbit dan mendistribusikannya ke Pelanggan.
Artikel Objek database; misalnya, tabel yang disertakan dalam Publikasi.
Publikasi Kumpulan satu atau beberapa artikel dari database yang sedang direplikasi.
Abonemen Permintaan dari Pelanggan untuk Publikasi.

Menyiapkan replikasi transaksional

Ikuti langkah-langkah di bawah ini untuk memigrasikan tabel [Person].[Person] dari database AdventureWorks ke Azure SQL Database tanpa waktu henti. Replikasi transaksional hanya dapat menggunakan login autentikasi SQL Server untuk menyambungkan ke Azure SQL Database.

Pengaturan Definisi
@distributor Nama instans sumber.
@publisher Nama instans sumber.
@subscriber Azure SQL Database dalam format: <server>.database.windows.net. Azure SQL Database harus ada sebelum menjalankan skrip.
@dbname Nama database di sumbernya.
@publisher_login Pengguna SQL dengan izin yang diperlukan di sumbernya.
@publisher_password Kata sandi untuk pengguna SQL.
@destination_db Nama database di tujuan.
@subscriber_login Pengguna SQL dengan izin yang diperlukan di tujuan.
@subscriber_password Kata sandi untuk pengguna SQL.
@working_directory Direktori kerja replikasi, ubah lokasi ini sebagaimana mewajarinya.

Sesuaikan parameter di atas sesuai dengan lingkungan Anda sendiri saat menjalankan skrip.

Membuat distributor

Skrip berikut membuat database distributor, penerbit distributor, dan agen.

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

Membuat publikasi transaksi

Skrip berikut membuat publikasi AdventureWorks transaksi dari database dari penerbit.

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

Membuat artikel untuk publikasi

Skrip berikut membuat artikel untuk [Person].[Person] tabel.

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

Membuat langganan dan agen langganan

Skrip berikut membuat langganan pendorongan ke pelanggan 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

Memulai dan memantau replikasi

Manajemen dan pemantauan replikasi tidak didukung dari Azure SQL Database. Sebagai gantinya, lakukan aktivitas ini dari SQL Server. Untuk memulai replikasi, mulai pekerjaan rekam jepret, pekerjaan pembaca log, dan pekerjaan distributor.

Anda dapat memantau Agen Rekam Jepret dan Agen Pembaca Log dengan mengklik kanan pada publikasi dan memilih opsi yang sesuai. Jika agen tidak berjalan, mulailah.

Cuplikan layar memperlihatkan cara meluncurkan agen rekam jepret.

Untuk melihat status sinkronisasi, klik kanan pada langganan, pilih Tampilkan Status Sinkronisasi, lalu mulai agen. Jika Anda menemukan pesan kesalahan, periksa riwayat pekerjaan agen di SQL Server Agent. Jika agen berjalan seperti yang diharapkan, Anda akan melihat hasil berikut.

Agen Cuplikan:

Cuplikan layar memperlihatkan status agen rekam jepret dalam replikasi transaksional.

Agen Pembaca Log:

Cuplikan layar memperlihatkan status pembaca log dalam replikasi transaksional.

Status Sinkronisasi:

Diagram memperlihatkan status sinkronisasi dalam replikasi transaksional.

Setelah data sepenuhnya direplikasi ke Azure SQL Database, Anda dapat mengarahkan koneksi ke database pelanggan, lalu menghentikan dan menghapus replikasi.

Untuk mempelajari selengkapnya tentang konfigurasi yang didukung, lihat Replikasi ke Azure SQL Database.