Linux & Development

MariaDB Galera Cluster 설치 방법

DaehanCNI 2026. 3. 3. 12:23

 MariaDB Galera Cluster는 MariaDB를 위한 멀티 프라이머리(Active-Active) 클러스터 솔루션을 제공하여 고가용성, 읽기/쓰기 확장성 및 진정한 동기식 복제를 지원합니다. 즉, 모든 노드에서 읽기 및 쓰기 작업을 처리할 수 있으며, 변경 사항은 다른 모든 노드에 즉시 복제되어 복제 지연이나 트랜잭션 손실이 발생하지 않습니다. 이 솔루션은 Linux에서만 사용할 수 있습니다. 저는 Rocky Linux 9.6 을 이용하였습니다. 

 

1. 준비 사항 

모든 노드에서 다음과 같은 설정을 진행합니다. 

  • 최소 3개의 Node: 시스템 중복성을 확보하고 스플릿 브레인 현상을 방지하기 위해 (베어메탈 또는 가상 머신).
  • Linux OS: 호환되는 Debian 기반(예: Ubuntu, Debian) 또는 RHEL 기반(예: CentOS, Fedora) 배포판.
  • 동기화 Clocks: 모든 노드는 시간 동기화를 위해 NTP가 구성되어 있어야 합니다.
  • SSH 접근 권한: 설치 및 구성을 위해 모든 노드에 대한 루트 또는 sudo 접근 권한이 필요합니다.
  • 네트워크 연결성: 모든 노드는 특정 포트를 통해 서로 통신할 수 있어야 합니다(방화벽 섹션 참조). 노드 간 지연 시간이 짧을수록 이상적입니다.

 

1.1 IP 설정

~# nmtui

1.2 hostname 설정 

~# hostnamectl set-hostname node1
~# vi /etc/hosts
...
192.168.122.11	node1
192.168.122.12	node2
192.168.122.13	node3

1.3 패키지 최신화

~# dnf update

1.4 rsync 설치 

 스냅샷 전송(SST) 에 사용되는 패키지을 설치합니다. 

~# dnf install rsync

 

2. Mariadb & Galera 설치

2.1 repo 추가

 기본 패키지로 설치 시, galera_new_cluster 가 없어 설치가 힘듭니다. 우회 방법을 사용하였으나 실패하였으니 참고하시면 좋으실 것 같습니다. 

~# curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash
~# dnf makecache

 

2.2 Mariadb 설치

 mariadb-server 설치하면 나머지 패키지도 설치 됩니다. 

~# dnf install mariadb-server
~# dnf install mariadb-client
~# dnf install galera-4

 

2.3 mariadb secure 설정. (설치 환경에 맞게 변경)

~# systemctl start mariadb.service
~# mariadb-secure-installation
  • root 패스워드 변경
  • remove anonymous user : Y
  • disallow root login remotely : Y
  • remove test database and access to it : Y
  • reload privilege tables now : Y

 

2.4 firewall & selinux 설정

~# firewall-cmd --permanent --add-port=3306/tcp
~# firewall-cmd --permanent --add-port=4567/tcp
~# firewall-cmd --permanent --add-port=4567/udp
~# firewall-cmd --permanent --add-port=4568/tcp
~# firewall-cmd --permanent --add-port=4444/tcp
~# firewall-cmd --reload
~# firewall-cmd --lilst-all
  • MariaDB client connections (3306)
  • Galera replication (multicast and unicast) (4567)
  • Incremental State Transfer (IST) (4568)
  • State Snapshot Transfer (SST) (4444)

 selinux 설정은 환경에 맞추어 변경합니다. (테스트를 위해 selinux off)

~# setenforce 0

 

2.5. galera 설정 

"wsrep_cluster_address" 에 모든 Node을 추가하며, 각각의 Node 에 맞추어 "wsrep_node_name" 및 "wsrep_node_address" 설정합니다. 또한 "wsrep_cluster_name" 도 프로젝트 이름으로 변경합니다. 

~# vi /etc/my.cnf.d/galera.cnf

[mysqld]
# Basic MariaDB settings
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0 # Binds to all network interfaces. Adjust if you have a specific private IP for cluster traffic.

# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so # Adjust path if different (e.g., /usr/lib64/galera-4/libgalera_smm.so)

# Galera Cluster Configuration
wsrep_cluster_name="my_galera_cluster" # A unique name for your cluster

# IP addresses of ALL nodes in the cluster, comma-separated.
# Use private IPs if available for cluster communication.
wsrep_cluster_address="gcomm://192.168.122.11,192.168.122.12,192.168.122.13"

# This node's specific configuration
wsrep_node_name="node1" # Must be unique for each node (e.g., node1, node2, node3)
wsrep_node_address="192.168.122.11" # This node's own IP address

 

2.6 Mariadb 중단

~# systemctl stop mariadb

 

2.7 galera cluster 구축

 메인 노드에서만 진행 합니다. 저는 "Node1" 번에서 진행하였습니다. 

~# galera_new_cluster

 

2.8 Mariadb 재시작

~# systemctl start mariadb

 

3. 테스트

3.1 클러스터 구축 확인

구축된 Node수와 동일한 수로 출력되는 지 확인한다. cluster로 묶인 node 수로 확인할 수 있다. 

~# mariadb -u root -p
Mariadb [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';

 

3.2 Database 추가 테스트 

  • Node 1
> CREATE DATABASE test_db;
> USE test_db;
> CREATE TABLE messages (id INT AUTO_INCREMENT PRIMARY KEY, text VARCHAR(255));
> INSERT INTO messages (text) VALUES ('Hello from node1!');
  • Node 2
> SHOW DATABASES; 
> USE test_db;
> SELECT * FROM messages;

 

  • Node 3
> INSERT INTO messages (text) VALUES ('Hello from node2!');
  • Node 1
> SELECT * FROM messages;

 

 모든 Node 에서 Active-Active 로 동작하는 것을 확인하였습니다. 데이터 베이스 운영에 있어서 꼭 필요한 Active-Active 설치 방법이였습니다. 

 

Ref: MariaDB Galera Cluster Guide

https://mariadb.com/docs/galera-cluster/galera-cluster-quickstart-guides/mariadb-galera-cluster-guide

'Linux & Development' 카테고리의 다른 글

Mariadb 이중화 설정 (Master / Slave)  (0) 2026.02.18
WireGuard VPN 설정하기 (Ubunut24.04)  (0) 2025.12.31
nodejs version 업그레이드  (1) 2024.06.15
Linux chrony client 설정  (0) 2024.04.18
git pull error 해결 방법  (0) 2024.04.15