Mengonfigurasi Perutean Baca Saja untuk Grup Ketersediaan Always On
Berlaku untuk: SQL Server
Untuk mengonfigurasi grup ketersediaan AlwaysOn untuk mendukung perutean baca-saja di SQL Server, Anda dapat menggunakan Transact-SQL atau PowerShell. Perutean baca-saja mengacu pada kemampuan SQL Server untuk merutekan permintaan koneksi baca-saja yang memenuhi syarat ke replika sekunder yang dapat dibaca AlwaysOn yang tersedia (yaitu, replika yang dikonfigurasi untuk memungkinkan beban kerja baca-saja saat berjalan di bawah peran sekunder). Untuk mendukung perutean baca-saja, grup ketersediaan harus memiliki pendengar grup ketersediaan. Klien baca-saja harus mengarahkan permintaan koneksi mereka ke pendengar ini, dan string koneksi klien harus menentukan niat aplikasi sebagai "baca-saja." Artinya, mereka harus menjadi permintaan koneksi baca-niat.
Perutean baca-saja tersedia di SQL Server 2016 (13.x) dan yang lebih baru.
Catatan
Untuk informasi tentang cara mengonfigurasi replika sekunder yang dapat dibaca, lihat Mengonfigurasi Akses Baca-Saja pada Replika Ketersediaan (SQL Server).
Prasyarat
Grup ketersediaan harus memiliki pendengar grup ketersediaan. Untuk informasi selengkapnya, lihat Membuat atau Mengonfigurasi Listener Grup Ketersediaan (SQL Server).
Satu atau beberapa replika ketersediaan harus dikonfigurasi untuk menerima baca-saja dalam peran sekunder (yaitu, menjadi replika sekunder yang dapat dibaca). Untuk informasi selengkapnya, lihat Mengonfigurasi Akses Baca-Saja pada Replika Ketersediaan (SQL Server).
Anda harus terhubung ke instans server yang menghosting replika utama saat ini.
Jika menggunakan Login SQL, pastikan akun dikonfigurasi dengan benar. Untuk informasi selengkapnya, lihat Manajemen Login dan Pekerjaan untuk Database Grup Ketersediaan (SQL Server).
Properti Replika Apa yang Perlu Anda Konfigurasikan untuk Mendukung Perutean Baca-Saja?
Untuk setiap replika sekunder yang dapat dibaca yaitu mendukung perutean baca-saja, Anda perlu menentukan URL perutean baca-saja. URL ini hanya berlaku ketika replika lokal berjalan di bawah peran sekunder. URL perutean baca-saja harus ditentukan berdasarkan replika demi replika, sesuai kebutuhan. Setiap URL perutean baca-saja digunakan untuk merutekan permintaan koneksi niat baca ke replika sekunder tertentu yang dapat dibaca. Biasanya, setiap replika sekunder yang dapat dibaca diberi URL perutean baca-saja.
Untuk informasi tentang menghitung URL perutean baca-saja untuk replika ketersediaan, lihat Menghitung read_only_routing_url untuk AlwaysOn
Untuk setiap replika ketersediaan yang ingin Anda dukung perutean baca-saja saat replika utama, Anda perlu menentukan daftar perutean baca-saja. Daftar perutean baca-saja yang diberikan hanya berlaku ketika replika lokal berjalan di bawah peran utama. Daftar ini harus ditentukan berdasarkan replika demi replika, sesuai kebutuhan. Biasanya, setiap daftar perutean baca-saja akan berisi setiap URL perutean baca-saja, dengan URL replika lokal di akhir daftar.
Catatan
Permintaan koneksi baca-niat dirutekan ke entri pertama yang tersedia pada daftar perutean baca-saja dari replika utama saat ini. Namun, penyeimbangan beban di seluruh replika baca-saja didukung. Untuk informasi selengkapnya, lihat Mengonfigurasi penyeimbangan beban di seluruh replika baca-saja.
Catatan
Untuk informasi tentang pendengar grup ketersediaan dan informasi selengkapnya tentang perutean baca-saja, lihat Pendengar Grup Ketersediaan, Konektivitas Klien, dan Failover Aplikasi (SQL Server).
Izin
Tugas | Izin |
---|---|
Untuk mengonfigurasi replika saat membuat grup ketersediaan | Memerlukan keanggotaan dalam peran server tetap sysadmin dan izin BUAT server GRUP KETERSEDIAAN, UBAH izin GRUP KETERSEDIAAN APA PUN, atau izin SERVER KONTROL. |
Untuk mengubah replika ketersediaan | Memerlukan izin UBAH GRUP KETERSEDIAAN pada grup ketersediaan, izin GRUP KETERSEDIAAN KONTROL, izin UBAH GRUP KETERSEDIAAN APA PUN, atau izin SERVER KONTROL. |
Menggunakan T-SQL
Mengonfigurasi daftar perutean baca-saja
Gunakan langkah-langkah berikut untuk mengonfigurasi perutean baca-saja menggunakan Transact-SQL. Untuk contoh kode, lihat Contoh (Transact-SQL), nanti di bagian ini.
Sambungkan ke instans server yang menghosting replika utama.
Jika Anda menentukan replika untuk grup ketersediaan baru, gunakan pernyataan CREATE AVAILABILITY GROUP Transact-SQL. Jika Anda menambahkan atau memodifikasi replika untuk grup ketersediaan yang ada, gunakan pernyataan ALTER AVAILABILITY GROUP Transact-SQL.
Untuk mengonfigurasi perutean baca-saja untuk peran sekunder, dalam klausul ADD REPLICA atau MODIFY REPLICA WITH, tentukan opsi SECONDARY_ROLE, sebagai berikut:
SECONDARY_ROLE ( READ_ONLY_ROUTING_URL ='TCP://system-address:port')
Parameter URL perutean baca-saja adalah sebagai berikut:
alamat sistem
Adalah string, seperti nama sistem, nama domain yang sepenuhnya memenuhi syarat, atau alamat IP, yang secara tidak ambigu mengidentifikasi sistem komputer tujuan.pelabuhan
Adalah nomor port yang digunakan oleh Mesin Database instans SQL Server.Misalnya:
SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433')
Dalam klausa REPLICA MODIFIKASI, ALLOW_CONNECTIONS bersifat opsional jika replika sudah dikonfigurasi untuk mengizinkan koneksi baca-saja.
Untuk informasi selengkapnya, lihat Menghitung read_only_routing_url untuk Always On.
Untuk mengonfigurasi perutean baca-saja untuk peran utama, dalam klausa ADD REPLICA atau MODIFY REPLICA WITH, tentukan opsi PRIMARY_ROLE, sebagai berikut:
PRIMARY_ROLE ( READ_ONLY_ROUTING_LIST =('server' [ , ...n ] ))
di mana, server mengidentifikasi instans server yang menghosting replika sekunder baca-saja dalam grup ketersediaan.
Misalnya:
PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('Server1','Server2'))
Catatan
Anda harus mengatur URL perutean baca-saja sebelum mengonfigurasi daftar perutean baca-saja.
Mengonfigurasi penyeimbangan beban di seluruh replika baca-saja
Dimulai dengan SQL Server 2016 (13.x), Anda dapat mengonfigurasi penyeimbangan beban di sekumpulan replika baca-saja. Sebelumnya, perutean baca-saja selalu mengarahkan lalu lintas ke replika pertama yang tersedia dalam daftar perutean. Untuk memanfaatkan fitur ini, gunakan satu tingkat tanda kurung berlapis di sekitar instans server READ_ONLY_ROUTING_LIST dalam perintah CREATE AVAILABILITY GROUP atau ALTER AVAILABILITY GROUP .
Misalnya, daftar perutean berikut menyeimbangkan permintaan koneksi niat baca di dua replika baca-saja, Server1
dan Server2
. Tanda kurung berlapis yang mengelilingi server ini mengidentifikasi set yang seimbang beban. Jika tidak ada replika yang tersedia dalam set itu, replika akan melanjutkan untuk mencoba menyambungkan secara berurutan ke replika lain, Server3
dan Server4
, dalam daftar perutean baca-saja.
READ_ONLY_ROUTING_LIST = (('Server1','Server2'), 'Server3', 'Server4')
Perhatikan bahwa setiap entri dalam daftar perutean itu sendiri dapat menjadi sekumpulan replika baca-saja yang seimbang beban. Contoh berikut menunjukkan hal berikut.
READ_ONLY_ROUTING_LIST = (('Server1','Server2'), ('Server3', 'Server4', 'Server5'), 'Server6')
Hanya satu tingkat tanda kurung berlapis yang didukung.
Contoh (Transact-SQL)
Contoh berikut memodifikasi dua replika ketersediaan grup ketersediaan yang ada, AG1
untuk mendukung perutean baca-saja jika salah satu replika ini saat ini memiliki peran utama. Untuk mengidentifikasi instans server yang menghosting replika ketersediaan, contoh ini menentukan nama instans-COMPUTER01
dan COMPUTER02
.
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER01' WITH
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER01' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433'));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER02' WITH
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER02' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER02.contoso.com:1433'));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER01' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER02','COMPUTER01')));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER02' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER01','COMPUTER02')));
GO
Menggunakan PowerShell
Mengonfigurasi daftar perutean baca-saja
Gunakan langkah-langkah berikut untuk mengonfigurasi perutean baca-saja menggunakan PowerShell. Untuk contoh kode, lihat Contoh (PowerShell), nanti di bagian ini.
Atur default (cd) ke instans server yang menghosting replika utama.
Saat menambahkan replika ketersediaan ke grup ketersediaan, gunakan cmdlet New-SqlAvailabilityReplica . Saat memodifikasi replika ketersediaan yang ada, gunakan cmdlet Set-SqlAvailabilityReplica . Parameter yang relevan adalah sebagai berikut:
Untuk mengonfigurasi perutean baca-saja untuk peran sekunder, tentukan parameter ReadonlyRoutingConnectionUrl"url".
di mana, url adalah nama domain yang sepenuhnya memenuhi syarat konektivitas (FQDN) dan port yang digunakan saat perutean ke replika untuk koneksi baca-saja. Misalnya:
-ReadonlyRoutingConnectionUrl "TCP://DBSERVER8.manufacturing.Adventure-Works.com:7024"
Untuk informasi selengkapnya, lihat Menghitung read_only_routing_url untuk Always On.
Untuk mengonfigurasi akses koneksi untuk peran utama, tentukan ReadonlyRoutingList"server" [ ,...n ], di mana server mengidentifikasi instans server yang menghosting replika sekunder baca-saja dalam grup ketersediaan. Misalnya:
-ReadOnlyRoutingList "SecondaryServer","PrimaryServer"
Catatan
Anda harus mengatur URL perutean baca-saja dari replika sebelum mengonfigurasi daftar perutean baca-saja.
Catatan
Untuk melihat sintaks cmdlet, gunakan cmdlet Get-Help di lingkungan PowerShell SQL Server. Untuk informasi selengkapnya, lihat Mendapatkan Bantuan SQL Server PowerShell.
Menyiapkan dan menggunakan penyedia PowerShell SQL Server
Contoh (PowerShell)
Contoh berikut mengonfigurasi replika utama dan satu replika sekunder dalam grup ketersediaan untuk perutean baca-saja. Pertama, contoh menetapkan URL perutean baca-saja ke setiap replika. Kemudian mengatur daftar perutean baca-saja pada replika utama. Koneksi dengan properti "ReadOnly" yang diatur dalam string koneksi akan dialihkan ke replika sekunder. Jika replika sekunder ini tidak dapat dibaca (seperti yang ditentukan oleh pengaturan ConnectionModeInSecondaryRole ), koneksi akan diarahkan kembali ke replika utama.
Set-Location SQLSERVER:\SQL\PrimaryServer\default\AvailabilityGroups\MyAg
$primaryReplica = Get-Item "AvailabilityReplicas\PrimaryServer"
$secondaryReplica = Get-Item "AvailabilityReplicas\SecondaryServer"
Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://PrimaryServer.domain.com:1433" -InputObject $primaryReplica
Set-SqlAvailabilityReplica -ReadOnlyRoutingConnectionUrl "TCP://SecondaryServer.domain.com:1433" -InputObject $secondaryReplica
Set-SqlAvailabilityReplica -ReadOnlyRoutingList "SecondaryServer","PrimaryServer" -InputObject $primaryReplica
Tindak Lanjut: Setelah Mengonfigurasi Perutean Baca-Saja
Setelah replika utama saat ini dan replika sekunder yang dapat dibaca dikonfigurasi untuk mendukung perutean baca-saja dalam kedua peran, replika sekunder yang dapat dibaca dapat menerima permintaan koneksi baca-niat dari klien yang terhubung melalui pendengar grup ketersediaan.
Tip
Saat menggunakan Utilitas bcp atau Utilitas sqlcmd, Anda dapat menentukan akses baca-saja ke replika sekunder apa pun yang diaktifkan untuk akses baca-saja dengan menentukan sakelar -K ReadOnly .
Persyaratan dan Rekomendasi untuk String Koneksi Klien
Agar aplikasi klien menggunakan perutean baca-saja, string koneksi harus memenuhi persyaratan berikut:
Gunakan protokol TCP.
Atur atribut/properti niat aplikasi ke readonly.
Referensikan pendengar grup ketersediaan yang dikonfigurasi untuk mendukung perutean baca-saja.
Mereferensikan database dalam grup ketersediaan tersebut.
Selain itu, sebaiknya string koneksi mengaktifkan failover multi-subnet, yang mendukung utas klien paralel untuk setiap replika pada setiap subnet. Ini meminimalkan waktu koneksi ulang klien setelah failover.
Sintaks untuk string koneksi tergantung pada penyedia SQL Server yang digunakan aplikasi. Contoh berikut string koneksi untuk Penyedia Data .NET Framework 4.0.2 untuk SQL Server mengilustrasikan bagian string koneksi yang diperlukan dan direkomendasikan untuk bekerja untuk perutean baca-saja.
Server=tcp:MyAgListener,1433;Database=Db1;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly;MultiSubnetFailover=True
Untuk informasi selengkapnya tentang niat aplikasi baca-saja dan perutean baca-saja, lihat Pendengar Grup Ketersediaan, Konektivitas Klien, dan Failover Aplikasi (SQL Server).
Jika Perutean Baca-Saja tidak berfungsi dengan benar
Untuk informasi tentang pemecahan masalah konfigurasi perutean baca-saja, lihat Perutean Baca-Saja Tidak Berfungsi Dengan Benar.
Langkah berikutnya
Untuk melihat konfigurasi perutean baca-saja
sys.availability_replicas (T-SQL) (kolom read_only_routing_url )
Untuk mengonfigurasi akses koneksi klien
Membuat atau Mengonfigurasi Listener Grup Ketersediaan (SQL Server)
Mengonfigurasi Akses Baca-Saja pada Replika Ketersediaan (SQL Server)
Untuk menggunakan string koneksi dalam aplikasi
Dukungan Klien Asli SQL Server untuk Ketersediaan Tinggi, Pemulihan Bencana
Menggunakan Kata Kunci String Koneksi dengan SQL Server Native Client
Blog:
Laporan:
Konten tambahan