Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Aplikasi ke:Azure SQL Managed Instance
Replikasi transaksional memungkinkan Anda mereplikasi data dari satu database ke database lain yang dihosting di SQL Server atau Azure SQL Managed Instance. SQL Managed Instance dapat menjadi penerbit, distributor, atau pelanggan dalam topologi replikasi. Lihat konfigurasi replikasi transaksional untuk konfigurasi yang tersedia.
Dalam tutorial ini, Anda akan mempelajari cara:
- Mengonfigurasi instans terkelola SQL sebagai penerbit replikasi.
- Konfigurasikan instans terkelola SQL sebagai distributor replikasi.
- Konfigurasikan SQL Server sebagai pelanggan.
Tutorial ini ditujukan untuk audiens berpengalaman dan mengasumsikan pengguna terbiasa menyebarkan dan menyambungkan ke instans terkelola SQL dan SQL Server VM dalam Azure.
Catatan
Artikel ini menjelaskan penggunaan replicasi transaksi dalam Azure SQL Managed Instance. Ini tidak terkait dengan grup failover, fitur Azure SQL Managed Instance yang memungkinkan Anda membuat replika instans individual yang dapat dibaca lengkap. Ada pertimbangan tambahan saat mengonfigurasi replikasi transaksional dengan grup failover.
Prasyarat
Untuk menyelesaikan tutorial ini, pastikan prasyarat berikut dipenuhi:
- Langganan Azure.
- Pengalaman dengan menyebarkan dua instans terkelola SQL dalam jaringan virtual yang sama.
- Pelanggan SQL Server, baik lokal atau di VM Azure. Tutorial ini menggunakan VM Azure.
- SQL Server Management Studio (SSMS) 18.0 atau yang lebih baru.
- Versi terbaru Azure PowerShell.
- Port 445 dan 1433 memungkinkan lalu lintas SQL pada firewall Azure dan Firewall Windows.
Nama dan pengaturan jaringan yang diperlukan
Tutorial ini menggunakan nama dan pengaturan sumber daya berikut:
| Sumber Daya | Nama | Catatan |
|---|---|---|
| Instans Terkelola SQL Publisher | sql-mi-publisher |
Menambahkan karakter acak untuk keunikan |
| Penerbit jaringan virtual | vnet-sql-mi-publisher |
Menghosting instans penerbit |
| Instans terkelola distributor SQL | sql-mi-distributor |
Harus berada di VNet yang sama dengan penerbit |
| SQL Server VM (pelanggan) | sql-vm-subscriber |
Gunakan versi SQL Server yang didukung sesuai matriks supportabilitas |
| Jaringan virtual pelanggan berlangganan | sql-vm-subscriber-vnet |
Memerlukan peering jaringan virtual ke jaringan virtual penerbit |
| zona Private DNS | repldns.com |
Nama acak untuk perutean DNS |
| Port yang diperlukan | 445 (SMB), 1433 (SQL) | Harus terbuka pada firewall Azure Firewall dan Windows |
Membuat grup sumber daya
Gunakan cuplikan kode PowerShell berikut untuk membuat grup sumber daya baru.
Atur variabel Anda:
$ResourceGroupName = "SQLMI-Repl"
$Location = "East US 2"
Buat grup sumber daya:
New-AzResourceGroup -Name $ResourceGroupName -Location $Location
Verifikasi bahwa grup sumber daya telah dibuat:
Get-AzResourceGroup -Name $ResourceGroupName | Select-Object ResourceGroupName, Location
Membuat dua instans terkelola SQL
Buat dua instans terkelola SQL dalam grup sumber daya baru ini menggunakan portal Azure.
Nama instans terkelola penerbit SQL harus
sql-mi-publisher(bersama dengan beberapa karakter untuk pengacakan), dan nama jaringan virtual harusvnet-sql-mi-publisher.Nama instans SQL terkelola distributor harus
sql-mi-distributor(bersama dengan beberapa karakter untuk pengacakan), dan harus berada di dalam jaringan virtual yang sama dengan instans SQL terkelola penerbit.
Untuk informasi selengkapnya tentang membuat instans terkelola SQL, lihat Quickstart: Membuat Azure SQL Managed Instance.
Catatan
Untuk kesederhanaan, tutorial ini menempatkan instans terkelola SQL distributor dalam jaringan virtual yang sama dengan penerbit. Namun, Anda dapat membuat distributor di jaringan virtual terpisah dengan peering VNet yang sesuai.
Membuat VM SQL Server
Buat komputer virtual SQL Server menggunakan portal Azure. Komputer virtual SQL Server harus memiliki karakteristik berikut:
- Nama:
sql-vm-subscriber - Gambar: versi SQL Server yang mendukung replikasi transaksional dengan Azure SQL Managed Instance, sesuai dengan matriks dukungan
- Grup sumber daya: sama dengan instans terkelola SQL
- Jaringan virtual:
sql-vm-subscriber-vnet
Untuk informasi selengkapnya tentang menyebarkan VM SQL Server ke Azure, lihat Quickstart: Membuat SQL Server pada komputer virtual Windows di portal Azure.
Mengonfigurasi peering VNet
Konfigurasikan peering VNet untuk mengaktifkan komunikasi antara jaringan virtual dari dua instans terkelola SQL, dan jaringan virtual SQL Server.
Atur variabel Anda:
$SubscriptionId = '<SubscriptionID>'
$resourceGroup = 'SQLMI-Repl'
$pubvNet = 'sql-mi-publisher-vnet'
$subvNet = 'sql-vm-subscriber-vnet'
$pubsubName = 'Pub-to-Sub-Peer'
$subpubName = 'Sub-to-Pub-Peer'
Ambil jaringan virtual:
$virtualNetwork1 = Get-AzVirtualNetwork -ResourceGroupName $resourceGroup -Name $pubvNet
$virtualNetwork2 = Get-AzVirtualNetwork -ResourceGroupName $resourceGroup -Name $subvNet
Konfigurasikan peering VNet dari penerbit ke pelanggan:
Add-AzVirtualNetworkPeering `
-Name $pubsubName `
-VirtualNetwork $virtualNetwork1 `
-RemoteVirtualNetworkId $virtualNetwork2.Id
Konfigurasikan peering VNet dari pelanggan ke penerbit:
Add-AzVirtualNetworkPeering `
-Name $subpubName `
-VirtualNetwork $virtualNetwork2 `
-RemoteVirtualNetworkId $virtualNetwork1.Id
Periksa status peering pada VNet penerbit (harus mengembalikan Connected):
Get-AzVirtualNetworkPeering -ResourceGroupName $resourceGroup -VirtualNetworkName $pubvNet | Select-Object PeeringState
Verifikasi status peering di VNet pelanggan (seharusnya mengembalikan Connected):
Get-AzVirtualNetworkPeering -ResourceGroupName $resourceGroup -VirtualNetworkName $subvNet | Select-Object PeeringState
Setelah peering VNet dibuat, uji konektivitas dengan meluncurkan SQL Server Management Studio (SSMS) pada host SQL Server dan menyambungkan ke kedua instans terkelola SQL. Untuk informasi selengkapnya tentang menyambungkan ke SQL managed instance menggunakan SSMS, lihat Menggunakan SSMS untuk menyambungkan ke SQL Managed Instance.
Membuat zona DNS privat
Zona DNS privat memungkinkan perutean DNS antara instans terkelola SQL dan SQL Server.
Membuat zona privat
Masuk ke portal Azure.
Pilih Buat sumber daya untuk membuat sumber daya Azure baru.
Cari
private dns zonedi Azure Marketplace.Pilih sumber daya zona DNS pribadi yang dipublikasikan oleh Microsoft, lalu pilih Buat untuk membuat zona DNS.
Pilih langganan dan grup sumber daya dari daftar dropdown.
Berikan nama acak untuk zona DNS Anda, seperti
repldns.com.Pilih Periksa + Buat. Tinjau parameter untuk zona DNS privat Anda, lalu pilih Buat untuk membuat sumber daya Anda.
Membuat rekaman A
Buka zona Private DNS baru Anda dan pilih Ikhtisar.
Pilih + set rekaman untuk membuat rekaman A baru.
Berikan nama VM SQL Server Anda serta alamat IP internal privat.
Pilih OK untuk membuat rekaman A.
Menautkan jaringan virtual
Buka zona Private DNS baru Anda dan pilih Tautan jaringan virtual.
Pilih + Tambah.
Berikan nama untuk tautan, seperti
Pub-link.Pilih langganan Anda dari daftar dropdown, lalu pilih jaringan virtual untuk instance SQL terkelola penerbit Anda.
Centang kotak di samping Aktifkan pendaftaran otomatis.
Pilih OK untuk menautkan jaringan virtual Anda.
Ulangi langkah-langkah ini guna menambahkan tautan untuk jaringan virtual pelanggan, dengan nama seperti
Sub-link.
Membuat akun penyimpanan Azure
Buat akun penyimpanan Azure untuk direktori kerja, lalu buat berbagi file dalam akun penyimpanan.
Nilai konfigurasi penyimpanan
Anda memerlukan nilai berikut saat mengonfigurasi distribusi:
-
Format jalur direktori kerja:
\\<storage-account-name>.file.core.windows.net\<file-share-name> -
Format string koneksi penyimpanan:
DefaultEndpointsProtocol=https;AccountName=<Storage-Account-Name>;AccountKey=<key>;EndpointSuffix=core.windows.net
Penting
Gunakan hanya backslash (\) pada jalur direktori kerja. Garis miring (/) menyebabkan kesalahan koneksi.
Contoh nilai yang digunakan dalam tutorial ini:
| Pengaturan | Contoh nilai |
|---|---|
| Direktori kerja | \\replstorage.file.core.windows.net\replshare |
| Rangkaian koneksi | DefaultEndpointsProtocol=https;AccountName=replstorage;AccountKey=123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ==;EndpointSuffix=core.windows.net |
Untuk informasi selengkapnya, lihat Mengelola kunci akses akun penyimpanan.
Membuat basis data
Buat database baru pada instans terkelola SQL penerbit. Untuk melakukannya, ikuti langkah-langkah berikut:
- Luncurkan SQL Server Management Studio di SQL Server.
- Sambungkan ke SQL managed instance penerbit (
sql-mi-publisher). - Buka jendela Kueri Baru , dan jalankan kueri T-SQL berikut.
Hilangkan database jika ada dan buat database baru:
USE [master];
GO
IF EXISTS (SELECT * FROM sys.sysdatabases WHERE name = 'ReplTutorial')
BEGIN
DROP DATABASE ReplTutorial;
END
GO
CREATE DATABASE [ReplTutorial];
GO
Buat tabel pengujian replikasi:
USE [ReplTutorial];
GO
CREATE TABLE ReplTest (
ID INT NOT NULL PRIMARY KEY,
c1 VARCHAR(100) NOT NULL,
dt1 DATETIME NOT NULL DEFAULT getdate()
);
GO
Sisipkan data sampel:
USE [ReplTutorial];
GO
INSERT INTO ReplTest (ID, c1) VALUES (6, 'pub');
INSERT INTO ReplTest (ID, c1) VALUES (2, 'pub');
INSERT INTO ReplTest (ID, c1) VALUES (3, 'pub');
INSERT INTO ReplTest (ID, c1) VALUES (4, 'pub');
INSERT INTO ReplTest (ID, c1) VALUES (5, 'pub');
GO
Verifikasi bahwa data telah disisipkan:
SELECT * FROM ReplTest;
GO
Output yang diharapkan: 5 baris dengan ID 2, 3, 4, 5, dan 6.
Mengonfigurasi distribusi
Setelah konektivitas dibuat dan Anda memiliki database sampel, Anda dapat mengonfigurasi distribusi pada instans terkelola SQL distributor Anda (sql-mi-distributor).
Parameter konfigurasi distribusi
Kumpulkan nilai berikut sebelum mengonfigurasi distribusi:
| Pengaturan | Description | Example |
|---|---|---|
| Nama Distributor DNS | FQDN dari instans distributor | sql-mi-distributor.b6bf57.database.windows.net |
| Nama DNS Penerbit | FQDN instans penerbit | sql-mi-publisher.b6bf57.database.windows.net |
@working_directory |
Azure Files jalur berbagi (gunakan garis miring terbelakang saja) | \\replstorage.file.core.windows.net\replshare |
@storage_connection_string |
String koneksi akun penyimpanan | DefaultEndpointsProtocol=https;AccountName=replstorage;... |
@security_mode |
Mode autentikasi (0 = Autentikasi SQL) | 0 |
@login / @password |
Kredensial masuk SQL | azureuser |
Mengonfigurasi instance distributor
- Luncurkan SQL Server Management Studio di SQL Server.
- Sambungkan ke instans distributor SQL terkelola (
sql-mi-distributor). - Buka jendela Kueri Baru dan jalankan perintah berikut.
Tambahkan distributor:
EXECUTE sp_adddistributor
@distributor = 'sql-mi-distributor.b6bf57.database.windows.net',
@password = '<distributor_admin_password>';
Buat database distribusi:
EXECUTE sp_adddistributiondb @database = N'distribution';
Verifikasi bahwa database distribusi telah dibuat:
SELECT name FROM sys.databases WHERE name = 'distribution';
Tambahkan penerbit ke distributor:
EXECUTE sp_adddistpublisher
@publisher = 'sql-mi-publisher.b6bf57.database.windows.net',
@distribution_db = N'distribution',
@security_mode = 0,
@login = N'azureuser',
@password = N'<publisher_password>',
@working_directory = N'\\replstorage.file.core.windows.net\replshare',
@storage_connection_string = N'DefaultEndpointsProtocol=https;AccountName=replstorage;AccountKey=123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ==;EndpointSuffix=core.windows.net';
Catatan
Hanya gunakan garis miring terbalik (\) untuk parameter @working_directory. Garis miring (/) menyebabkan kesalahan koneksi.
Mendaftarkan distributor di penerbit
- Sambungkan ke SQL managed instance penerbit (
sql-mi-publisher). - Buka jendela Kueri Baru dan jalankan perintah berikut untuk mendaftarkan distributor:
USE master;
GO
EXECUTE sys.sp_adddistributor
@distributor = 'sql-mi-distributor.b6bf57.database.windows.net',
@password = '<distributor_admin_password>';
Verifikasi bahwa distributor terdaftar:
SELECT * FROM sys.servers WHERE is_distributor = 1;
Membuat publikasi
Setelah distribusi dikonfigurasi, Anda dapat membuat publikasi. Untuk melakukannya, ikuti langkah-langkah berikut:
Luncurkan SQL Server Management Studio di SQL Server.
Sambungkan ke SQL managed instance penerbit (
sql-mi-publisher).Di Object Explorer, perluas node Replication dan klik kanan folder Local Publication. Pilih Publikasi Baru....
Pilih Berikutnya untuk berpindah melewati halaman selamat datang.
Pada halaman Database Publikasi, pilih database
ReplTutorialyang Anda buat sebelumnya. Pilih Selanjutnya.Pada halaman Jenis publikasi, pilih Publikasi transaksional. Pilih Selanjutnya.
Pada halaman Artikel, centang kotak di samping Tabel. Pilih Selanjutnya.
Pada halaman Filter Baris Tabel, pilih Berikutnya tanpa menambahkan filter apa pun.
Pada halaman Snapshot Agent, centang kotak di samping Buat rekam jepret segera dan jaga agar rekam jepret tetap tersedia untuk menginisialisasi langganan. Pilih Selanjutnya.
Pada halaman Agent Security, pilih pengaturan keamanan ... . Berikan kredensial masuk SQL Server yang akan digunakan untuk Snapshot Agent dan untuk menyambungkan ke penerbit. Pilih OK untuk menutup halaman Snapshot Agent Keamanan. Pilih Selanjutnya.
Pada halaman Tindakan Wizard, pilih Buat publikasi (opsional) pilih untuk Membuat file skrip dengan langkah-langkah untuk membuat publikasi jika Anda ingin menyimpan skrip ini untuk nanti.
Pada halaman Selesaikan Wizard , beri nama publikasi
ReplTestAnda, dan pilih Berikutnya untuk membuat publikasi Anda.Setelah publikasi Anda dibuat, refresh simpul Replication di Object Explorer dan perluas Publikasi Lokal untuk melihat publikasi baru Anda.
Membuat langganan
Setelah publikasi dibuat, Anda bisa membuat langganan. Untuk melakukannya, ikuti langkah-langkah berikut:
- Luncurkan SQL Server Management Studio di SQL Server.
- Sambungkan ke SQL managed instance penerbit (
sql-mi-publisher). - Buka jendela Kueri Baru dan jalankan perintah Transact-SQL berikut. Gunakan nama DNS yang dikonfigurasi di zona DNS privat sebagai bagian dari nama pelanggan.
Parameter langganan
| Pengaturan | Nilai | Description |
|---|---|---|
@subscriber |
sql-vm-subscriber.repldns.com |
Nama DNS pelanggan (dari zona DNS privat) |
@destination_db |
ReplSub |
Database untuk pelanggan |
@subscription_type |
Push |
Distributor mendorong perubahan pada pelanggan |
@sync_type |
automatic |
Sinkronisasi awal otomatis |
Tambahkan langganan:
USE [ReplTutorial];
GO
EXEC sp_addsubscription
@publication = N'ReplTest',
@subscriber = N'sql-vm-subscriber.repldns.com',
@destination_db = N'ReplSub',
@subscription_type = N'Push',
@sync_type = N'automatic',
@article = N'all',
@update_mode = N'read only',
@subscriber_type = 0;
Tambahkan agen langganan push:
EXEC sp_addpushsubscription_agent
@publication = N'ReplTest',
@subscriber = N'sql-vm-subscriber.repldns.com',
@subscriber_db = N'ReplSub',
@job_login = N'azureuser',
@job_password = '<Complex Password>',
@subscriber_security_mode = 0,
@subscriber_login = N'azureuser',
@subscriber_password = '<Complex Password>',
@dts_package_location = N'Distributor';
GO
Verifikasi bahwa langganan telah dibuat:
SELECT * FROM distribution.dbo.MSsubscriptions;
Menguji replikasi
Setelah replikasi dikonfigurasi, Anda dapat mengujinya dengan memasukkan item baru ke penerbit dan melihat perubahan menyebar ke pelanggan.
Menampilkan data awal pada pelanggan
Sambungkan ke pelanggan SQL Server dan jalankan kueri berikut:
USE ReplSub;
GO
SELECT * FROM dbo.ReplTest;
Output yang diharapkan: 5 baris dengan ID 2, 3, 4, 5, dan 6 (data awal dari penerbit).
Menyisipkan data baru pada penerbit
Sambungkan ke SQL instans terkelola penerbit (sql-mi-publisher) dan sisipkan baris baru:
USE ReplTutorial;
GO
INSERT INTO ReplTest (ID, c1) VALUES (15, 'pub');
Verifikasi sisipan pada penerbit:
SELECT * FROM ReplTest WHERE ID = 15;
Memverifikasi replikasi ke pelanggan
Setelah beberapa saat, sambungkan ke pelanggan dan verifikasi baris baru yang direplikasi:
USE ReplSub;
GO
SELECT * FROM dbo.ReplTest WHERE ID = 15;
Output yang diharapkan: 1 baris data dengan ID 15 dan nilai c1 'pub'.
Membersihkan sumber daya
- Navigasi ke grup sumber daya Anda di portal Azure.
- Pilih instans terkelola SQL, lalu pilih Hapus. Ketik
yesdalam kotak teks untuk mengonfirmasi bahwa Anda ingin menghapus sumber daya, lalu pilih Hapus. Proses ini mungkin memakan waktu untuk diselesaikan di latar belakang, dan sampai selesai, Anda tidak akan dapat menghapus kluster virtual atau sumber daya dependen lainnya. Pantau penghapusan di tab Aktivitas untuk mengonfirmasi instans terkelola SQL Anda telah dihapus. - Setelah instans terkelola SQL dihapus, hapus kluster virtual dengan memilihnya di grup sumber daya Anda, lalu pilih Hapus. Ketik
yesdalam kotak teks untuk mengonfirmasi bahwa Anda ingin menghapus sumber daya, lalu pilih Hapus. - Hapus sumber daya yang tersisa. Ketik
yesdalam kotak teks untuk mengonfirmasi bahwa Anda ingin menghapus sumber daya, lalu pilih Hapus. - Hapus grup sumber daya dengan memilih Hapus grup sumber daya, ketikkan nama grup
myResourceGroupsumber daya , lalu pilih Hapus.
Kesalahan yang diketahui
Windows login tidak didukung
Exception Message: Windows logins are not supported in this version of SQL Server.
Agen dikonfigurasi dengan login Windows dan perlu menggunakan login SQL Server sebagai gantinya. Gunakan halaman Agent Security properti Publication untuk mengubah kredensial masuk ke login SQL Server.
Gagal tersambung ke Azure Storage
Connecting to Azure Files Storage '\\replstorage.file.core.windows.net\replshare' Failed to connect to Azure Storage '' with OS error: 53.
2019-11-19 02:21:05.07 Obtained Azure Storage Connection String for replstorage
2019-11-19 02:21:05.07 Connecting to Azure Files Storage '\\replstorage.file.core.windows.net\replshare'
2019-11-19 02:21:31.21 Failed to connect to Azure Storage '' with OS error: 53.
Ini kemungkinan karena port 445 ditutup di firewall Azure, firewall Windows, atau keduanya.
Connecting to Azure Files Storage '\\replstorage.file.core.windows.net\replshare' Failed to connect to Azure Storage '' with OS error: 55.
Menggunakan garis miring alih-alih garis miring terbelakang di jalur file untuk berbagi file juga dapat menyebabkan kesalahan ini.
- Ini dapat diterima:
\\replstorage.file.core.windows.net\replshare - Ini dapat menyebabkan kesalahan OS 55:
\\replstorage.file.core.windows.net/replshare
Tidak dapat tersambung ke Pengguna
The process could not connect to Subscriber 'SQL-VM-SUBSCRIBER
Could not open a connection to SQL Server [53].
A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections.
Solusi yang bisa dilakukan:
- Pastikan porta 1433 terbuka.
- Pastikan TCP/IP diaktifkan pada pelanggan.
- Pastikan nama DNS digunakan saat membuat pelanggan.
- Pastikan jaringan virtual Anda ditautkan dengan benar di zona DNS pribadi.
- Pastikan A record Anda dikonfigurasi dengan benar.
- Pastikan peering VNet Anda dikonfigurasi dengan benar.
Anda tidak dapat berlangganan ke publikasi mana pun
Saat Anda menambahkan langganan baru menggunakan wizard Langganan Baru , pada halaman Publikasi , Anda mungkin menemukan bahwa tidak ada database dan publikasi yang tercantum sebagai opsi yang tersedia, dan Anda mungkin melihat pesan kesalahan berikut:
There are no publications to which you can subscribe, either because this server has no publications or because you do not have sufficient privileges to access the publications.
Meskipun ada kemungkinan bahwa pesan kesalahan ini akurat, dan benar-benar tidak ada publikasi yang tersedia di penerbit yang Anda sambungkan atau Anda tidak memiliki izin yang memadai, versi SQL Server Management Studio yang lebih lama juga dapat menyebabkan kesalahan ini. Coba tingkatkan ke SQL Server Management Studio 18.0 atau yang lebih baru untuk mengesampingkan ini sebagai akar penyebabnya.