!!...MySQL&MariaDB

[MariaDB & HA] Galera Cluster 설치 - 이중화 / HA 구성

qnfmfmd_ 2024. 6. 13. 20:41
BIG

원문출처 : https://da-new.tistory.com/84

 

[MariaDB][Linux] Galera Cluster 설치 - 이중화 / HA 구성

Intro 안녕하세요. 초보 DBA 다뉴입니다. 오늘은 저번에 설치해본 MariaDB를 이중화하는 내용에 대해서 한번 다뤄볼까하는데요. MariaDB를 아직 설치 못하신 분은 아래의 링크를 참고해주세요 :) [MariaDB

da-new.tistory.com

 


 

MariaDB의 이중화는 Galera Cluster로 진행합니다.

 

# MariaDB Galera Cluster

# 이미 필요한 yum 패키지와 MariaDB 설치에 필요한 repo는 기존에 세팅이 되었다 생각하고 진행합니다.


1. Galera Cluster Install

#  Galera Cluster 설치

shell> yum install -y galera

# MariaBackup 설치

shell> yum install -y MariaDB-backup

 

당연한 이야기지만 Galera Cluster 설치를 진행합니다.
MariaBackup은 MariaDB의 물리적 백업 유틸리티인데요.
SST(State Snapshot Transfer)의 한 방식으로 MariaBackup을 사용합니다.
SST(State Snapshot Transfer)는 상태 스냅샷 전송으로 다른 노드와 동기화 하는 방식을 말합니다.

2. Galera Cluster 동기화 유저 생성

mysql
> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY '[PW 설정]';
> SHOW GRANTS FOR 'sstuser'@'localhost';
> GRANT ALL ON *.* TO 'sstuser'@'localhost';
> FLUSH PRIVILEGES;

 

Galera Cluster 동기화에 사용될 계정을 각 노드 별로 동일하게 생성합니다.

 

3. 방화벽 설정

shell> firewall-cmd --state
shell> firewall-cmd --permanent --add-service=mysql
shell> firewall-cmd --permanent --add-port={3306,4444,4567,4568}/tcp
shell> firewall-cmd --permanent --add-port=4567/udp
shell> firewall-cmd --reload
shell> firewall-cmd --list-ports


방화벽을 설정하여줍니다.

3306 : MariaDB의 기본 포트 / 저번 MariaDB설치 때 설정하셨을 거라 생각이 드네요.

4444 : SST(State Snapshot Transfer)에 사용되는 포트 / 새 노드가 추가될 경우 동기화

4567 : Galera Cluster 복제에 사용되는 포트 /  UDP와 TCP 둘 다 사용하며, 복제 트래픽, 다중 복제에 사용

4568 : IST(Incremental State Transfer)에 사용되는 포트 / 기존 노드와 비교하여 트랜잭션 동기화에 사용

 

4. SELinux 허용

    - Galera Cluster 의 모든 설정이 완료후 다시 1로 변경할 예정입니다.

# SELinux 허용모드 변경
shell> setenforce 0
shell> sestatus


5. Galera Cluster 설정

MariaDB의 기본 설정이 들어있는 파일 들 중 server 설정 파일을 열어서 수정합니다.
기본적으로 Galera와 관련 된 설정들은 주석처리가 되어있습니다. 
해당 주석을 해제하며, 설정값을 입력합니다.

shell> vi /etc/my.cnf.d/server.cnf

> 문서 내용 수정
-----------------------------
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address=gcomm://[갈레라 서버 IP 1],[갈레라 서버 IP 2] # 구성하는 노드 전부 입력
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_cluster_name='[클러스터 명]'
wsrep_node_address='[현재 노드 서버 IP]'
wsrep_node_name='[현재 노드 명]'
wsrep_sst_method=mariabackup
wsrep_sst_auth='[동기화 유저 명]:[유저 비밀번호]' # 위에 생성한 sstuser id/pw
구성하는 각 노드별 해당 값을 전부 입력합니다.


6. Galera Cluster MariaDB 실행

Master가 될 1번서버에서는 아래의 명령어로 클러스터를 구성하며, 서비스를 실행합니다.

shell> galera_new_cluster
# 혹시 Galera Cluster를 재실행할때 서비스가 올라오지 않을 경우 아래의 파일을 수정하여 Master를 변경하여 줍니다.

shell> vi /data/mariadb/mysql/grastate.dat

> 문서 내용 수정
-----------------------------
safe_to_bootstap: 1
# Master에서 클러스터를 구성하여 서비스를 실행하면, 나머지 노드들에서 MariaDB를 실행합니다.

shell> systemctl start mariadb
# 이렇게 구성을 완료한 갈레라 클러스터는 아래의 명령어로 구동을 확인 할 수 있습니다.

mysql
> SHOW STATUS LIKE 'wsrep%';


7. SELinux 차단

# SELinux 허용모드 변경
shell> setenforce 1
shell> sestatus

 

LIST