Dapatkah Grup Ketersediaan menyediakan failover mulus (tanpa kegagalan kueri)?


9

Saya telah menguji fitur Grup Ketersediaan di SQL Server 2012 dan saya menemukan bahwa ada sekitar 15 detik down time ketika server utama gagal ke server sekunder. Semua query SQL yang dieksekusi selama waktu ini gagal sampai transisi failover selesai.

Apakah ada cara untuk mendapatkan ini hingga 0 detik dan mencegah permintaan gagal selama transisi failover?

Dengan kata lain, apakah ada cara untuk menjalankan kueri saat gagal diarahkan ke server utama alih-alih gagal ... dan apakah ada cara untuk mendapatkan koneksi db baru untuk segera terhubung ke server sekunder alih-alih gagal terhubung selama transisi failover?

Saat ini saya memiliki 2 server yang diatur di Grup Ketersediaan.


1
Lihat pertanyaan ini (dan jawabannya): dba.stackexchange.com/questions/25124/…
Max Vernon

Hanya Oracle RAC yang dapat melakukannya.
Richard Brown

Atau Anda harus menggunakan linux loadballancer dalam pengaturan yang tepat di depan sql server, seperti HAproxy.
kakaz

Jawaban:


9

Tidak, tidak ada cara untuk melakukan zero-downtime failover dengan AlwaysOn (atau dalam SQL Server secara umum, sejauh yang saya ketahui). Untuk melakukan itu, SQL Server yang terhubung dengan Anda harus melakukan transfer status ke node lain di pertengahan kueri, dan karena banyak kegagalan tidak terduga, itu tidak mungkin.

Namun, Anda dapat mengaktifkan "read-only secondaries" di AlwaysOn, dan kemudian pembaca Anda akan memiliki nol-downtime ketika server utama gagal - karena mereka terhubung ke salinan sekunder untuk melakukan permintaan SELECT mereka, mereka tidak akan bahkan memperhatikan failover. Masih akan ada gangguan bagi pengguna dengan koneksi "Tulis" terbuka, tetapi setidaknya beberapa bagian dari basis pengguna Anda tidak akan terganggu.


Dengan "read-only secondaries" diaktifkan, apakah ada permintaan baca terjadi pada primary atau apakah mereka selalu dilakukan pada secondaries? Dan apa yang terjadi jika server sekunder memiliki kesalahan dalam situasi itu?
John

Membaca terhadap sekunder hanya terjadi jika Anda mengkonfigurasi klien untuk terhubung ke sekunder.
Max Vernon

1
Begitu ya, jadi itu membutuhkan aplikasi klien yang lebih cerdas.
John

@JohnHughes: Lihat dokumen Microsoft ini (tengah halaman 5): tinyurl.com/9dtvndv dan posting blog ini: tinyurl.com/8cyr9za . Anda tidak perlu aplikasi yang lebih pintar - saat Anda mengaktifkan fitur ini, Anda dapat menentukan bahwa aplikasi apa pun dapat terhubung ke sekunder yang dapat dibaca, tetapi segala upaya untuk melakukan transaksi DDL / DML akan gagal. Jika Anda menggunakan klien asli yang lebih baru, Anda dapat menentukan "ReadIntent", yang berarti klien yang lebih baru akan membaca dari sekunder Anda, sementara klien yang lebih tua akan terus melakukan semua transaksi terhadap utama Anda. Pilihan tetapi beberapa bacaan diperlukan.
SqlRyan

SqlRyan benar, tidak ada cara untuk failover contoh SQL Server menggunakan Grup Ketersediaan AlwaysOn tanpa klien terputus.
mrdenny
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.