Ketersediaan tinggi dan pemulihan bencana di Linux dan macOS
Driver ODBC untuk Linux dan macOS mendukung grup ketersediaan AlwaysOn. Untuk informasi selengkapnya tentang grup ketersediaan AlwaysOn, lihat:
Listener grup ketersediaan, konektivitas klien, dan failover aplikasi (SQL Server)
Pengklusteran failover dan grup ketersediaan AlwaysOn (SQL Server)
Sekunder aktif: Replika sekunder yang dapat dibaca (grup ketersediaan AlwaysOn)
Anda dapat menentukan pendengar grup ketersediaan grup ketersediaan tertentu di string koneksi. Jika aplikasi ODBC di Linux atau macOS terhubung ke database dalam grup ketersediaan yang gagal, koneksi asli rusak. Aplikasi harus membuka koneksi baru untuk melanjutkan pekerjaan setelah failover.
Driver ODBC di Linux dan macOS melakukan iterasi secara berurutan melalui semua alamat IP yang terkait dengan nama host DNS, jika Anda tidak terhubung ke pendengar grup ketersediaan. Jika alamat IP pertama yang dikembalikan server DNS tidak dapat disambungkan, iterasi ini bisa memakan waktu.
Saat Anda tersambung ke pendengar grup ketersediaan, driver mencoba membuat koneksi ke semua alamat IP secara paralel. Jika upaya koneksi berhasil, driver akan membuang upaya koneksi yang tertunda.
Catatan
Karena koneksi dapat gagal karena kegagalan grup ketersediaan, Anda harus menerapkan logika coba lagi koneksi. Coba lagi koneksi yang gagal hingga koneksi tersambung kembali. Meningkatkan batas waktu koneksi dan menerapkan logika coba lagi koneksi meningkatkan kemungkinan untuk terhubung ke grup ketersediaan.
Menyambungkan dengan MultiSubnetFailover
Selalu tentukan MultiSubnetFailover=Yes
kapan Anda menyambungkan ke pendengar grup ketersediaan SQL Server 2012 (11.x) atau instans kluster failover SQL Server 2012 (11.x). MultiSubnetFailover
memungkinkan failover yang lebih cepat untuk semua grup ketersediaan dan instans kluster failover di SQL Server 2012 (11.x).
Properti koneksi ini juga secara signifikan mengurangi waktu failover untuk topologi Always On tunggal dan multi-subnet. Selama failover multi-subnet, klien mencoba koneksi secara paralel. Selama failover subnet, driver secara agresif mencoba kembali koneksi TCP.
Properti MultiSubnetFailover
koneksi menunjukkan bahwa aplikasi sedang disebarkan dalam grup ketersediaan atau instans kluster failover. Driver mencoba menyambungkan ke database pada instans SQL Server utama dengan mencoba menyambungkan ke semua alamat IP.
Ketika Anda terhubung dengan MultiSubnetFailover=Yes
, klien mencoba kembali koneksi TCP mencoba lebih cepat daripada interval transmisi ulang TCP default sistem operasi. MultiSubnetFailover=Yes
memungkinkan koneksi ulang yang lebih cepat setelah failover grup ketersediaan AlwaysOn, atau instans kluster failover AlwaysOn. MultiSubnetFailover=Yes
berlaku untuk grup ketersediaan tunggal dan multi-subnet dan instans kluster failover.
Gunakan MultiSubnetFailover=Yes
saat Anda menyambungkan ke pendengar grup ketersediaan atau instans kluster failover. Jika tidak, performa aplikasi Anda dapat terpengaruh secara negatif.
Rekomendasi
Saat Anda menyambungkan ke server dalam grup ketersediaan atau instans kluster failover:
Tentukan
MultiSubnetFailover=Yes
untuk meningkatkan performa saat Anda menyambungkan ke satu grup ketersediaan subnet atau multi-subnet.Tentukan pendengar grup ketersediaan grup ketersediaan sebagai server di string koneksi Anda.
Anda tidak dapat tersambung ke instans SQL Server yang dikonfigurasi dengan lebih dari 64 alamat IP.
Autentikasi SQL Server atau Autentikasi Kerberos dapat digunakan dengan
MultiSubnetFailover=Yes
, tanpa memengaruhi perilaku aplikasi.Anda dapat meningkatkan nilai
loginTimeout
untuk mengakomodasi waktu failover dan mengurangi upaya coba lagi koneksi aplikasi.Transaksi terdistribusi tidak didukung.
Jika perutean baca-saja tidak berlaku, menyambungkan ke lokasi replika sekunder dalam grup ketersediaan gagal dalam situasi berikut:
Jika lokasi replika sekunder tidak dikonfigurasi untuk menerima koneksi.
Jika aplikasi menggunakan
ApplicationIntent=ReadWrite
dan lokasi replika sekunder dikonfigurasi untuk akses baca-saja.
Koneksi gagal jika replika utama dikonfigurasi untuk menolak beban kerja baca-saja, dan string koneksi berisi ApplicationIntent=ReadOnly
.
Tentukan niat aplikasi
Anda dapat menentukan kata kunci ApplicationIntent
di string koneksi Anda. Nilai yang dapat ditetapkan adalah ReadWrite
(default) atau ReadOnly
.
Saat Anda mengatur ApplicationIntent=ReadOnly
, klien meminta beban kerja baca saat menyambungkan. Server memberlakukan niat pada waktu koneksi, dan selama USE
pernyataan database.
Kata ApplicationIntent
kunci tidak berfungsi dengan database baca-saja lama.
Target ReadOnly
Saat koneksi memilih ReadOnly
, koneksi ditetapkan ke salah satu konfigurasi khusus berikut yang mungkin ada untuk database:
Selalu Aktif. Database dapat mengizinkan atau melarang beban kerja baca pada database grup ketersediaan yang ditargetkan. Pilihan ini dikendalikan dengan menggunakan
ALLOW_CONNECTIONS
klausaPRIMARY_ROLE
pernyataan Transact-SQL danSECONDARY_ROLE
.
Jika tidak ada target khusus yang tersedia, database reguler dibaca.
Kata ApplicationIntent
kunci memungkinkan perutean baca-saja.
Perutean baca-saja
Perutean baca-saja adalah fitur yang dapat memastikan ketersediaan replika database baca-saja. Untuk mengaktifkan perutean baca-saja, semua hal berikut ini berlaku:
Anda harus tersambung ke pendengar grup ketersediaan AlwaysOn.
Kata
ApplicationIntent
kunci string koneksi harus diatur keReadOnly
.Administrator database harus mengonfigurasi grup ketersediaan untuk mengaktifkan perutean baca-saja.
Beberapa koneksi yang masing-masing menggunakan perutean baca-saja mungkin tidak semuanya tersambung ke replika baca-saja yang sama. Perubahan sinkronisasi database atau perubahan konfigurasi perutean server dapat mengakibatkan koneksi klien ke replika baca-saja yang berbeda.
Anda dapat memastikan bahwa semua permintaan baca-saja tersambung ke replika baca-saja yang sama dengan tidak meneruskan pendengar grup ketersediaan ke Server
kata kunci string koneksi. Sebagai gantinya, tentukan nama instans baca-saja.
Perutean baca-saja mungkin memakan waktu lebih lama daripada menyambungkan ke primer. Ini karena perutean baca-saja pertama kali terhubung ke primer, lalu mencari sekunder yang dapat dibaca terbaik yang tersedia. Karena beberapa langkah ini, Anda harus meningkatkan batas waktu anda login
menjadi setidaknya 30 detik.
Sintaks ODBC
Dua kata kunci string koneksi ODBC mendukung grup ketersediaan AlwaysOn:
ApplicationIntent
MultiSubnetFailover
Untuk informasi selengkapnya tentang kata kunci string koneksi ODBC, lihat Menggunakan kata kunci string koneksi dengan SQL Server Native Client.
Atribut koneksi yang setara adalah:
SQL_COPT_SS_APPLICATION_INTENT
SQL_COPT_SS_MULTISUBNET_FAILOVER
Untuk informasi selengkapnya tentang atribut koneksi ODBC, lihat SQLSetConnectAttr.
Aplikasi ODBC yang menggunakan grup ketersediaan AlwaysOn dapat menggunakan salah satu dari dua fungsi untuk membuat koneksi:
Fungsi | Deskripsi |
---|---|
Fungsi SQLConnect | SQLConnect mendukung dan ApplicationIntent MultiSubnetFailover melalui nama sumber data (DSN) atau atribut koneksi. |
Fungsi SQLDriverConnect | SQLDriverConnect ApplicationIntent mendukung dan MultiSubnetFailover melalui DSN, kata kunci string koneksi, atau atribut koneksi. |