MariaDB – Galera Cluster

Galera Cluster adalah penyelesaian Ketersediaan Tinggi (High Availability) dan Replikasi Serentak (Synchronous Replication) untuk pangkalan data MariaDB dan MySQL. Ia direka untuk memastikan konsistensi data, skalabiliti, dan failover automatik tanpa sebarang downtime.


1. Ciri-Ciri Utama Galera Cluster

  1. Multi-Master Replication
    • Setiap nod dalam kluster bertindak sebagai master.
    • Membolehkan penulisan (write) dan bacaan (read) dari mana-mana nod.
  2. Replikasi Serentak (Synchronous Replication)
    • Semua nod menerima dan melaksanakan perubahan data serentak, memastikan konsistensi kuat.
    • Mengelakkan isu lagging seperti dalam replikasi Master-Slave yang bersifat asynchronous.
  3. Failover Automatik
    • Jika satu nod gagal, nod lain mengambil alih operasi dengan otomatik tanpa memerlukan tindakan manual.
  4. No-Split Brain
    • Menggunakan Quorum-Based Decision Making untuk mengelakkan keadaan split brain, di mana dua nod berfikir mereka adalah master yang sah.
  5. Scalability (Kebolehskalaan)
    • Beban kerja bacaan (read workload) boleh diagihkan ke semua nod dalam kluster.
  6. Zero Downtime Upgrades
    • Menyokong kemas kini (upgrade) tanpa perlu menghentikan kluster, memastikan availability sepanjang masa.
  7. Transaction Consistency
    • Menggunakan protokol Write Set Replication (WSREP) untuk memastikan semua transaksi dihantar dan disahkan sebelum dianggap selesai.
  8. Galera Arbitrator (garbd)
    • Alat ringan yang bertindak sebagai saksi (witness) untuk membantu pengundian kuorum jika berlaku masalah pada nod.

2. Seni Bina Galera Cluster

  1. Node
    • Setiap pangkalan data dalam kluster disebut sebagai nod. Semua nod mempunyai salinan data yang sama.
  2. Write Set Replication (WSREP)
    • Protokol yang digunakan oleh Galera untuk menghantar dan mengesahkan transaksi antara nod.
  3. Quorum
    • Digunakan untuk menentukan status majoriti dalam kluster (contohnya, jika lebih separuh nod hidup, kluster akan terus beroperasi).
  4. Galera Arbitrator (garbd)
    • Nod tanpa penyimpanan data yang membantu dalam kuorum dan pengurusan failover.

3. Cara Kerja Galera Cluster

  1. Write Transaction Process:
    • Transaksi dihantar kepada semua nod dalam kluster sebelum dilaksanakan.
    • Nod lain mengesahkan (certify) sama ada transaksi sah dan mengelakkan konflik.
    • Selepas disahkan, transaksi diterapkan serentak di semua nod.
  2. Read Transaction Process:
    • Bacaan boleh dilakukan dari mana-mana nod kerana semua data konsisten dan disegerakkan.

4. Kelebihan Galera Cluster

KelebihanPenerangan
High Availability (HA)Tiada Single Point of Failure kerana semua nod adalah aktif dan boleh mengambil alih tugas.
ConsistencySemua nod disegerakkan secara serentak, mengelakkan masalah konsistensi data.
Load BalancingBacaan dan penulisan boleh diagihkan ke semua nod untuk prestasi optimum.
Failover AutomatikNod yang gagal akan dikeluarkan secara automatik tanpa gangguan perkhidmatan.
Penyelenggaraan MudahSokongan kemas kini dan penambahan nod tanpa mematikan kluster.
Pengendalian Data BesarSesuai untuk aplikasi dengan trafik tinggi dan data berskala besar.

5. Kekurangan Galera Cluster

KekuranganPenerangan
Latency Tinggi pada Transaksi BesarReplikasi serentak boleh menyebabkan kelewatan untuk transaksi yang besar atau kompleks.
Tidak Menyokong Table MyISAMHanya menyokong InnoDB dan beberapa enjin yang serasi dengan transaksi.
Kehilangan Nod Majoriti (Quorum)Jika bilangan nod hidup kurang daripada separuh, kluster akan berhenti untuk mengelakkan masalah.
Overhead Jaringan TinggiMemerlukan sambungan rangkaian berprestasi tinggi untuk replikasi masa nyata yang stabil.

6. Langkah Konfigurasi Galera Cluster

a) Pasang MariaDB dan Galera:

sudo apt-get install mariadb-server galera-4

b) Edit Konfigurasi MariaDB:

Fail: /etc/mysql/mariadb.conf.d/50-server.cnf

[mysqld]
bind-address=0.0.0.0
default_storage_engine=InnoDB
binlog_format=ROW
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="my_cluster"
wsrep_cluster_address="gcomm://192.168.1.1,192.168.1.2,192.168.1.3"
wsrep_node_address="192.168.1.1"
wsrep_node_name="node1"

c) Mulakan Kluster:

sudo systemctl restart mariadb

d) Semak Status Kluster:

SHOW STATUS LIKE 'wsrep_cluster_size';

7. Kegunaan Galera Cluster

  1. Sistem Transaksi Kritis:
    • E-commerce, aplikasi kewangan, dan sistem ERP yang memerlukan ketersediaan tinggi.
  2. Big Data dan Analitik:
    • Sesuai untuk pemprosesan data besar yang memerlukan penyelarasan masa nyata.
  3. Aplikasi Cloud dan Mikroservis:
    • Digunakan dalam persekitaran Docker atau Kubernetes untuk skalabiliti mendatar.
  4. Disaster Recovery:
    • Kluster yang diedarkan secara geografi untuk pemulihan bencana.

8. Alternatif kepada Galera Cluster

  1. Group Replication (MySQL): Alternatif untuk kluster dengan konsep serupa tetapi memerlukan pelayan MySQL.
  2. Percona XtraDB Cluster: Versi kluster berasaskan MySQL dengan fungsi yang menyerupai Galera.
  3. MaxScale Proxy: Digunakan bersama Galera untuk beban trafik yang lebih besar dan kompleks.

9. Kesimpulan

Galera Cluster sangat sesuai untuk aplikasi yang memerlukan ketersediaan tinggi, konsistensi kuat, dan failover automatik. Ia menyediakan multi-master replication dan menyokong load balancing untuk meningkatkan prestasi serta kebolehskalaan sistem.

Jika anda ingin panduan konfigurasi lebih terperinci atau bantuan troubleshooting, maklumkan kepada saya!

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *