Menyiapkan lingkungan Anda untuk link - Azure SQL Managed Instance

BERLAKU UNTUK: Azure SQL Managed Instance

Artikel ini mengajarkan cara mempersiapkan lingkungan Anda untuk link Instans Terkelola sehingga Anda dapat mereplikasi database dari SQL Server ke Azure SQL Managed Instance.

Catatan

Link merupakan fitur dari Azure SQL Managed Instance dan saat ini berada dalam pratinjau.

Prasyarat

Untuk menggunakan link dengan Azure SQL Managed Instance, Anda memerlukan prasyarat berikut:

Menyiapkan instans SQL Server

Untuk menyiapkan instans SQL Server, Anda perlu memvalidasi bahwa:

  • Anda menggunakan versi minimum yang didukung.
  • Anda telah mengaktifkan fitur grup ketersediaan.
  • Anda telah menambahkan bendera pelacakan yang tepat saat startup.
  • Database Anda berada dalam mode pemulihan penuh dan dicadangkan.

Anda perlu menghidupkan ulang SQL Server agar perubahan ini dapat dilakukan.

Pasang CU15 (atau yang lebih baru)

Fitur link untuk SQL Managed Instance diperkenalkan di CU15 SQL Server 2019.

Untuk memeriksa versi SQL Server Anda, jalankan skrip Transact-SQL (T-SQL) di SQL Server:

-- Run on SQL Server
-- Shows the version and CU of the SQL Server
SELECT @@VERSION

Jika versi SQL Server Anda lebih lama dari CU15 (15.0.4198.2), pasang CU15 atau pembaruan kumulatif terbaru. Anda harus menghidupkan ulang instans SQL Server selama pembaruan.

Membuat kunci master database di database master

Buat kunci master database di database master dengan menjalankan skrip T-SQL berikut di SQL Server:

-- Run on SQL Server
-- Create a master key
USE MASTER
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong_password>'

Untuk memastikan bahwa Anda memiliki kunci master database, gunakan skrip T-SQL berikut di SQL Server:

-- Run on SQL Server
SELECT * FROM sys.symmetric_keys WHERE name LIKE '%DatabaseMasterKey%'

Mengaktifkan Grup Ketersediaan

Fitur link untuk SQL Managed Instance bergantung pada fitur grup ketersediaan Always On, yang tidak diaktifkan secara default. Untuk mempelajari selengkapnya, tinjau Mengaktifkan fitur grup ketersediaan AlwaysOn.

Untuk mengonfirmasi bahwa fitur grup ketersediaan AlwaysOn diaktifkan, jalankan skrip T-SQL berikut ini di SQL Server:

-- Run on SQL Server
-- Is Always On enabled on this SQL Server instance?
declare @IsHadrEnabled sql_variant = (select SERVERPROPERTY('IsHadrEnabled'))
select
    @IsHadrEnabled as IsHadrEnabled,
    case @IsHadrEnabled
        when 0 then 'The Always On availability groups is disabled.'
        when 1 then 'The Always On availability groups is enabled.'
        else 'Unknown status.'
    end as 'HadrStatus'

Jika fitur grup ketersediaan tidak diaktifkan, ikuti langkah-langkah berikut untuk mengaktifkannya:

  1. Buka Pengelola Konfigurasi SQL Server.

  2. Pilih Layanan SQL Server dari panel kiri.

  3. Klik kanan layanan SQL Server, lalu pilih Properti.

    Screenshot that shows SQL Server Configuration Manager, with selections for opening properties for the service.

  4. Buka tab Grup Ketersediaan AlwaysOn.

  5. Centang kotak Grup Ketersediaan AlwaysOn, lalu pilih OK.

    Screenshot that shows the properties for Always On availability groups.

  6. Pilih OK pada kotak dialog untuk menghidupkan ulang layanan SQL Server.

Mengaktifkan bendera pelacakan startup

Untuk mengoptimalkan performa link SQL Managed Instance Anda, sebaiknya aktifkan bendera pelacakan berikut saat startup:

  • -T1800: Bendera pelacakan ini mengoptimalkan performa ketika disk yang menghosting file log untuk replika primer dan sekunder di grup ketersediaan memiliki ukuran sektor yang berbeda, misalnya 512 byte dan 4K. Jika replika primer dan sekunder memiliki ukuran sektor disk 4K, bendera pelacakan ini tidak diperlukan. Untuk mempelajari selengkapnya, tinjau KB3009974.
  • -T9567: Bendera pelacakan ini mengaktifkan kompresi aliran data untuk grup ketersediaan selama penempatan otomatis. Kompresi meningkatkan beban pada prosesor tetapi secara signifikan dapat mengurangi waktu transfer selama penempatan.

Untuk mengaktifkan bendera pelacakan ini saat startup, gunakan langkah-langkah berikut:

  1. Buka Pengelola Konfigurasi SQL Server.

  2. Pilih Layanan SQL Server dari panel kiri.

  3. Klik kanan layanan SQL Server, lalu pilih Properti.

    Screenshot that shows SQL Server Configuration Manager.

  4. Buka tab Parameter Startup. Di Tentukan parameter startup, masukkan -T1800 dan pilih Tambahkan untuk menambahkan parameter startup. Lalu masukkan -T9567 dan pilih Tambahkan untuk menambahkan bendera pelacakan lainnya. Pilih Terapkan untuk menyimpan perubahan.

    Screenshot that shows startup parameter properties.

  5. Pilih OK untuk menutup jendela Properti.

Untuk mempelajari selengkapnya, tinjau sintaks untuk mengaktifkan bendera pelacakan.

Menghidupkan ulang SQL Server dan memvalidasi konfigurasi

Setelah memastikan bahwa Anda menggunakan versi SQL Server yang didukung, mengaktifkan fitur Grup Ketersediaan AlwaysOn, dan menambahkan bendera pelacakan startup, hidupkan ulang instans SQL Server Anda untuk menerapkan semua perubahan ini:

  1. Buka Pengelola Konfigurasi SQL Server.

  2. Pilih Layanan SQL Server dari panel kiri.

  3. Klik kanan layanan SQL Server, lalu pilih Hidupkan ulang.

    Screenshot that shows the SQL Server restart command call.

Setelah menghidupkan ulang, jalankan skrip T-SQL berikut pada SQL Server untuk memvalidasi konfigurasi instans SQL Server Anda:

-- Run on SQL Server
-- Shows the version and CU of SQL Server
SELECT @@VERSION

-- Shows if the Always On availability groups feature is enabled 
SELECT SERVERPROPERTY ('IsHadrEnabled')

-- Lists all trace flags enabled on SQL Server
DBCC TRACESTATUS

Versi SQL Server Anda harus 15.0.4198.2 atau lebih tinggi, fitur grup ketersediaan AlwaysOn harus diaktifkan, dan Anda harus mengaktifkan bendera pelacakan -T1800 dan -T9567. Cuplikan layar berikut adalah contoh hasil dari ekspektasi instans SQL Server yang telah dikonfigurasi dengan benar:

Screenshot that shows the expected outcome in S S M S.

Menyiapkan pemulihan dan pencadangan database

Semua database yang akan direplikasi melalui link harus dalam mode pemulihan penuh dan memiliki setidaknya satu cadangan. Jalankan kode berikut pada SQL Server:

-- Run on SQL Server
-- Set full recovery mode for all databases you want to replicate.
ALTER DATABASE [<DatabaseName>] SET RECOVERY FULL
GO

-- Execute backup for all databases you want to replicate.
BACKUP DATABASE [<DatabaseName>] TO DISK = N'<DiskPath>'
GO

Mengonfigurasi konektivitas jaringan

Agar link dapat berfungsi, harus ada konektivitas jaringan antara SQL Server dengan SQL Managed Instance. Opsi jaringan yang Anda pilih tergantung pada lokasi instans SQL Server Anda - apakah itu di lokal atau di mesin virtual (VM).

SQL Server di Azure Virtual Machines

Menyebarkan SQL Server pada Azure Virtual Machines di jaringan virtual Azure yang sama yang menghosting SQL Managed Instance adalah metode paling sederhana, karena akan tersedia konektivitas jaringan antara kedua instans secara otomatis. Untuk mempelajari selengkapnya, lihat tutorial mendetail Menyebarkan dan mengonfigurasi Azure VM untuk terhubung ke Azure SQL Managed Instance.

Jika SQL Server di instans Azure Virtual Machines berada di jaringan virtual yang berbeda dari instans terkelola Anda, sambungkan dua jaringan virtual Azure dengan menggunakan peering jaringan virtual global atau konfigurasikan gateway VPN.

Catatan

Peering jaringan virtual global diaktifkan secara default pada instans terkelola yang tersedia setelah November 2020. Ajukan tiket dukungan untuk mengaktifkan peering jaringan virtual global pada instans yang lebih lama.

SQL Server di luar Azure

Jika instans SQL Server Anda dihosting di luar Azure, buat koneksi VPN antara SQL Server dan SQL Managed Instance dengan salah satu opsi berikut:

Tip

Kami merekomendasikan ExpressRoute untuk performa jaringan terbaik saat Anda mereplikasi data. Provisikan gateway dengan bandwidth yang cukup untuk kasus penggunaan Anda.

Port jaringan antara lingkungan

Port 5022 perlu mengizinkan lalu lintas masuk dan keluar antara SQL Server dan SQL Managed Instance. Port 5022 adalah port titik akhir pencerminan database standar untuk grup ketersediaan. Ini tidak dapat diubah atau disesuaikan.

Tabel berikut menjelaskan tindakan port untuk setiap lingkungan:

Lingkungan Apa yang harus dilakukan
SQL Server (di dalam Azure) Buka lalu lintas masuk dan keluar di port 5022 untuk firewall jaringan ke seluruh subnet rentang IP dari SQL Managed Instance. Jika perlu, lakukan hal yang sama pada firewall OS (Windows/Linux) host SQL Server. Buat aturan kelompok keamanan jaringan (NSG) di jaringan virtual yang menghosting mesin virtual untuk memungkinkan komunikasi pada port 5022.
SQL Server (di luar Azure) Buka lalu lintas masuk dan keluar di port 5022 untuk firewall jaringan ke seluruh subnet rentang IP dari SQL Managed Instance. Jika perlu, lakukan hal yang sama pada firewall OS (Windows/Linux) host SQL Server.
Instans Terkelola SQL Buat aturan NSG di portal Microsoft Azure untuk mengizinkan lalu lintas masuk dan keluar dari alamat IP SQL Server pada port 5022 ke jaringan virtual yang menghosting SQL Managed Instance.

Gunakan skrip PowerShell berikut pada host Wndows dari instans SQL Server untuk membuka port di Windows firewall:

New-NetFirewallRule -DisplayName "Allow TCP port 5022 inbound" -Direction inbound -Profile Any -Action Allow -LocalPort 5022 -Protocol TCP
New-NetFirewallRule -DisplayName "Allow TCP port 5022 outbound" -Direction outbound -Profile Any -Action Allow -LocalPort 5022 -Protocol TCP

Menguji konektivitas jaringan dua arah

Konektivitas jaringan dua arah antara SQL Server dan SQL Managed Instance diperlukan agar link dapat berfungsi. Setelah membuka port di sisi SQL Server, dan mengonfigurasi aturan NSG di sisi SQL Managed Instance, uji konektivitas.

Menguji koneksi dari SQL Server ke SQL Managed Instance

Untuk memeriksa apakah SQL Server dapat menjangkau SQL Managed Instance, gunakan perintah tnc berikut di PowerShell dari mesin host SQL Server. Ganti <ManagedInstanceFQDN> dengan nama domain yang sepenuhnya memenuhi syarat (FQDN) dari instans terkelola. Anda dapat menyalin FQDN dari halaman gambaran umum instans terkelola di portal Azure.

tnc <ManagedInstanceFQDN> -port 5022

Pengujian yang sukses menunjukkan TcpTestSucceeded : True.

Screenshot that shows the output of the command for testing a network connection in PowerShell.

Jika respons tidak berhasil, verifikasi pengaturan jaringan berikut:

  • Terdapat aturan di firewall jaringan dan firewall OS (Windows/Linux) host SQL Server yang memungkinkan lalu lintas ke seluruh subnet rentang IP dari SQL Managed Instance.
  • Terdapat aturan NSG yang memungkinkan komunikasi di port 5022 untuk jaringan virtual yang menghosting SQL Managed Instance.

Menguji koneksi dari SQL Managed Instance ke SQL Server

Untuk memeriksa apakah SQL Managed Instance dapat menjangkau SQL Server, buat titik akhir pengujian terlebih dahulu. Kemudian gunakan SQL Agent untuk menjalankan skrip PowerShell dengan perintah tnc ping SQL Server pada port 5022 dari instans terkelola.

Untuk membuat titik akhir pengujian, buat sambungan ke SQL Server dan jalankan skrip T-SQL berikut:

-- Run on SQL Server
-- Create the certificate needed for the test endpoint
USE MASTER
CREATE CERTIFICATE TEST_CERT
WITH SUBJECT = N'Certificate for SQL Server',
EXPIRY_DATE = N'3/30/2051'
GO

-- Create the test endpoint on SQL Server
USE MASTER
CREATE ENDPOINT TEST_ENDPOINT
    STATE=STARTED   
    AS TCP (LISTENER_PORT=5022, LISTENER_IP = ALL)
    FOR DATABASE_MIRRORING (
        ROLE=ALL,
        AUTHENTICATION = CERTIFICATE TEST_CERT, 
        ENCRYPTION = REQUIRED ALGORITHM AES
    )

Untuk memastikan bahwa titik akhir SQL Server menerima koneksi pada port 5022, jalankan perintah PowerShell berikut pada sistem operasi host instans SQL Server Anda:

tnc localhost -port 5022

Pengujian yang sukses menunjukkan TcpTestSucceeded : True. Anda kemudian dapat melanjutkannya dengan membuat tugas SQL Agent pada instans terkelola untuk mencoba menguji titik akhir pengujian SQL Server pada port 5022 dari instans terkelola.

Selanjutnya, buat tugas SQL Agent di instans terkelola bernama NetHelper menggunakan alamat IP publik atau nama DNS yang dapat diselesaikan dari instans terkelola untuk SQL_SERVER_ADDRESS. Jalankan skrip T-SQL berikut pada instans terkelola:

-- Run on the managed instance
-- SQL_SERVER_ADDRESS should be a public IP address, or the DNS name that can be resolved from the SQL Managed Instance host machine.
DECLARE @SQLServerIpAddress NVARCHAR(MAX) = '<SQL_SERVER_ADDRESS>'
DECLARE @tncCommand NVARCHAR(MAX) = 'tnc ' + @SQLServerIpAddress + ' -port 5022 -InformationLevel Quiet'
DECLARE @jobId BINARY(16)

EXEC msdb.dbo.sp_add_job @job_name=N'NetHelper', 
    @enabled=1, 
    @description=N'Test Managed Instance to SQL Server network connectivity on port 5022.', 
    @category_name=N'[Uncategorized (Local)]', 
    @owner_login_name=N'cloudSA', @job_id = @jobId OUTPUT

EXEC msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'tnc step', 
    @step_id=1, 
    @os_run_priority=0, @subsystem=N'PowerShell', 
    @command = @tncCommand, 
    @database_name=N'master', 
    @flags=40

EXEC msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1

EXEC msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'

EXEC msdb.dbo.sp_start_job @job_name = N'NetHelper'

Jalankan tugas SQL Agent dengan menjalankan perintah T-SQL berikut pada instans terkelola:

-- Run on the managed instance
EXEC msdb.dbo.sp_start_job @job_name = N'NetHelper'

Jalankan kueri berikut pada instans terkelola untuk menampilkan log tugas SQL Agent:

-- Run on the managed instance
SELECT 
    sj.name JobName, sjs.step_id, sjs.step_name, sjsl.log, sjsl.date_modified
FROM
    msdb.dbo.sysjobs sj
    LEFT OUTER JOIN msdb.dbo.sysjobsteps sjs
    ON sj.job_id = sjs.job_id
    LEFT OUTER JOIN msdb.dbo.sysjobstepslogs sjsl
    ON sjs.step_uid = sjsl.step_uid
WHERE
    sj.name = 'NetHelper'

Jika koneksi berhasil, log akan menampilkan True. Jika koneksi tidak berhasil, log akan menampilkan False.

Screenshot that shows the expected output of the NetHelper SQL Agent job.

Terakhir, hilangkan titik akhir pengujian dan sertifikat di SQL Server dengan menggunakan perintah T-SQL berikut:

-- Run on SQL Server
DROP ENDPOINT TEST_ENDPOINT
GO
DROP CERTIFICATE TEST_CERT
GO

Jika koneksi tidak berhasil, verifikasi hal berikut:

  • Firewall pada instans SQL Server host memungkinkan komunikasi masuk dan keluar di port 5022.
  • Aturan NSG untuk jaringan virtual yang menghosting SQL Managed Instance memungkinkan komunikasi pada port 5022.
  • Jika instans SQL Server Anda berada di mesin virtual Azure, aturan NSG memungkinkan komunikasi pada port 5022 di jaringan virtual yang menghosting mesin virtual.
  • SQL Server berjalan.

Perhatian

Lanjutkan dengan langkah berikutnya hanya jika Anda telah memvalidasi konektivitas jaringan antara lingkungan sumber dan target Anda. Jika tidak, pecahkan masalah konektivitas jaringan sebelum melanjutkan.

Memigrasikan sertifikat database yang dilindungi TDE

Jika Anda memigrasikan database SQL Server yang dilindungi oleh Enkripsi Data Transparan ke instans terkelola, Anda harus memigrasikan sertifikat enkripsi yang sesuai dari instans SQL Server lokal atau mesin virtual Azure ke instans terkelola sebelum menggunakan link. Untuk langkah terperinci, lihat Memigrasikan sertifikasi TDE ke instans terkelola.

Menginstal SQL Server Management Studio

SQL Server Management Studio (SSMS) v18.11.1 adalah cara termudah untuk menggunakan link SQL Managed Instance. Unduh SQL Server Management Studio versi 18.11.1 atau yang lebih baru dan instal ke komputer klien.

Setelah penginstalan selesai, buka SQL Server Management Studio dan buat sambungan ke instans SQL Server Anda yang didukung. Klik kanan database pengguna dan validasi bahwa opsi Link Azure SQL Managed Instance muncul di menu.

Screenshot that shows the Azure SQL Managed Instance link option on the context menu.

Langkah berikutnya

Setelah menyiapkan lingkungan Anda, Anda siap untuk mulai mereplikasi database Anda. Untuk mempelajari selengkapnya, tinjau Fitur link untuk Azure SQL Managed Instance.