Install MariaDB Galera Cluster on Linux Debian/Ubuntu - Purwana Tekno, Software Engineer
    Media Belajar membuat Software Aplikasi, Website, Game, & Multimedia untuk Pemula...

Post Top Ad

Rabu, 29 November 2023

Install MariaDB Galera Cluster on Linux Debian/Ubuntu

Berikut ini adalah panduan tentang cara menginstal MariaDB Galera Cluster pada Debian/Ubuntu. Karena banyak orang mengalami masalah saat menginstal MariaDB Galera Cluster, elenst dari #maria di freenode memaksa saya untuk menulis panduan ini.


MariaDB Galera Cluster Purwana


Menginstal MariaDB Galera Cluster sebenarnya cukup mudah dan pada akhirnya agak membosankan. Panduan ini ditulis untuk (dan diuji pada) Debian 7.1 (Wheezy) dan Ubuntu 12.04 (Precise).


Apa yang kita butuhkan

Dalam pengaturan kami, kami mengasumsikan 3 node (node01, node02, node03) dengan satu antarmuka masing-masing. Kami mengasumsikan alamat IP berikut: 172.16.8.5, 172.16.8.6, dan 172.16.8.4. Kami memerlukan tiga paket yang diinstal di semua node:


  • rsync
  • galera
  • mariadb-galera-server

Karena Galera tidak disertakan dalam repositori distribusi, gunakan konfigurator repo dan ikuti petunjuk untuk menyertakan repositori yang sesuai dengan sistem Anda. Ingatlah untuk Memilih "5.5" pada Langkah 3 (Pilih Versi). Dengan melakukan ini, Anda dapat langsung menuju ke Instal Paket.


Menambahkan Repositori

Anda juga bisa mengikuti langkah-langkah berikut.


Debian Wheezy



apt-get install python-software-properties
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
add-apt-repository 'deb http://mirror3.layerjet.com/mariadb/repo/5.5/debian wheezy main'
apt-get update



Ubuntu Precise


apt-get install python-software-properties
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
add-apt-repository 'deb http://mirror3.layerjet.com/mariadb/repo/5.5/ubuntu precise main'
apt-get update


Instal Paket


DEBIAN_FRONTEND=noninteractive apt-get install -y rsync galera mariadb-galera-server



Setelah menginstal paket-paket tersebut, Anda akan memiliki server MariaDB yang berjalan di setiap node. Tetapi belum ada yang dikonfigurasi untuk berjalan sebagai node dalam MariaDB Galera Cluster.


Mengkonfigurasi Galera

Jadi kita harus melakukan beberapa konfigurasi selanjutnya. Ada bagian konfigurasi MariaDB dan satu bagian untuk mengkonfigurasi Galera (dimulai dengan wsrep_). Karena kita melakukan instalasi yang paling dasar dan sederhana dalam panduan ini, sudah cukup jika Anda hanya mengubah IP (Ingat: 172.16.8.5, 172.16.8.6, 172.16.8.4) dengan IP Anda sendiri.

Ini akan diperlukan untuk menentukan Variabel wsrep_cluster_address (daftar node yang mysqld awalnya menghubungi untuk bergabung dengan klaster).


File konfigurasi berikut harus didistribusikan ke semua node. Kami menggunakan file konfigurasi terpisah /etc/mysql/conf.d/galera.cnf dengan pengaturan berikut:



[mysqld]
# Pengaturan MySQL
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
# Pengaturan Galera
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="my_wsrep_cluster"
wsrep_cluster_address="gcomm://172.16.8.5,172.16.8.6,172.16.8.4"
wsrep_sst_method=rsync



FYI: Pustaka bersama untuk wsrep_provider disediakan oleh paket galera yang diinstal.


Kita juga bisa mengubah nama klaster dengan mengganti nilai wserp_cluster_name agar sesuai dengan gaya kita. Pengaturan ini juga berfungsi sebagai rahasia bersama untuk mengontrol akses ke klaster. Dengan wsrep_cluster_address, Anda dapat melihat alamat IP dari pengaturan kami. Metode wsrep_sst_method memberi tahu metode apa yang digunakan untuk menyinkronkan node. Meskipun ada juga mysqldump dan xtrabackup yang tersedia, saya lebih suka rsync karena mudah dikonfigurasi (misalnya, tidak memerlukan kredensial yang diatur pada node).


Memulai Klaster Galera

Pertama-tama, kita menghentikan mysqld di semua node.


node01# service mysql stop
node02# service mysql stop
node03# service mysql stop


File konfigurasi (galera.cnf) sudah didistribusikan ke semua node, jadi kita kemudian memulai mysqld pertama. Node ini menginisialisasi/memulai klaster (membuat GTID).


node01# service mysql start --wsrep-new-cluster


Untuk melihat dan memastikan apakah semuanya benar-benar berfungsi, kita akan memeriksa variabel status ukuran klaster.


node01# mysql -u root -e 'SELECT VARIABLE_VALUE as "cluster size" FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size"'
+--------------+
| cluster size |
+--------------+
| 1            |
+--------------+


Jika Anda melihat hal di atas, bagus! Itu yang kita harapkan. Sekarang bahwa Klaster sudah ada, kita biarkan node berikutnya hanya memulai dan bergabung dengan klaster.



node2# service mysql start
[ ok ] Starting MariaDB database server: mysqld . . . . . . . . . ..
[info] Checking for corrupt, not cleanly closed and upgrade needing tables..
node01:/home/debian# ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)


Kesalahan di atas bisa diabaikan untuk saat ini. Node ini masih mulai dengan baik.


Mari berhenti sejenak dan melakukan pemeriksaan cepat. Karena kita menjalankan klaster, tidak penting apakah kita menjalankan perintah berikut di node01 atau node02.


mysql -u root -e 'SELECT VARIABLE_VALUE as "cluster size" FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size"'
+--------------+
| cluster size |
+--------------+
| 2            |
+--------------+


Jika Anda melihat hal di atas, sangat bagus! Sekarang mari mulai node ketiga:


node3# service mysql start
[ ok ] Starting MariaDB database server: mysqld . . . . . . . . . ..
[info] Checking for corrupt, not cleanly closed and upgrade needing tables..
node03:/home/debian# ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)

node03# mysql -u root -e 'SELECT VARIABLE_VALUE as "cluster size" FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size"'
+--------------+
| cluster size |
+--------------+
| 3            |
+--------------+


Oke, kita sudah selesai. Kami memiliki MariaDB Galera Cluster yang berjalan o/


Bersenang-senang dengan skrip init Debian/Ubuntu

Tetapi kita harus memperbaiki beberapa hal karena beberapa keanehan Debian/Ubuntu.


Ingat kesalahan yang kita lihat saat memulai node02 dan node03? Apa yang terjadi? Nah, Debian/Ubuntu menggunakan pengguna khusus ('debian-sys-maint'@'localhost') dalam skrip inisialisasi mereka dan kredensial untuk pengguna itu disimpan di /etc/mysql/debian.cnf. Pengguna ini digunakan untuk melakukan beberapa pemeriksaan saat memulai MySQL. Pemeriksaan yang menurut saya tidak seharusnya ada dalam skrip layanan apa pun.


Kita bisa saja mengabaikannya, tetapi pengguna ini juga digunakan untuk mematikan mysqld. Ini juga tidak diperlukan, karena SIGTERM sudah cukup untuk mematikan mysqld :/


Karena kami menyalin data dari node01 ke semua node lainnya, kredensial di /etc/mysql/debian.cnf tidak cocok di node02 dan node03. Jadi kami tidak akan dapat mematikan mysqld di salah satu dari node-node ini.



node02# service mysql stop
[FAIL] Stopping MariaDB database server: mysqld failed!



Jadi kita harus memperbaikinya, dengan menyalin /etc/mysql/debian.cnf dari node pertama (node01) ke semua node lainnya. Sehingga data dan file konfigurasi memiliki data yang sama lagi.


Setelah itu, kita dapat mematikan daemon:



node02# service mysql stop
[ ok ] Stopping MariaDB database server: mysqld.



Jadi jika kita memiliki skrip init yang tepat, panduan ini akan menjadi lebih pendek. Nikmati MariaDB Galera Cluster Anda dan bersenang-senang!


user also looking for :

  • db clustering on windows



Post Top Ad