[MariaDB] 3대 Server 이중화 구성(Replication , Galera)
Apr 9, 2020
| Nov 27, 2024
0  |  0
type
Post
status
Published
t-status
complete
date
Apr 9, 2020
slug
summary
MariaDB 이중화 구성하기
tags
MariaDB
main-category
DB
category
SQL
icon
password
😃
MariaDB 이중화 구성을 할 일이 있어 구성완료 후 정리
 

환경


서버 : 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%';
 
3대정상적으로 동작!
3대정상적으로 동작!
 
만약 클러스터를 새로 생성시 에러가 난다면
클러스터 정보 지우기
cd /var/lib/mysql/sudo rm -rf galera.cache grastate.dat
위 명령어 입력뒤 galera_new_cluster 명령어 입력
 
CURD 테스트를 해보쟈
 
참고로 테이블생성시 테이블 엔진은 InnoDB로 할것!
SQL
  • MariaDB
  • 프로그래머스 2020 상반기 백엔드 Dev-Matching 후기[Tomcat] Tomcat7 클러스터링
    Catalog