Apa yang bisa kami bantu?

A. Pendahuluan

Replikasi database adalah salah satu cara untuk menyimpan data secara otomatis di beberapa server yang berbeda. Dengan replikasi database, kita dapat memastikan bahwa data yang tersimpan di server-server tersebut selalu sama dan terupdate. Salah satu metode replikasi database yang populer adalah menggunakan Galera, sebuah proyek open source yang dikembangkan oleh MariaDB. 

Galera memiliki beberapa kelebihan yang menjadikannya pilihan yang baik untuk replikasi database. Pertama, Galera menggunakan sistem transaksional yang memungkinkan kita untuk mengelola data dengan lebih aman. Kedua, Galera mendukung cluster active-active, sehingga kita dapat melakukan operasi pada setiap server secara bersamaan. Ketiga, Galera dapat digunakan dengan mudah pada berbagai sistem operasi, termasuk Ubuntu. 

Pada artikel ini, kita akan men deploy replikasi database cluster active-active menggunakan Galera pada dua node Ubuntu 20.04. Artikel ini akan memberikan panduan langkah demi langkah untuk mengatur replikasi database tersebut.

B. Installasi dan Konfigurasi

Untuk mengatur replikasi database cluster active-active menggunakan Galera, pertama-tama kita perlu menginstall MariaDB dan Galera pada setiap node yang akan digunakan. Berikut adalah langkah-langkah yang dapat Anda ikuti pada sistem operasi Ubuntu 20.04:  

Node 1: 

  1. Pastikan bahwa sistem operasi Anda sudah terupdate dengan perintah sudo apt update && sudo apt upgrade. 

  2. Instal MariaDB dengan perintah sudo apt install mariadb-server mariadb-client.

  3. Lakukan setup MariaDB seperti biasa dengan command mysql_secure_installation 

  4. Buat konfigurasi Galera pada node1 dengan command nano /etc/mysql/conf.d/galera.cnf dan masukkan baris code berikut: 
    [mysqld]
    binlog_format=ROW
    default-storage-engine=innodb
    innodb_autoinc_lock_mode=2
    bind-address=0.0.0.0
     
    # Galera Provider Configuration
    wsrep_on=ON
    wsrep_provider=/usr/lib/galera/libgalera_smm.so
     
    # Galera Cluster Configuration
    wsrep_cluster_name="cluster_name"
    wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address"
     
    # Galera Synchronization Configuration
    wsrep_sst_method=rsync
     
    # Galera Node Configuration
    wsrep_node_address="node1-ip-address"
    wsrep_node_name="node1"
  5. Ubah beberapa baris sesuai kebutuhan. Misalnya, ubah baris wsrep_cluster_name="cluster_name" menjadi wsrep_cluster_name="nama_cluster_Anda",
    dan sesuaikan baris wsrep_node_address dengan alamat IP server node1.

  6. Tambahkan informasi node kedua pada file konfigurasi Galera dengan menambahkan baris wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address".   Perhatikan gambar berikut:
  7. Karena binding IP address kita setting pada galera.cnf, jadi bind address pada 50-server.cnf harus dinonaktifkan. Gunakan perintah berikut: sed -i 's/bind-address/#bind-address/g'   /etc/mysql/mariadb.conf.d/50-server.cnf

  8. Stop MariaDB dengan perintah sudo systemctl stop mysql


Node 2:

  1. Pastikan bahwa sistem operasi Anda sudah terupdate dengan perintah sudo apt update && sudo apt upgrade.
  2. Instal MariaDB dengan perintah sudo apt install mariadb-server mariadb-client.
  3. Lakukan setup MariaDB seperti biasa dengan command sudo mysql_secure_installation
  4. Buat konfigurasi Galera pada node2 dengan command sudo nano /etc/mysql/conf.d/galera.cnf dan masukkan baris code berikut:
    [mysqld]
    binlog_format=ROW
    default-storage-engine=innodb
    innodb_autoinc_lock_mode=2
    bind-address=0.0.0.0
     
    # Galera Provider Configuration
    wsrep_on=ON
    wsrep_provider=/usr/lib/galera/libgalera_smm.so
     
    # Galera Cluster Configuration
    wsrep_cluster_name="cluster_name"
    wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address"
     
    # Galera Synchronization Configuration
    wsrep_sst_method=rsync
     
    # Galera Node Configuration
    wsrep_node_address="node1-ip-address"
    wsrep_node_name="node1"
  5. Ubah beberapa baris sesuai kebutuhan. Misalnya, ubah baris wsrep_cluster_name="cluster_name" menjadi wsrep_cluster_name="nama_cluster_Anda", dan sesuaikan baris wsrep_node_address dengan alamat IP server node2.
  6. Tambahkan informasi node kedua pada file konfigurasi Galera dengan menambahkan baris wsrep_cluster_address="gcomm://node1-ip-address,node2-ip-address". Perhatikan gambar berikut:
  7. Karena binding IP address kita setting pada galera.cnf, jadi bind address pada 50-server.cnf harus dinonaktifkan. Gunakan perintah berikut: sudo sed -i 's/bind-address/#bind-address/g' /etc/mysql/mariadb.conf.d/50-server.cnf
  8. Stop MariaDB dengan perintah sudo systemctl stop mysql

Setelah selesai melakukan installasi MariaDB pada semua node, dan sudah menambahkan konfigurasi galera, selanjutnya jalankan command berikut pada node1 dan pastikan MariaDB pada setiap node telah berhenti.

# sudo galera_new_cluster
Setelah menjalankan command diatas, cek status MariaDB pada node1 dan pastikan sudah berjalan
# systemctl status mariadb

Selanjutnya pada node2, start kembali mariadb yang sebelumnya telah dimatikan, gunakan command sudo systemctl start mariadb

Kemudian cek status MariaDB node2 dengan command 

# systemctl status mariadb

Pastikan pada node2 MariaDB juga berjalan dengan baik

Setelah selesai mengaktifkan node2 selanjutnya, cek status cluster dengan command berikut, dan pastikan output nya sesuai dengan jumlah node anda:

# mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Note:

Jika saat menjalankan perintah systemctl start mariadb pada node2 dan anda mendapat error atau MariaDB gagal berjalan maka silakan pastikan jika port-port yang dibutuhkan galera cluster untuk saling terhubung antar node sudah open. Berikut refrensi lebih lanjutnya: https://galeracluster.com/library/documentation/firewall-settings.html

C. Hasil Uji Coba

Setelah mengikuti langkah-langkah untuk mengatur replikasi database cluster menggunakan Galera pada setiap node, selanjutnya kita akan melakukan uji coba untuk memastikan bahwa replikasi berjalan dengan baik. Berikut adalah langkah-langkah yang dapat Anda ikuti: 

Pada node1 buat database dan table baru dengan perintah:

# mysql -u root -p -e "CREATE DATABASE test; USE test; CREATE TABLE test_table 
(id INT PRIMARY KEY AUTO_INCREMENT, data VARCHAR(255))" 

Tambahkan beberapa baris data ke tabel tersebut dengan perintah:

# mysql -u root -p -e "USE test; INSERT INTO test_table (data) VALUES ('test data 1'), ('test data 2'), ('test data 3')" 

Periksa apakah data tersebut tersimpan pada node1, dengan perintah 

# mysql -u root -p -e "USE test; SELECT * FROM test_table"

Periksa apakah data tersebut tersimpan pada node2 dengan perintah yang sama. Jika data tersebut tersimpan dan terupdate di setiap node, maka replikasi berhasil dilakukan 

D. Kesimpulan

Melalui artikel ini, kita telah membahas tentang cara mengatur replikasi database cluster menggunakan Galera pada sistem operasi Ubuntu 20.04. Dengan mengikuti langkah-langkah yang telah diberikan, Anda dapat dengan mudah membuat cluster yang terdiri dari dua node atau lebih, dan menguji apakah replikasi berjalan dengan baik pada setiap node.

Galera merupakan solusi yang tepat untuk mengatasi masalah keandalan dan skalabilitas pada sistem database, karena memungkinkan Anda untuk menambah node baru dengan mudah dan memastikan bahwa data tersebut tersimpan dan terupdate di setiap node yang tergabung dalam cluster. Dengan demikian, Anda dapat meningkatkan keandalan sistem database Anda tanpa harus menambah biaya atau kompleksitas yang berlebihan.

Tetapi perlu diingat bahwa mengatur dan mengelola cluster Galera membutuhkan pengetahuan yang lebih mendalam tentang database dan jaringan, serta membutuhkan pemantauan yang terus-menerus untuk memastikan bahwa cluster tetap berjalan dengan baik. Oleh karena itu, jika Anda tidak memiliki pengalaman yang cukup, disarankan untuk meminta bantuan dari tim yang lebih berpengalaman atau menggunakan layanan Manage Support kami untuk menyediakan Galera Cluster dengan cara yang lebih mudah.

Semoga artikel ini dapat membantu Anda. Temukan bantuan lainnya melalui Knowledge Base Biznet Gio. Jika Anda masih memiliki kendala silahkan hubungi support@biznetgio.com atau (021) 5714567.