Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kerangka Ketersediaan Tinggi MySQL Dijelaskan – Bagian I:Pendahuluan

Dalam seri blog tiga bagian ini, kami akan menjelaskan detail dan fungsionalitas kerangka kerja Ketersediaan Tinggi (HA) untuk hosting MySQL menggunakan replikasi semisinkron MySQL dan tumpukan Corosync plus Pacemaker. Di Bagian I, kami akan memandu Anda melalui dasar-dasar Ketersediaan Tinggi, komponen kerangka kerja HA, dan kemudian memperkenalkan kerangka kerja HA untuk MySQL.

Apa itu Ketersediaan Tinggi?

Ketersediaan sistem komputer adalah persentase waktu layanannya aktif selama periode waktu tertentu. Ini umumnya dinyatakan sebagai rangkaian 9′s. Misalnya, tabel di bawah ini menunjukkan ketersediaan dan waktu henti terkait yang diukur selama satu tahun.

% Ketersediaan Waktu Henti Per Tahun
90% (“satu 9 “) 36,53 hari
99% (“dua 9 detik “) 3,65 hari
99,9% (“tiga angka 9 “) 8,77 jam
99,99% (“empat 9 detik “) 52,60 menit
99,999% (“lima 9 detik “) 5,26 menit
99,9999% (“enam 9 detik “) 31,56 detik

Arti Ketersediaan Tinggi bervariasi tergantung pada persyaratan aplikasi dan bisnis Anda. Misalnya, jika Anda tidak dapat membayar waktu henti lebih dari beberapa menit per tahun dalam layanan Anda, kami mengatakan bahwa layanan tersebut harus memiliki Ketersediaan Tinggi 99,999%.

Komponen Kerangka HA

Inti dari menjadi sangat tersedia adalah kemampuan untuk segera pulih dari kegagalan yang dapat terjadi di bagian mana pun dari sistem. Ada empat komponen yang sangat penting dalam kerangka kerja HA apa pun yang perlu bekerja sama secara otomatis untuk memungkinkan pemulihan ini. Mari kita tinjau  komponen ini secara mendetail:

1. Redundansi dalam Infrastruktur &Data

Agar layanan menjadi sangat tersedia, kami perlu memastikan bahwa ada redundansi di hosting infrastruktur serta redundan terbaru salinan data yang digunakan atau disediakan oleh layanan. Ini bertindak sebagai layanan siaga yang siap mengambil alih jika layanan utama terkena dampak kegagalan.

2. Mekanisme Deteksi &Koreksi Kegagalan

Sangat penting untuk segera mendeteksi kegagalan di bagian mana pun dari sistem utama yang dapat memengaruhi ketersediaannya. Ini akan memungkinkan kerangka kerja untuk mengambil tindakan korektif pada sistem utama yang sama, atau mengalihkan layanan ke sistem siaga.

3. Mekanisme Kegagalan

Komponen ini menangani tanggung jawab untuk melakukan failover layanan ke infrastruktur siaga Anda. Harap dicatat bahwa jika ada beberapa sistem redundan yang tersedia, komponen mekanisme failover ini harus mengidentifikasi sistem yang paling cocok di antara sistem tersebut dan mempromosikannya sebagai layanan utama.

4. Mekanisme Pengalihan Aplikasi/Pengguna

Setelah sistem siaga mengambil alih sebagai yang utama, komponen ini memastikan bahwa semua aplikasi dan koneksi pengguna mulai terjadi pada yang utama baru.

Penjelasan Kerangka Ketersediaan Tinggi MySQL - Bagian IClick To Tweet

Kerangka HA untuk MySQL

Berdasarkan model di atas, kami menggunakan kerangka kerja HA berikut untuk hosting MySQL kami di ScaleGrid:

  • Penyiapan Master-Slave 3-Node menggunakan replikasi semisinkron MySQL untuk menyediakan infrastruktur dan redundansi data.
  • Stack Corosync plus Pacemaker untuk menyediakan deteksi kegagalan, koreksi, dan mekanisme failover.
  • Pemetaan DNS atau komponen IP Virtual untuk menyediakan mekanisme pengalihan aplikasi dan pengguna.

Lihat diagram di bawah ini untuk memvisualisasikan tumpukan perangkat lunak dari arsitektur ini:

Mari kita tinjau fungsionalitas beberapa komponen utama dalam kerangka kerja ini.

  1. Corosync

    Corosync menyediakan kerangka kerja komunikasi untuk node dengan penyampaian pesan yang andal di antara mereka. Ini membentuk cincin cluster node, dan melacak node bergabung dan meninggalkan cluster melalui keanggotaan cluster. Corosync bekerja sama erat dengan Pacemaker untuk mengomunikasikan tentang ketersediaan node sehingga Pacemaker dapat mengambil keputusan yang tepat.

  2. Alat pacu jantung

    Juga dikenal sebagai Cluster Resource Manager (CRM), Pacemaker memastikan ketersediaan tinggi untuk MySQL yang berjalan di cluster dan mendeteksi serta menangani kegagalan tingkat node dengan berinteraksi dengan Corosync. Itu juga mendeteksi dan menangani kegagalan MySQL dengan berinteraksi dengan Agen Sumber Daya (RA). Alat pacu jantung mengonfigurasi dan mengelola sumber daya MySQL melalui operasi start, stop, monitor, promote, dan demote.

  3. Agen Sumber Daya

    Agen Sumber Daya bertindak sebagai antarmuka antara MySQL dan Pacemaker. Ini Menerapkan operasi mulai, hentikan, promosikan, turunkan, dan monitor yang dipanggil oleh Alat Pacu Jantung. Ada Agen Sumber Daya yang berfungsi penuh yang disebut Percona Replication Manager (PRM) untuk MySQL yang diimplementasikan oleh Percona. Ini telah ditingkatkan oleh ScaleGrid dan tersedia di halaman GitHub kami.

  4. Komponen Pemetaan DNS

    Agen Sumber Daya, saat menyelesaikan failover yang berhasil, memanggil komponen ini yang memperbarui catatan DNS server MySQL master dengan alamat IP master baru. Perhatikan bahwa klien selalu menggunakan nama DNS master untuk terhubung dengan server MySQL, dan dengan mengelola pemetaan nama DNS ini ke alamat IP master saat ini, kami dapat memastikan bahwa klien tidak perlu mengubah string atau properti koneksi mereka saat ada failover.

Di Bagian II dari seri blog ini, Anda akan belajar tentang komponen redundansi data penting yang dicapai menggunakan replikasi semisinkron MySQL. Kami juga akan mendalami detail dan konfigurasi replikasi semisinkron yang kami gunakan untuk mencapai dukungan ketersediaan tinggi kami, dan terakhir, meninjau berbagai skenario kegagalan di Bagian III dan cara kerangka kerja merespons dan pulih dari kondisi ini.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa yang lebih baik di MYSQL count(*) atau count(1)?

  2. Fungsi peringkat di MySQL

  3. Menggunakan Oracle JDeveloper dengan Layanan Database MySQL di Oracle Cloud Platform, Bagian 2

  4. Format tanggal penyisipan mysql PHP

  5. MySQL:Bagaimana cara saya bergabung dengan tabel yang sama beberapa kali?