Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Konfigurasikan perutean hanya-baca dalam grup ketersediaan Selalu Aktif di SQL Server di AWS
Subhani Shaik, Amazon Web Services
Ringkasan
Pola ini mencakup cara menggunakan replika sekunder siaga di SQL Server Always On dengan menurunkan beban kerja read-only dari replika primer ke replika sekunder.
Pencerminan database memiliki one-to-one pemetaan. Anda tidak dapat membaca database sekunder secara langsung, jadi Anda harus membuat snapshot. Fitur grup ketersediaan Selalu Aktif diperkenalkan di Microsoft SQL Server 2012. Dalam versi yang lebih baru, fungsionalitas utama telah diperkenalkan, termasuk perutean hanya-baca. Di grup ketersediaan Selalu Aktif, Anda dapat membaca data langsung dari replika sekunder dengan mengubah mode replika menjadi hanya-baca.
Solusi grup ketersediaan Always On mendukung ketersediaan tinggi (HA), pemulihan bencana (DR), dan alternatif untuk pencerminan basis data. Grup ketersediaan Always On bekerja di tingkat database dan memaksimalkan ketersediaan satu set database pengguna.
SQL Server menggunakan mekanisme routing read-only untuk mengarahkan koneksi read-only yang masuk ke replika baca sekunder. Untuk mencapai ini, Anda harus menambahkan parameter dan nilai berikut dalam string koneksi:
ApplicationIntent=ReadOnlyInitial Catalog=<database name>
Prasyarat dan batasan
Prasyarat
Akun AWS aktif dengan virtual private cloud (VPC), dua Availability Zone, subnet pribadi, dan grup keamanan
Dua mesin Amazon Elastic Compute Cloud (Amazon EC2) dengan SQL Server 2019 Enterprise Edition Amazon Machine Image
dengan Windows Server Failover Clustering (WSFC) yang dikonfigurasi pada tingkat instans dan grup ketersediaan Selalu Aktif yang dikonfigurasi pada tingkat SQL Server antara node primer ( WSFCNODE1) dan node sekunder (WSFCNODE2), yang merupakan bagian dari direktori AWS Directory Service untuk Microsoft Active Directory bernamatagechtalk.comSatu atau lebih node dikonfigurasi untuk menerima
read-onlydalam replika sekunderPendengar bernama
SQLAG1untuk grup ketersediaan Selalu AktifSQL Server Database Engine berjalan dengan akun layanan yang sama pada dua node
Studio Manajemen SQL Server (SSMS)
Database uji bernama
test
Versi Produk
SQL Server 2014 dan yang lebih baru
Arsitektur
Tumpukan teknologi target
Amazon EC2
AWS Dikelola Microsoft AD
Amazon FSx
Arsitektur target
Diagram berikut menunjukkan bagaimana pendengar Always On availability group (AG) mengalihkan kueri yang berisi ApplicationIntent parameter dalam koneksi ke node sekunder yang sesuai.

Permintaan dikirim ke pendengar grup ketersediaan Selalu Aktif.
Jika string koneksi tidak memiliki
ApplicationIntentparameter, permintaan dikirim ke instance utama.Jika string koneksi berisi
ApplicationIntent=ReadOnly, permintaan dikirim ke instance sekunder dengan konfigurasi routing read-only, yaitu WSFC dengan grup ketersediaan Selalu Aktif.
Alat
Layanan AWS
AWS Directory Service untuk Microsoft Active Directory memungkinkan beban kerja yang sadar direktori dan sumber daya AWS Anda untuk menggunakan Microsoft Active Directory di AWS Cloud.
Amazon Elastic Compute Cloud (Amazon EC2) menyediakan kapasitas komputasi yang dapat diskalakan di AWS Cloud. Anda dapat meluncurkan server virtual sebanyak yang Anda butuhkan dan dengan cepat meningkatkannya ke atas atau ke bawah.
Amazon FSx menyediakan sistem file yang mendukung protokol konektivitas standar industri dan menawarkan ketersediaan dan replikasi tinggi di seluruh Wilayah AWS.
Layanan lainnya
SQL Server Management Studio (SSMS) adalah alat untuk menghubungkan, mengelola, dan mengelola instance SQL Server.
sqlcmd adalah utilitas baris perintah.
Praktik terbaik
Untuk informasi selengkapnya tentang grup ketersediaan Selalu Aktif, lihat dokumentasi SQL Server
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Perbarui replika menjadi hanya-baca. | Untuk memperbarui replika primer dan sekunder menjadi hanya-baca, sambungkan ke replika utama dari SSMS, dan jalankan kode Langkah 1 dari bagian Informasi tambahan. | DBA |
Buat URL perutean. | Untuk membuat URL routing untuk kedua replika, jalankan kode Langkah 2 dari bagian Informasi tambahan. Dalam kode ini, | DBA |
Buat daftar routing. | Untuk membuat daftar routing untuk kedua replika, jalankan kode Langkah 3 dari bagian Informasi tambahan. | DBA |
Validasi daftar routing. | Connect ke instance utama dari SQL Server Management Studio, dan jalankan kode Langkah 4 dari bagian Informasi tambahan untuk memvalidasi daftar routing. | DBA |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Connect dengan menggunakan ApplicationIntent parameter. |
| DBA |
Lakukan failover. |
| DBA |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Connect dengan menggunakan sqlcmd. | Untuk terhubung dari sqlcmd, jalankan kode Langkah 5 dari bagian Informasi tambahan di prompt perintah. Setelah Anda terhubung, jalankan perintah berikut untuk menunjukkan nama server yang terhubung.
Output akan menampilkan nama replika sekunder saat ini ( | DBA |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Membuat pendengar gagal dengan pesan 'Kluster WSFC tidak dapat membawa sumber daya Nama Jaringan online'. | Untuk selengkapnya, lihat posting blog Microsoft Buat Pendengar Gagal dengan Pesan 'Kluster WSFC tidak dapat membawa sumber daya Nama Jaringan online' |
Masalah potensial, termasuk masalah pendengar lainnya atau masalah akses jaringan. | Lihat Memecahkan Masalah Selalu Pada Konfigurasi Grup Ketersediaan (SQL Server) di dokumentasi |
Sumber daya terkait
Informasi tambahan
Langkah 1. Perbarui replika menjadi hanya-baca
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)) GO ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)) GO
Langkah 2. Buat URL perutean
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://WSFCNode1.tagechtalk.com:1433')) GO ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://WSFCNode2.tagechtalk.com:1433')) GO
Langkah 3. Buat daftar perutean
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=('WSFCNODE2','WSFCNODE1'))); GO ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('WSFCNODE1','WSFCNODE2'))); GO
Langkah 4. Validasi daftar perutean
SELECT AGSrc.replica_server_name AS PrimaryReplica, AGRepl.replica_server_name AS ReadOnlyReplica, AGRepl.read_only_routing_url AS RoutingURL , AGRL.routing_priority AS RoutingPriority FROM sys.availability_read_only_routing_lists AGRL INNER JOIN sys.availability_replicas AGSrc ON AGRL.replica_id = AGSrc.replica_id INNER JOIN sys.availability_replicas AGRepl ON AGRL.read_only_replica_id = AGRepl.replica_id INNER JOIN sys.availability_groups AV ON AV.group_id = AGSrc.group_id ORDER BY PrimaryReplica
Langkah 5. Utilitas Perintah SQL
sqlcmd -S SQLAG1,1433 -E -d test -K ReadOnly