Ketersediaan tinggi dan perlindungan data untuk konfigurasi grup ketersediaan

Aplikasi ke:SQL Server di Linux

Artikel ini menyajikan konfigurasi penyebaran yang didukung untuk grup ketersediaan SQL Server AlwaysOn di server Linux. Grup ketersediaan mendukung ketersediaan tinggi dan perlindungan data. Deteksi kegagalan otomatis, failover otomatis, dan koneksi ulang transparan setelah failover memberikan ketersediaan tinggi. Replika yang disinkronkan memberikan perlindungan data.

Pada Kluster Failover Windows Server (WSFC), konfigurasi umum untuk ketersediaan tinggi menggunakan dua replika sinkron dan server ketiga atau berbagi file untuk menyediakan kuorum. Saksi berbagi file memvalidasi konfigurasi grup ketersediaan - status sinkronisasi, dan peran replika, misalnya. Konfigurasi ini memastikan bahwa replika sekunder yang dipilih sebagai target failover memiliki perubahan konfigurasi data dan grup ketersediaan terbaru.

WSFC menyinkronkan metadata konfigurasi untuk arbitrase failover antara grup ketersediaan replika dan pengamat berbagi file. Saat grup ketersediaan tidak berada di WSFC, instans SQL Server menyimpan metadata konfigurasi di database master.

Misalnya, grup ketersediaan pada kluster Linux memiliki CLUSTER_TYPE = EXTERNAL. Tidak ada WSFC untuk arbitrasi failover. Dalam hal ini, metadata konfigurasi dikelola dan dipertahankan oleh instans SQL Server. Karena tidak ada server saksi dalam kluster ini, instans SQL Server ketiga diperlukan untuk menyimpan metadata status konfigurasi. Ketiga instans SQL Server bersama-sama menyediakan penyimpanan metadata terdistribusi untuk kluster.

Manajer kluster dapat mengkueri instans SQL Server dalam grup ketersediaan, dan mengatur failover untuk menjaga ketersediaan tinggi. Dalam kluster Linux, Pacemaker adalah manajer kluster.

Dimulai dengan SQL Server 2017 (14.x) CU 1, ketersediaan tinggi untuk grup ketersediaan dengan CLUSTER_TYPE = EXTERNAL diaktifkan untuk dua replika sinkron serta satu replika khusus konfigurasi. Replika konfigurasi hanya dapat dihosting pada edisi SQL Server 2017 (14.x) CU 1 atau versi yang lebih baru (termasuk edisi SQL Server Express). Replika konfigurasi hanya mempertahankan informasi konfigurasi tentang grup ketersediaan dalam master database tetapi tidak berisi database pengguna dalam grup ketersediaan.

Bagaimana konfigurasi memengaruhi pengaturan sumber daya default

REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT Pengaturan sumber daya kluster menjamin bahwa jumlah replika sekunder yang ditentukan menulis data transaksi ke log sebelum replika utama menerapkan setiap transaksi. Saat Anda menggunakan manajer kluster eksternal, pengaturan ini memengaruhi ketersediaan tinggi dan perlindungan data. Nilai default untuk pengaturan tergantung pada arsitektur pada saat sumber daya kluster dibuat. Saat Anda menginstal agen sumber daya SQL Server - mssql-server-ha - dan membuat sumber daya kluster untuk grup ketersediaan, manajer kluster mendeteksi konfigurasi grup ketersediaan dan mengatur REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT yang sesuai.

Jika didukung oleh konfigurasi, parameter REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT agen sumber daya diatur ke nilai yang memberikan ketersediaan tinggi dan perlindungan data. Untuk informasi selengkapnya, lihat Understand SQL Server resource agent for pacemaker.

Bagian berikut menjelaskan perilaku default untuk sumber daya kluster.

Pilih desain grup ketersediaan yang sesuai untuk memenuhi kebutuhan bisnis khusus dalam hal ketersediaan tinggi, perlindungan data, dan skala pembacaan.

Konfigurasi berikut menjelaskan pola desain grup ketersediaan dan kemampuan setiap pola. Pola desain ini berlaku untuk grup ketersediaan dengan CLUSTER_TYPE = EXTERNAL untuk solusi ketersediaan tinggi.

  • Tiga replika sinkron
  • Dua replika sinkron
  • Dua replika sinkron dan satu replika konfigurasi saja

Tiga replika sinkron

Konfigurasi ini terdiri dari tiga replika sinkron. Secara default, ini memberikan ketersediaan tinggi dan perlindungan data. Ini juga dapat menyediakan skala baca.

Diagram grup ketersediaan dengan replika utama yang menyinkronkan data ke dua replika sekunder.

Grup ketersediaan dengan tiga replika sinkron dapat memberikan skala baca, ketersediaan tinggi, dan perlindungan data. Tabel berikut ini menjelaskan perilaku ketersediaan.

Perilaku ketersediaan skala baca Ketersediaan tinggi &
perlindungan data
Perlindungan data
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT= 0 1 1 2
Gangguan utama Failover otomatis. Mungkin kehilangan data. Unit utama yang baru adalah R/W. Failover otomatis. Unit utama yang baru adalah R/W. Failover otomatis. Primer baru tidak tersedia untuk transaksi baca atau tulis hingga mantan primer pulih dan bergabung kembali dengan grup ketersediaan sebagai sekunder.
Satu pemadaman replika sekunder Primer adalah R/W. Sekunder yang tersedia tersedia untuk Bacaan. Primer adalah R/W. Sekunder yang tersedia tersedia untuk Bacaan. Primer tetap tidak tersedia untuk transaksi baca atau tulis hingga pemulihan sekunder gagal dan bergabung kembali dengan grup ketersediaan.
Dua gangguan replika sekunder Primer hanya dapat digunakan untuk membaca, bukan untuk menulis sampai salah satu replika sekunder pulih dan bergabung kembali dengan kelompok ketersediaan. Primer hanya dapat digunakan untuk membaca, bukan untuk menulis sampai salah satu replika sekunder pulih dan bergabung kembali dengan kelompok ketersediaan. Replika utama tidak tersedia untuk transaksi baca atau tulis hingga semua replika sekunder yang gagal pulih dan berhasil bergabung kembali dengan grup ketersediaan.
Pemadaman replika primer dan satu sekunder Failover otomatis. Mungkin kehilangan data. Primer baru hanya tersedia untuk membaca dan bukan untuk menulis sampai salah satu replika sekunder pulih dan bergabung kembali dengan grup ketersediaan. Failover otomatis. Primer baru hanya tersedia untuk baca dan tulis sampai salah satu replika sekunder pulih dan bergabung kembali dengan grup ketersediaan. Failover otomatis. Primer yang baru tetap tidak tersedia untuk transaksi baca atau tulis sampai primer dan replika sekunder yang lama pulih dan bergabung kembali dalam grup ketersediaan.

1 Bawaan

Dua replika sinkron

Konfigurasi ini memungkinkan perlindungan data. Seperti konfigurasi grup ketersediaan lainnya, ini dapat mengaktifkan skala baca. Konfigurasi dua replika sinkron tidak memberikan ketersediaan tinggi otomatis. Dua konfigurasi replika hanya berlaku untuk RTM SQL Server 2017 (14.x) dan tidak lagi didukung dengan versi SQL Server 2017 (14.x) yang lebih tinggi (CU1 dan lebih tinggi).

Diagram grup ketersediaan dengan replika utama yang menyinkronkan data ke satu replika sekunder.

Grup ketersediaan dengan dua replika sinkron memberikan perlindungan skala baca dan data. Tabel berikut ini menjelaskan perilaku ketersediaan.

Perilaku ketersediaan skala baca Perlindungan data
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT= 0 1 1
Gangguan utama Failover otomatis. Mungkin kehilangan data. Unit utama yang baru adalah R/W. Failover otomatis. Primer baru tidak tersedia untuk transaksi baca atau tulis hingga mantan primer pulih dan bergabung kembali dengan grup ketersediaan sebagai sekunder.
Satu pemadaman replika sekunder Primer adalah Baca/Tulis, berjalan dengan risiko kehilangan data. Primer tetap tidak tersedia untuk transaksi baca atau tulis hingga pemulihan sekunder gagal dan bergabung kembali dengan grup ketersediaan.

1 Bawaan

Dua replika sinkron dan satu replika yang hanya berfungsi untuk konfigurasi

Grup ketersediaan dengan dua (atau lebih) replika sinkron dan replika yang hanya untuk konfigurasi dapat memberikan perlindungan data dan mungkin juga dapat memberikan ketersediaan tinggi. Diagram berikut mewakili arsitektur ini:

Diagram dari grup ketersediaan dengan replika utama yang melakukan sinkronisasi data dan metadata ke replika sekunder dan replika yang hanya berisi konfigurasi.

  1. Replikasi data pengguna yang sinkron ke replika sekunder. Ini juga mencakup metadata konfigurasi grup ketersediaan.
  2. Replikasi sinkron dari metadata konfigurasi grup ketersediaan. Ini tidak menyertakan data pengguna.

Dalam diagram grup ketersediaan, replika utama mendorong data konfigurasi ke replika sekunder dan replika khusus konfigurasi. Replika sekunder juga menerima data pengguna. Replika konfigurasi saja tidak menerima data pengguna. Replika sekunder berada dalam mode ketersediaan sinkron. Replika konfigurasi saja tidak berisi database dalam grup ketersediaan - hanya metadata tentang grup ketersediaan. Data konfigurasi pada replika konfigurasi saja dikomit secara sinkron.

Catatan

Grup ketersediaan dengan hanya replika konfigurasi adalah fitur baru untuk SQL Server 2017 (14.x) CU 1. Semua instans SQL Server dalam grup ketersediaan harus SQL Server 2017 (14.x) CU 1 atau versi yang lebih baru.

Nilai default untuk REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT adalah 0. Tabel berikut ini menjelaskan perilaku ketersediaan.

Perilaku ketersediaan Ketersediaan tinggi &
perlindungan data
Perlindungan data
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT= 0 1 1
Gangguan utama Failover otomatis. Unit utama yang baru adalah R/W. Mungkin kehilangan data. Failover otomatis. Primer baru tidak tersedia untuk transaksi baca atau tulis hingga mantan primer pulih dan bergabung kembali dengan grup ketersediaan sebagai sekunder.
Gangguan replika sekunder Primary adalah R/W, berjalan dalam kondisi rentan kehilangan data (jika primary gagal dan tidak dapat dipulihkan). Tidak ada failover otomatis jika server utama juga gagal. Primer tetap tidak tersedia untuk transaksi baca atau tulis hingga pemulihan sekunder gagal dan bergabung kembali dengan grup ketersediaan. Tidak ada replika untuk diambil alih jika primer juga gagal.
Pemadaman replika hanya konfigurasi Primer adalah R/W. Tidak ada failover otomatis jika server utama juga gagal. Primer adalah R/W. Tidak ada failover otomatis jika server utama juga gagal.
Pemadaman replika sekunder + konfigurasi sinkron saja Komponen utama tidak tersedia untuk transaksi baca maupun tulis. Tidak ada failover otomatis. Komponen utama tidak tersedia untuk transaksi baca maupun tulis. Tidak ada replika untuk diambil alih jika primer juga gagal.

1 Bawaan

Catatan

Instans SQL Server yang menghosting replika konfigurasi saja juga dapat menghosting database lain. Ini juga dapat berpartisipasi sebagai database yang digunakan hanya untuk konfigurasi pada lebih dari satu grup ketersediaan.

Persyaratan

  • Setiap replika dalam grup ketersediaan dengan replika hanya konfigurasi harus menggunakan SQL Server 2017 (14.x) CU 1 atau versi yang lebih baru.
  • Setiap edisi SQL Server hanya dapat menghosting replika konfigurasi, termasuk SQL Server Express.
  • Grup ketersediaan membutuhkan setidaknya satu replika sekunder - selain replika utama.
  • Replika yang hanya digunakan untuk konfigurasi tidak dihitung dalam jumlah maksimum replika per instance SQL Server. SQL Server edisi standar memungkinkan hingga tiga replika, SQL Server Enterprise Edition memungkinkan hingga 9.

Pertimbangan

  • Tidak lebih dari hanya satu replika konfigurasi untuk setiap grup ketersediaan.
  • Replika hanya konfigurasi tidak dapat menjadi replika utama.
  • Anda tidak dapat mengubah mode ketersediaan replika yang hanya untuk konfigurasi. Untuk mengubah dari replika konfigurasi saja ke replika sekunder sinkron atau asinkron, hapus replika konfigurasi saja, dan tambahkan replika sekunder dengan mode ketersediaan yang diperlukan.
  • Replika konfigurasi saja sinkron dengan metadata grup ketersediaan. Tidak ada data pengguna.
  • Grup ketersediaan dengan satu replika utama dan satu replika hanya untuk konfigurasi, tetapi tanpa replika sekunder adalah tidak valid.
  • Anda tidak dapat membuat grup ketersediaan pada instans edisi SQL Server Express.

Memahami agen sumber daya SQL Server untuk Pacemaker

SQL Server 2017 (14.x) memperkenalkan sequence_number ke sys.availability_groups untuk menunjukkan apakah replika yang ditandai sebagai SYNCHRONOUS_COMMIT sudah diperbarui. sequence_number adalah bigint yang meningkat secara monoton, mewakili seberapa terkini replika grup ketersediaan lokal dibandingkan dengan replika lainnya dalam grup ketersediaan.

Nomor ini diperbarui saat Anda melakukan failover, menambahkan atau menghapus replika, dan operasi grup ketersediaan lainnya.

Replika primer memperbarui angka dan kemudian mengirimkannya ke replika sekunder. Replika sekunder yang mutakhir memiliki sequence_number yang sama dengan replika utama.

Ketika Pacemaker memutuskan untuk mempromosikan replika ke utama, ia pertama-tama mengirim notifikasi ke semua replika untuk mengekstrak nomor urutan dan menyimpannya. Pemberitahuan ini dikenal sebagai pemberitahuan pra-promosi. Selanjutnya, ketika Pacemaker mencoba mempromosikan replika ke primer, replika hanya mempromosikan dirinya sendiri jika angka urutannya adalah yang tertinggi dari semua angka urutan dari semua replika. Jika tidak, operasi promosi akan ditolak. Dengan menggunakan proses ini, hanya replika dengan nomor urutan tertinggi yang dapat dipromosikan ke primer, memastikan tidak ada kehilangan data.

Promosi berfungsi selama setidaknya satu replika yang tersedia untuk promosi memiliki nomor urut yang sama dengan primer sebelumnya. Perilaku bawaan adalah agar agen sumber daya Pacemaker secara otomatis mengatur REQUIRED_COPIES_TO_COMMIT sehingga setidaknya satu replika sekunder komit sinkron sudah diperbarui dan tersedia sebagai target failover otomatis. Dengan setiap tindakan pemantauan, nilai REQUIRED_COPIES_TO_COMMIT dihitung (dan diperbarui jika perlu) sebagai ('jumlah replika penerapan sinkron' / 2). Kemudian, saat waktu failover, agen sumber daya memerlukan (total number of replicas - required_copies_to_commit replika) untuk menanggapi notifikasi pra-promosi agar dapat mempromosikan salah satunya ke utama. Replika dengan sequence_number tertinggi dipromosikan ke utama.

Misalnya, pertimbangkan kasus grup ketersediaan dengan tiga replika sinkron - satu replika utama dan dua replika sekunder komit sinkron.

  • REQUIRED_COPIES_TO_COMMIT adalah 3 / 2 = 1

  • Jumlah replika yang diperlukan untuk merespons tindakan pra-promosi adalah 3 - 1 = 2. Jadi dua replika harus aktif agar failover dipicu. Ketika pemadaman utama terjadi, jika salah satu replika sekunder tidak responsif dan hanya salah satu sekunder yang merespons tindakan prapromosikan, agen sumber daya tidak dapat menjamin bahwa sekunder yang merespons memiliki yang tertinggi sequence_number, dan failover tidak dipicu.

Anda dapat menggantikan perilaku default dan mengonfigurasi sumber daya grup ketersediaan agar REQUIRED_COPIES_TO_COMMIT tidak diatur otomatis.

Penting

Ketika REQUIRED_COPIES_TO_COMMIT0, Anda berisiko kehilangan data. Jika ada gangguan pada sumber utama, agen sumber daya tidak secara otomatis memicu failover. Anda harus memilih untuk menunggu server primer pulih atau melakukan failover secara manual.

Untuk mengatur REQUIRED_COPIES_TO_COMMIT ke 0, jalankan:

sudo pcs resource update <ag_cluster> required_copies_to_commit=0

Perintah yang setara menggunakan crm (di SUSE Linux Enterprise Server) adalah:

sudo crm resource param <ag_cluster> set required_synchronized_secondaries_to_commit 0

Untuk kembali ke nilai komputasi default, jalankan:

sudo pcs resource update <ag_cluster> required_copies_to_commit=

Catatan

Memperbarui properti sumber daya menyebabkan semua replika berhenti dan memulai ulang. Perubahan ini untuk sementara mengubah status dari primer menjadi sekunder, lalu mengembalikan statusnya menjadi primer, sehingga penulisan menjadi tidak tersedia untuk sementara. Nilai baru untuk REQUIRED_COPIES_TO_COMMIT diatur hanya setelah replika dilakukan restart, oleh karena itu, tidak langsung terjadi saat perintah pcs dijalankan.

Menyeimbangkan ketersediaan tinggi dan perlindungan data

Perilaku default yang dijelaskan sebelumnya juga berlaku untuk kasus dua replika sinkron (primer dan sekunder). Pacemaker mengatur REQUIRED_COPIES_TO_COMMIT ke 1 untuk memastikan replika sekunder selalu mutakhir demi perlindungan data maksimum.

Peringatan

Risiko ketidaktersediaan replika utama lebih tinggi karena pemadaman terencana atau tak terduga pada replika sekunder. Anda dapat memilih untuk mengubah perilaku default agen sumber daya dan menggantikan nilai REQUIRED_COPIES_TO_COMMIT dengan 0:

sudo pcs resource update <ag1> required_copies_to_commit=0

Saat Anda mengambil alih nilai ini, agen sumber daya menggunakan pengaturan baru untuk REQUIRED_COPIES_TO_COMMIT dan berhenti menghitungnya. Anda harus memperbaruinya secara manual jika diperlukan (misalnya, jika Anda meningkatkan jumlah replika).

Tabel berikut menjelaskan hasil pemadaman untuk replika primer atau sekunder dalam konfigurasi sumber daya grup ketersediaan yang berbeda:

Grup ketersediaan - dua replika sinkron

Konfigurasi Gangguan utama Satu pemadaman replika sekunder
REQUIRED_COPIES_TO_COMMIT = 0 Anda harus secara manual mengeluarkan FAILOVER.

Dapat menyebabkan kehilangan data.

Unit utama yang baru adalah R/W.
Primer adalah Baca/Tulis, berjalan dengan risiko kehilangan data.
REQUIRED_COPIES_TO_COMMIT = 1 1 Kluster secara otomatis mengeluarkan FAILOVER

Tidak ada kehilangan data.

Primer baru menolak semua koneksi sampai mantan primer pulih dan bergabung dengan grup ketersediaan sebagai sekunder.
Primer menolak semua koneksi sampai sekunder pulih.

1 Agen sumber daya SQL Server untuk perilaku bawaan Pacemaker.

Grup Ketersediaan - tiga replika sinkron

Konfigurasi Gangguan utama Satu pemadaman replika sekunder
REQUIRED_COPIES_TO_COMMIT = 0 Anda harus secara manual mengeluarkan FAILOVER.

Dapat menyebabkan kehilangan data.

Unit utama yang baru adalah R/W.
Primer adalah R/W.
REQUIRED_COPIES_TO_COMMIT = 1 1 Kluster secara otomatis mengeluarkan FAILOVER.

Tidak ada kehilangan data.

Unit utama yang baru adalah R/W.
Primer adalah R/W.

1 Agen sumber daya SQL Server untuk perilaku bawaan Pacemaker.