Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server di Linux
Artikel ini menyajikan konfigurasi penyebaran yang didukung untuk grup ketersediaan AlwaysOn SQL Server 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 Windows Server Failover Cluster (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 replika grup ketersediaan dan bukti berbagi file. Saat grup ketersediaan tidak berada di WSFC, instans SQL Server menyimpan metadata konfigurasi dalam master database.
Misalnya, grup ketersediaan pada kluster Linux memiliki CLUSTER_TYPE = EXTERNAL. Tidak ada WSFC untuk arbitrase failover. Dalam hal ini, metadata konfigurasi dikelola dan dikelola oleh instans SQL Server. Karena tidak ada server bukti 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 mempertahankan 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 ditambah replika konfigurasi saja. 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 dan set REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT grup ketersediaan 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 Memahami agen sumber daya SQL Server untuk pacemaker.
Bagian berikut menjelaskan perilaku default untuk sumber daya kluster.
Pilih desain grup ketersediaan untuk memenuhi persyaratan bisnis tertentu untuk ketersediaan tinggi, perlindungan data, dan skala baca.
Konfigurasi berikut menjelaskan pola desain grup ketersediaan dan kemampuan setiap pola. Pola desain ini berlaku untuk grup ketersediaan dengan CLUSTER_TYPE = EXTERNAL solusi ketersediaan tinggi.
- Tiga replika sinkron
- Dua replika sinkron
- Dua replika sinkron dan 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.
Grup ketersediaan dengan tiga replika sinkron dapat memberikan skala baca, ketersediaan tinggi, dan perlindungan data. Tabel berikut ini menjelaskan perilaku ketersediaan.
| Perilaku ketersediaan | baca-skala | Ketersediaan tinggi & perlindungan data |
Perlindungan data |
|---|---|---|---|
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT= |
0 | 1 1 | 2 |
| Pemadaman utama | Failover otomatis. Mungkin kehilangan data. Primer baru adalah R/W. | Failover otomatis. Primer 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 SQL Server 2017 (14.x) RTM dan tidak lagi didukung dengan versi SQL Server 2017 (14.x) yang lebih tinggi (CU1 dan seterusnya).
Grup ketersediaan dengan dua replika sinkron memberikan perlindungan skala baca dan data. Tabel berikut ini menjelaskan perilaku ketersediaan.
| Perilaku ketersediaan | baca-skala | Perlindungan data |
|---|---|---|
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT= |
0 1 | 1 |
| Pemadaman utama | Failover otomatis. Mungkin kehilangan data. Primer 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, berjalan terpapar 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 replika konfigurasi saja
Grup ketersediaan dengan dua (atau lebih) replika sinkron dan replika konfigurasi hanya memberikan perlindungan data dan mungkin juga memberikan ketersediaan tinggi. Diagram berikut mewakili arsitektur ini:
- Replikasi data pengguna yang sinkron ke replika sekunder. Ini juga mencakup metadata konfigurasi grup ketersediaan.
- Replikasi sinkron metadata konfigurasi grup ketersediaan. Ini tidak menyertakan data pengguna.
Dalam diagram grup ketersediaan, replika utama mendorong data konfigurasi ke replika sekunder dan replika konfigurasi saja. Replika sekunder juga menerima data pengguna. Replika konfigurasi saja tidak menerima data pengguna. Replika sekunder dalam mode ketersediaan sinkron. Replika konfigurasi saja tidak berisi database dalam grup ketersediaan - hanya metadata tentang grup ketersediaan. Data konfigurasi pada replika konfigurasi saja diterapkan secara sinkron.
Catatan
Grup ketersediaan dengan replika konfigurasi saja 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 |
| Pemadaman utama | Failover otomatis. Primer 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. |
| Pemadaman replika sekunder | Utama adalah R/W, berjalan terpapar kehilangan data (jika primer gagal dan tidak dapat dipulihkan). Tidak ada failover otomatis jika primer juga gagal. | Primer tetap tidak tersedia untuk transaksi baca atau tulis hingga pemulihan sekunder gagal dan bergabung kembali dengan grup ketersediaan. Tidak ada replika yang gagal jika primer juga gagal. |
| Pemadaman replika hanya konfigurasi | Primer adalah R/W. Tidak ada failover otomatis jika primer juga gagal. | Primer adalah R/W. Tidak ada failover otomatis jika primer 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 yang gagal 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 konfigurasi saja untuk lebih dari satu grup ketersediaan.
Persyaratan
- Semua replika dalam grup ketersediaan dengan replika konfigurasi saja harus SQL Server 2017 (14.x) CU 1 atau versi yang lebih baru.
- Edisi SQL Server apa pun dapat menghosting replika konfigurasi saja, termasuk SQL Server Express.
- Grup ketersediaan membutuhkan setidaknya satu replika sekunder - selain replika utama.
- Hanya replika konfigurasi yang tidak dihitung terhadap jumlah maksimum replika per instans SQL Server. Edisi standar SQL Server memungkinkan hingga tiga replika, SQL Server Enterprise Edition memungkinkan hingga 9.
Pertimbangan
- Tidak lebih dari satu replika konfigurasi hanya per grup ketersediaan.
- Replika konfigurasi saja tidak dapat menjadi replika utama.
- Anda tidak dapat mengubah mode ketersediaan replika konfigurasi saja. 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 konfigurasi, tetapi tidak ada replika sekunder yang 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 tetap mutakhir.
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, pada waktu failover, agen sumber daya memerlukan (total number of replicas - required_copies_to_commit replika) untuk menanggapi pemberitahuan pra-promosi untuk dapat mempromosikan salah satunya ke primer. Replika dengan yang tertinggi sequence_number dipromosikan ke primer.
Misalnya, pertimbangkan kasus grup ketersediaan dengan tiga replika sinkron - satu replika utama dan dua replika sekunder komit sinkron.
REQUIRED_COPIES_TO_COMMITadalah 3 / 2 = 1Jumlah replika yang diperlukan untuk merespons tindakan prapromosikan adalah 3 - 1 = 2. Jadi dua replika harus siap untuk failover yang akan 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 sinkronisasi
| Konfigurasi | Pemadaman utama | Satu pemadaman replika sekunder |
|---|---|---|
REQUIRED_COPIES_TO_COMMIT = 0 |
Anda harus secara manual mengeluarkan FAILOVER.Dapat menyebabkan kehilangan data. Primer baru adalah R/W. |
Primer adalah R/W, berjalan terpapar kehilangan data. |
REQUIRED_COPIES_TO_COMMIT = 1
1 |
Masalah kluster secara otomatis FAILOVERTidak ada kehilangan data. Primer baru menolak semua koneksi sampai mantan primer pulih dan bergabung dengan grup ketersediaan sebagai sekunder. |
Primer menolak semua koneksi hingga sekunder pulih. |
1 Agen sumber daya SQL Server untuk perilaku default Pacemaker.
Grup ketersediaan - tiga replika sinkronisasi
| Konfigurasi | Pemadaman utama | Satu pemadaman replika sekunder |
|---|---|---|
REQUIRED_COPIES_TO_COMMIT = 0 |
Anda harus mengeluarkan perintah FAILOVER.Dapat menyebabkan kehilangan data. Primer baru adalah R/W. |
Primer adalah R/W. |
REQUIRED_COPIES_TO_COMMIT = 1
1 |
Kluster secara otomatis mengeluarkan FAILOVER.Tidak ada kehilangan data. Primer baru adalah R/W. |
Primer adalah R/W. |
1 Agen sumber daya SQL Server untuk perilaku default Pacemaker.