Bagikan melalui


Mengonfigurasi Perutean Read-Only untuk Grup Ketersediaan (SQL Server)

Untuk mengonfigurasi grup ketersediaan AlwaysOn untuk mendukung perutean baca-saja di SQL Server 2014, 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 yang hanya membaca 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 niat baca.

Nota

Untuk informasi tentang cara mengonfigurasi replika sekunder yang dapat dibaca, lihat Mengonfigurasi akses Read-Only pada Replika Ketersediaan (SQL Server).

Nota

Mengonfigurasi perutean baca-saja tidak didukung oleh SQL Server Management Studio.

Sebelum Anda mulai

Prasyarat

Properti Replika Apa yang Perlu Anda Konfigurasikan untuk Mendukung Perutean Read-Only?

  • Untuk setiap replika sekunder yang dapat dibaca yang 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 ketika replika tersebut menjadi 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.

    Nota

    Permintaan koneksi baca-niat dirutekan ke sekunder pertama yang dapat dibaca yang tersedia pada daftar perutean baca-saja dari replika utama saat ini. Tidak ada penyeimbangan beban.

Nota

Untuk informasi tentang pemantau grup ketersediaan dan informasi selengkapnya tentang perutean hanya-baca, lihat Pemantau Grup Ketersediaan, Konektivitas Klien, dan Failover Aplikasi (SQL Server).

Keamanan

Hak akses

Tugas Hak akses
Untuk mengonfigurasi replika saat membuat grup ketersediaan Memerlukan keanggotaan dalam peran server tetap sysadmin dan izin CREATE AVAILABILITY GROUP, izin ALTER ANY AVAILABILITY GROUP, atau izin CONTROL SERVER.
Untuk mengubah replika ketersediaan Memerlukan izin UBAH GRUP KETERSEDIAAN pada grup ketersediaan, izin KONTROL GRUP KETERSEDIAAN, izin UBAH SEMUA GRUP KETERSEDIAAN, atau izin KONTROL SERVER.

Menggunakan T-SQL

Untuk Mengonfigurasi perutean baca-saja

Nota

Untuk contoh kode, lihat Contoh (Transact-SQL), nanti di bagian ini.

  1. Sambungkan ke instans server yang menghosting replika utama.

  2. Jika Anda menentukan replika untuk grup ketersediaan baru, gunakan pernyataan CREATE AVAILABILITY GROUPTransact-SQL. Jika Anda menambahkan atau memodifikasi replika untuk grup ketersediaan yang ada, gunakan pernyataan ALTER AVAILABILITY GROUPTransact-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 routing hanya baca 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 MODIFIKASI REPLIKA, ALLOW_CONNECTIONS bersifat opsional apabila replika sudah dikonfigurasi untuk hanya mengizinkan koneksi hanya membaca.

      Untuk informasi selengkapnya, lihat Menghitung read_only_routing_url untuk AlwaysOn.

    • Untuk mengonfigurasi perutean baca-saja untuk peran utama, dalam klausa ADD REPLICA atau MODIFY REPLICA WITH, tentukan opsi PRIMARY_ROLE seperti berikut:

      PRIMARY_ROLE ( READ_ONLY_ROUTING_LIST =('server' [ , ...n ] ))

      di mana, server mengidentifikasi sebuah instans server yang menghosting replika sekunder yang hanya bisa dibaca dalam grup ketersediaan.

      Misalnya: PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('Server1','Server2'))

      Nota

      Anda harus mengatur URL routing baca-saja sebelum mengonfigurasi daftar routing baca-saja.

Contoh (Transact-SQL)

Contoh berikut ini memodifikasi dua replika ketersediaan dari grup ketersediaan yang ada, AG1 untuk mendukung perutean baca-saja jika salah satu dari replika ini memiliki peran utama pada saat ini. 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

Untuk Mengonfigurasi perutean baca-saja

Nota

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 dalam grup ketersediaan, gunakan New-SqlAvailabilityReplica cmdlet. Saat memodifikasi replika ketersediaan yang ada, gunakan Set-SqlAvailabilityReplica cmdlet . 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 memenuhi syarat secara penuh (FQDN) dan port yang digunakan saat merutekan 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 AlwaysOn.

    • 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"

      Nota

      Anda harus mengatur URL perutean hanya-baca dari replika sebelum menyetel daftar perutean hanya-baca.

    Nota

    Untuk melihat sintaks cmdlet, gunakan Get-Help cmdlet di lingkungan PowerShell SQL Server. Untuk informasi selengkapnya, lihat Mendapatkan Bantuan SQL Server PowerShell.

Untuk menyiapkan dan menggunakan penyedia PowerShell SQL Server, lihat Penyedia PowerShell SQL Server dan Mendapatkan Bantuan SQL Server PowerShell.

Contoh (PowerShell)

Contoh berikut mengonfigurasi replika utama dan satu replika sekunder dalam grup ketersediaan untuk pengarahan 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 ConnectionModeInSecondaryRole pengaturan), 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 Read-Only

Setelah replika utama saat ini dan replika sekunder yang dapat dibaca dikonfigurasi untuk mendukung pengarahan-baca-saja dalam kedua peran, replika sekunder yang dapat dibaca dapat menerima permintaan koneksi dengan niat membaca dari klien yang terhubung melalui availability group listener.

Petunjuk / Saran

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 -K ReadOnly sakelar.

Persyaratan dan Rekomendasi untuk Klien Connection-Strings

Agar aplikasi klien dapat menggunakan perutean baca-saja, string koneksinya harus memenuhi persyaratan berikut:

  • Gunakan protokol TCP.

  • Atur atribut/properti niat aplikasi ke readonly.

  • Rujuk pendengar dari grup ketersediaan yang sudah dikonfigurasi untuk mendukung perutean baca-saja.

  • Mereferensikan database dalam grup ketersediaan tersebut.

Selain itu, kami merekomendasikan agar string koneksi mengaktifkan failover multi-subnet, yang mendukung thread klien paralel untuk setiap replika pada setiap subnet. Ini meminimalkan waktu koneksi ulang klien setelah failover.

Sintaks untuk string koneksi bergantung pada penyedia SQL Server yang digunakan aplikasi. Contoh string koneksi berikut untuk Penyedia Data .NET Framework 4.0.2 untuk SQL Server menjelaskan bagian string koneksi yang diperlukan dan direkomendasikan agar berfungsi untuk perutean baca-saja.

Server=tcp:MyAgListener,1433;Database=Db1;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly;MultiSubnetFailover=True  

Untuk informasi lebih lanjut mengenai tujuan aplikasi baca-saja dan perutean baca-saja, silakan lihat Pendengar Grup Ketersediaan, Konektivitas Klien, dan Failover Aplikasi (SQL Server).

Jika perutean Read-Only Tidak Berfungsi dengan Benar

Untuk informasi tentang pemecahan masalah konfigurasi perutean baca-saja, lihat peruteanRead-Only Tidak Berfungsi Dengan Benar.

Tugas Terkait

Untuk melihat konfigurasi perutean baca-saja

Untuk mengonfigurasi akses koneksi klien

Untuk menggunakan string koneksi dalam aplikasi

Isi Terkait

Lihat Juga

Gambaran Umum Grup Ketersediaan AlwaysOn (SQL Server)
Gambaran Umum Grup Ketersediaan AlwaysOn (SQL Server)
Sekunder Aktif: Replika Sekunder yang Dapat Dibaca (Grup Ketersediaan AlwaysOn)
Tentang Akses Koneksi Klien ke Replika Ketersediaan (SQL Server)
Listener Grup Ketersediaan, Konektivitas Klien, dan Kegagalan Aplikasi (SQL Server)