DB/MariaDB

[MariaDB] Galera Cluster 구성변경 테스트 (gcomm 설정)

Dev.Congsik 2024. 8. 30. 14:35
728x90
  • 클러스터 DB서버 정보
    • 1번 서버 - 192.168.59.134 maria1
    • 2번 서버 - 192.168.59.135 maria2
    • 3번 서버 - 192.168.59.136 maria3
  • 예상 테스트 시나리오
    • 1~3번 서버 기존 mysql 서비스 stop
    • 1번 서버 galera.cnf 수정 (gcomm)
    • 2,3번 서버 galera.cnf 수정 (gcomm)
    • 1번 노드 재기동, 에러 발생
    • 1번 서버 galera_new_cluster 명령 입력
    • 1번 서버 mysql start, 성공 시 2,3번 서버 mysql 서비스 start
    • status 체크 후 data insert 테스트 진행
    • (1번 → 2번 / 2번 → 1,3번 / 3번 → 1,2번) 형태의 클러스터 구축 성공 (로컬에서 운영 환경으로 테스트)

1. 1~3번 서버 mysql stop

systemctl stop mysql

2. 1번 서버 galera.cnf 수정

vi /etc/my.cnf.d/galera.cnf
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so    //플러그인 위치
wsrep_cluster_name="galera"                    //클러스터의 이름을 지정. 일반적으로 같은 네트워크 서브넷에 여러개의 서버가 있을 때 사용, 원치 않는 노드가 잘못된 클러스터로 들어가는 것을 방지
wsrep_cluster_address=gcomm://192.168.59.135   //galera 클러스터에 연결할 ip 주소, 2번 서버를 바라보도록 설정
#wsrep_node_address='192.168.59.134'          //현재 서버 노드 ip 주소
wsrep_node_name='maria1'                       //현재 서버의 노드명
wsrep_sst_method=rsync                         //노드간 전송방법, rsync, xtrabackup(MariaDB 10.4 이상 버전부터는 mariabackup으로 대체)
binlog_format=row                              //로그 형식을 정의
default_storage_engine=InnoDB                  //디폴트 저장소 구동방식
innodb_autoinc_lock_mode=2                     //락 메커니즘 설정
bind-address=0.0.0.0
wsrep_provider_options="gcache.size = 512M; gcache.name = /tmp/galera.cache; gcache.page_size = 100M"

 

3.  2,3번 서버 galera.cnf 수정

[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_name="galera"
wsrep_cluster_address=gcomm://192.168.59.134,192.168.59.136  //1번,3번 서버를 바라보도록 설정
#wsrep_node_address='192.168.59.135'
wsrep_node_name='maria2'
wsrep_sst_method=rsync
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_provider_options="gcache.size = 512M; gcache.name = /tmp/galera.cache; gcache.page_size = 100M"

 

 

4. 1번 서버 재기동, connect timeout, failed 에러 발생

systemctl start mysql

→ connect timeout, failed 에러 발생

→ 해당 서버 grastate.dat의 safe_to_bootstrap을 1로 설정한 후 galera_new_cluster 명령으로 새로운 클러스터를 적용하는 해결법 발견

 

5. 1번 서버 grastate.dat 수정

safe_to_bootstrap: 0→1로 수정

 

6. 1번 서버 galera_new_cluster 명령 입력

→ 이후 서비스 정상 기동

 

 

7. 2,3번 서버 mysql 서비스 start

 

8. 클러스터 status 체크

MariaDB [(none)]> show status like 'wsrep_cluster_size';

 

9. data insert 후 동기화 테스트 (2,3번 서버에 각각 data insert, 1번 서버에서 조회)

→ 기존 테이블 조회

 

9-1. 2,3번 서버에 각각 data insert

 

9-2. 1번 서버에서 조회

→ data insert 후 테이블 조회, 데이터 확인 완료

 

10. 테스트 완료

728x90