간마늘작업소

[MariaDB] 이중화 구성 (Galera Cluster 이용) 본문

Linux/32.MySQL, MariaDB

[MariaDB] 이중화 구성 (Galera Cluster 이용)

간마늘 2023. 4. 26. 14:50

0.개요

  1. 고객사에 납품된 솔루션 중에 MariaDB를 사용하는 물건이 있음.
  2. 이중화 구성을 하는데 Galera Cluster(갈레라 클러스터)를 이용함.

 

1.기본 정보

  • OS 방화벽(Firewalld, iptables)과 SELinux는 비활성화 상태로 설정.
  • DB Node 정보
    1. 192.168.0.17 - DB Node 1, Hostname : ha001
    2. 192.168.0.18 - DB Node 2, Hostname : ha002
    3. 192.168.0.19 - DB Node 3, Hostname : ha003
  • MariaDB는 사전에 설치되어 있는 것으로 가정.
  • 하단 명령어 중 적색 글씨는 Main Node 에만 적용.
  • 하단 명령어 중 청색 글씨는 Sub Node에만 적용.
  • Galera Cluster에는 별도의 VIP가 할당되지 않음.
    • HAProxy 또는 L4 스위치를 이용하여 VIP를 할당함.
    • Galera Cluster는 Active-Active 방식의 HA를 지원함에 따라 Standby Node가 없음. 따라서, Failover의 개념이 일반적인 Failover와는 다소 다름.

 

2.Galera Cluster 설정

cd /etc/mysql/mariadb.conf.d/
vi 60-galera.cnf
[galera]
binlog_format=ROW
bind-address=0.0.0.0

default-storage-engine=innodb
innodb_flush_log_at_trx_commit=2
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1

# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="nubodb"
wsrep_cluster_address="gcomm://@@DB Node 1@@,@@DB Node 2@@,@@DB Node 3@@"

# Galera Synchronization Configuration
wsrep_sst_method=rsync
wsrep_sst_auth=root:@@DB Password@@
#wsrep_sst_receive_address=@@My IP@@:4444

# Galera Node Configuration
wsrep_node_address="@@My IP@@"
wsrep_node_name="dbnode1"
  • Galera Cluster 설정 파일 편집.
  • 구성 후 저장.

 

3.Galera Cluster 기동

sudo galera_new_cluster
  • DB Node 1을 최초 Main Node로 지정.
    • Galera Cluster는 Active-Active 방식의 HA를 지원함에 따라 Standby Node가 없음.
  • Galera Cluster 실행.
sudo systemctl status mariadb
  • MariaDB 서비스 실행 확인.
sudo systemctl start mariadb
  • 나머지 DB Node 2와 DB Node 3의 MariaDB 서비스 실행.
sudo systemctl status mariadb
  • MariaDB 서비스 실행 확인.

 

4.Galera Cluster 구성 확인

mysql -u root -p
  • MariaDB 접속.
show status like 'wsrep%';
  • Galera Cluster 구성 확인.
show variables like 'wsrep_cluster_address';
  • Galera Cluster에 등록된 Node 확인.
show global status like 'wsrep%_comment';
  • Galera Cluster 상태 확인.

 

5.Galera Cluster 재기동

  • Galera Cluster에 등록된 Node가 모두 종료되었을 때, 재기동하는 방법으로, Galera Cluster에 등록된 Node 중 하나라도 서비스가 동작 중이라면 나머지 Node들은 MariaDB 서비스를 실행만 하면 자동으로 Galera Cluster가 재기동 됨.
sudo cat /var/lib/mysql/grastate.dat
  • grastate.dat 파일 확인.
  • safe_to_bootstrap 값이 0인지 0이 아닌지 확인.
  • safe_to_bootstrap 값이 1인 경우가 가장 마지막에 죽은 Galera Cluster에 등록된 Node임.
    • safe_to_bootstrap 값이 모두 0인 경우에는 임의의 1대의 /var/lib/mysql/grastate.dat 파일을 수정하여 safe_to_bootstrap 값을 1로 수정.
sudo galera_new_cluster
  • safe_to_bootstrap 값이 1인 Node를 최초 Main Node로 지정.
  • Galera Cluster 실행.
sudo systemctl status mariadb
  • MariaDB 서비스 실행 확인.
sudo systemctl start mariadb
  • 나머지 Node들의 MariaDB 서비스 실행.
sudo systemctl status mariadb
  • MariaDB 서비스 실행 확인.
Comments