환경
서버 : 3대
운영체제 : Centos7(linux)
DB Ver : 10.4.12
설정하기
3대를 이중화할 때 어떠한 방식을 할까 고민하였다. 첫번째로 생각한방법은.
위 블로그를 참고하여,

위 사진처럼 구성을 하였다.. 하지만 위처럼 구성할 경우 1서버에 문제가 발생할 경우에 심각한 문제가 발생..
결국 양방향이 아니게 된다고 생각하여 각 서버가 2대 서버를 바라보게 구성을 해보았다.

위 처럼 구성하고 테스트 해본 결과, 싱크가 안맞는 문제가 있을거라 예상이되었다..(내생각)
그래서 다른 방법을 모색하던중 Galera Cluster라는 존재를 발견, 적용해보기로 했다.
Galera Cluster관련 내용은 위 링크 참조하자.
지금부터 설치 및 설정
일단 SELINUX를 임시로 종료
setenforce 0
yum 저장소 추가
vi /etc/yum.repos.d/MariaDB.repo 수정
# MariaDB 10.4 CentOS repository list - created 2020-03-27 07:55 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
sslverify=0 #GPG에러날시
설치
yum -y install MariaDB-client MariaDB-server
설치가 완료가 되면 각 서버에 들어가서 계정을 생성해주자(replica라는 계정을 만들예정)
mysql
CREATE USER 'replica'@'localhost' IDENTIFIED BY 'replica';
GRANT ALL PRIVILEGES ON *.* TO 'replica'@'%' IDENTIFIED BY 'replica';
flush privileges;
3대의 서버에 계정생성을 완료하였으면 이제 config설정
vi /etc/my.cnf.d/server.cnf 아래 내용 기입
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_name=cluster # 마음데로 ... 하지만 3대다 동일해야함
wsrep_cluster_address=gcomm://192.168.0.1,192.168.0.2,192.168.0.3 # 3대서버동일
wsrep_node_name=node1 # 서버(노드)끼리 이름이 같으면 안된다.
wsrep_node_address=192.168.0.1 # 자신의 서버아이피
wsrep_sst_method=rsync # 동기화 방식인데.. mariaBackup 이라는 방식도 있다. ( xtrabackup-v2 방식도있지만 10.3부터 지원종료)
wsrep_sst_auth=replica:replica # 방금만든 계정
wsrep_sst_receive_address=192.168.0.1:4444
innodb_flush_log_at_trx_commit=2
binlog_format=ROW
bind-address=0.0.0.0
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_provider 이부분
find / -name libgalera_smm.so
입력하여 경로 찾도록 하자.
방화벽을 열어줘야한다.
firewall-cmd --zone=public --permanent --add-port=3306/tcp
firewall-cmd --zone=public --permanent --add-port=4444/tcp
firewall-cmd --zone=public --permanent --add-port=4567/tcp
firewall-cmd --zone=public --permanent --add-port=4567/udp
firewall-cmd --zone=public --permanent --add-port=4568/tcp
firewall-cmd --reload
모든 서버의 마리아디비 서비스를 종료시킨 뒤,
이제 1번 서버에서 아래와 같이 명령어 입력
systemctl stop mariadb
galera_new_cluster
systemctl start mariadb
나머지 서버도 서비스 실행
정상적으로 적용됬는지 확인하려면,
mysql
maraiDB [] > show status like 'wsrep%';

만약 클러스터를 새로 생성시 에러가 난다면
클러스터 정보 지우기
cd /var/lib/mysql/sudo rm -rf galera.cache grastate.dat
위 명령어 입력뒤 galera_new_cluster 명령어 입력
CURD 테스트를 해보쟈
참고로 테이블생성시 테이블 엔진은 InnoDB로 할것!