Menggunakan metode online untuk bermigrasi ke Azure SQL Database
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.
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.
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. |
Langganan | 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.
Parameter | 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.
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 Rekam Jepret:
Agen Pembaca Log:
Status Sinkronisasi:
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.