MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Failover Tingkat Lanjut Menggunakan Kait Skrip Post/pra

Pentingnya Kegagalan

Failover adalah salah satu praktik database terpenting untuk tata kelola database. Ini berguna tidak hanya saat mengelola database besar dalam produksi, tetapi juga jika Anda ingin memastikan bahwa sistem Anda selalu tersedia kapan pun Anda mengaksesnya - terutama pada tingkat aplikasi.

Sebelum failover dapat terjadi, instance database Anda harus memenuhi persyaratan tertentu. Persyaratan ini, pada kenyataannya, sangat penting untuk ketersediaan tinggi. Salah satu persyaratan yang harus dipenuhi oleh instance database Anda adalah redundansi. Redundansi memungkinkan failover untuk melanjutkan, di mana redundansi diatur untuk memiliki kandidat failover yang dapat berupa node replika (sekunder) atau dari kumpulan replika yang bertindak sebagai node siaga atau siaga panas. Kandidat dipilih secara manual atau otomatis berdasarkan node yang paling canggih atau terbaru. Biasanya, Anda menginginkan replika hot-standby karena dapat menyelamatkan database Anda dari menarik indeks dari disk karena hot-standby sering mengisi indeks ke dalam kumpulan buffer database.

Failover adalah istilah yang digunakan untuk menggambarkan bahwa proses pemulihan telah terjadi. Sebelum proses pemulihan, ini terjadi ketika node database utama (atau master) gagal setelah crash, setelah bencana alam, setelah kegagalan perangkat keras, atau mungkin mengalami partisi jaringan; ini adalah kasus paling umum mengapa failover mungkin terjadi. Proses pemulihan biasanya berjalan secara otomatis dan kemudian mencari sekunder (replika) yang paling diinginkan dan terbaru seperti yang dinyatakan sebelumnya.

Failover lanjutan

Meskipun proses pemulihan selama failover otomatis, ada saat-saat tertentu ketika proses tidak perlu diotomatisasi, dan proses manual harus mengambil alih. Kompleksitas sering menjadi pertimbangan utama yang terkait dengan teknologi yang terdiri dari seluruh tumpukan database Anda - failover otomatis dapat dicampur dengan failover manual juga.

Dalam kebanyakan pertimbangan sehari-hari dengan mengelola database, sebagian besar kekhawatiran seputar failover otomatis sebenarnya tidak sepele. Seringkali berguna untuk menerapkan dan mengatur failover otomatis jika terjadi masalah. Meskipun kedengarannya menjanjikan karena mencakup kompleksitas, ada mekanisme failover lanjutan dan yang melibatkan peristiwa "pra" dan peristiwa "pasca" yang diikat sebagai kait dalam perangkat lunak atau teknologi failover.

Acara pra dan pasca ini muncul dengan pemeriksaan atau tindakan tertentu yang harus dilakukan sebelum akhirnya dapat melanjutkan dengan failover, dan setelah failover selesai, beberapa pembersihan untuk memastikan bahwa failover akhirnya berhasil satu. Untungnya, ada alat yang tersedia yang memungkinkan, tidak hanya Automatic Failover, tetapi juga fitur kemampuan untuk menerapkan kait skrip sebelum dan sesudah.

Di blog ini, kami akan menggunakan failover otomatis ClusterControl (CC) dan akan menjelaskan cara menggunakan kait skrip pra dan pasca dan cluster mana yang menerapkannya.

Kegagalan Replikasi ClusterControl

Mekanisme failover ClusterControl dapat diterapkan secara efisien melalui replikasi asinkron yang berlaku untuk varian MySQL (MySQL/Percona Server/MariaDB). Ini juga berlaku untuk cluster PostgreSQL/TimescaleDB - ClusterControl mendukung replikasi streaming. Cluster MongoDB dan Galera memiliki mekanisme sendiri untuk failover otomatis yang dibangun ke dalam teknologi databasenya sendiri. Baca selengkapnya tentang bagaimana ClusterControl melakukan pemulihan dan failover database otomatis.

Kegagalan ClusterControl tidak berfungsi kecuali pemulihan Node dan Cluster (Pemulihan Otomatis diaktifkan). Itu berarti tombol ini harus berwarna hijau.

Dokumentasi menyatakan bahwa opsi konfigurasi ini dapat digunakan juga untuk mengaktifkan / nonaktifkan yang berikut ini:

enable_cluster_autorecovery=

  • Jika tidak ditentukan, CMON default ke 0 (false) dan TIDAK akan melakukan pemulihan otomatis jika mendeteksi kegagalan cluster. Nilai yang didukung adalah 1 (pemulihan cluster diaktifkan) atau 0 (pemulihan cluster dinonaktifkan).

enable_node_autorecovery=

  • Jika tidak ditentukan, CMON default ke 0 (false) dan TIDAK akan melakukan pemulihan otomatis jika mendeteksi kegagalan node. Nilai yang didukung adalah 1 (pemulihan node diaktifkan) atau 0 (pemulihan node dinonaktifkan).

Opsi-opsi ini, ketika diatur di /etc/cmon.d/cmon_.cnf membutuhkan cmon restart. Oleh karena itu, Anda harus memulai ulang menggunakan perintah berikut:

$ systemctl restart cmon

Untuk blog ini, kami terutama berfokus pada cara menggunakan kait skrip pra/pasca yang pada dasarnya merupakan keuntungan besar untuk kegagalan replikasi lanjutan.

Dukungan skrip pra/pasca replikasi failover cluster

Seperti yang disebutkan sebelumnya, varian MySQL yang menggunakan replikasi asinkron (termasuk semi-sinkron) dan replikasi streaming untuk PostgreSQL/TimescaleDB mendukung mekanisme ini. ClusterControl memiliki opsi konfigurasi berikut yang dapat digunakan untuk kait skrip pra dan pasca. Pada dasarnya, opsi konfigurasi ini dapat diatur melalui file konfigurasinya atau dapat diatur melalui UI web (kita akan membahasnya nanti).

Dokumentasi kami menyatakan bahwa ini adalah opsi konfigurasi berikut yang dapat mengubah mekanisme failover dengan menggunakan kait skrip pra/pasca:

replication_pre_failover_script=

  • Jalur ke skrip failover pada node ClusterControl. Script ini dijalankan sebelum failover terjadi, tetapi setelah kandidat terpilih dan dimungkinkan untuk melanjutkan proses failover. Jika skrip mengembalikan bukan nol, itu akan memaksa failover untuk dibatalkan. Jika skrip ditentukan tetapi tidak ditemukan, failover akan dibatalkan.

  • 4 argumen diberikan ke skrip:

    • arg1=”Semua server dalam replikasi”

    • arg2=”Master yang gagal”

    • arg3=”Calon terpilih”

    • arg4=”Budak tuan tua”

  • Argumen akan diteruskan seperti ini:pre_failover_script.sh "arg1" "arg2" "arg3" "arg4 ". Skrip harus dapat diakses di pengontrol dan dapat dieksekusi.

  • Contoh:replikasi_pre_failover_script=/usr/local/bin/pre_failover_script.sh

replication_post_failover_script=

  • Jalur ke skrip failover pada node ClusterControl. Script ini dijalankan setelah failover terjadi. Jika skrip mengembalikan bukan nol, peringatan akan ditulis di log pekerjaan. Skrip harus dapat diakses dan dijalankan di pengontrol.

  • 4 argumen diberikan ke skrip:

    • arg1=”Semua server dalam replikasi”

    • arg2=”Master yang gagal”

    • arg3=”Calon terpilih”

    • arg4=”Budak tuan tua”

  • Argumen akan diteruskan seperti ini:post_failover_script.sh "arg1" "arg2" "arg3" "arg4 ". Skrip harus dapat diakses di pengontrol dan dapat dieksekusi.

  • Contoh:replikasi_post_failover_script=/usr/local/bin/post_failover_script.sh

replication_post_unsuccessful_failover_script=

  • Jalur ke skrip pada node ClusterControl. Skrip ini dijalankan setelah upaya failover gagal. Jika skrip mengembalikan bukan nol, Peringatan akan ditulis di log pekerjaan. Skrip harus dapat diakses di pengontrol dan dapat dieksekusi.

  • 4 argumen diberikan ke skrip:

    • arg1=”Semua server dalam replikasi”

    • arg2=”Master yang gagal”

    • arg3=”Calon terpilih”

    • arg4=”Budak tuan tua”

  • Argumen akan diteruskan seperti ini:post_fail_failover_script.sh "arg1" "arg2" "arg3" "arg4 ". Skrip harus dapat diakses di pengontrol dan dapat dieksekusi.

  • Contoh:replikasi_post_unsuccessful_failover_script=post_fail_failover_script.sh

Secara teknis, setelah Anda menyetel opsi konfigurasi berikut di file konfigurasi /etc/cmon.d/cmon_.cnf Anda, cmon harus di-restart, mis. jalankan perintah berikut:

$ systemctl restart cmon

Atau, Anda juga dapat mengatur opsi konfigurasi dengan membuka