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

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 Listener Grup Ketersediaan, Koneksi ivitas Klien, dan Failover Aplikasi (SQL Server).

Izin

Task 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.

  1. Koneksi ke instans server yang menghosting replika utama.

  2. 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.

  1. Atur default (cd) ke instans server yang menghosting replika utama.

  2. 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 ReadonlyRouting Koneksi ionUrl"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 Koneksi ionModeInSecondaryRole), 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 Koneksi-String 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 Listener Grup Ketersediaan, Koneksi ivitas 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

Untuk mengonfigurasi akses koneksi klien

Untuk menggunakan string koneksi dalam aplikasi

Blogs:

Laporan:

Konten tambahan