[MariaDB] Galera 클러스터 구축 8: 새로운 노드 추가 및 클러스터 확장
이번 글에서는 기존에 구성된 Galera 클러스터(3노드)에 새로운 노드(mariadb4
)를 추가하는 과정을 단계별로 설명합니다. 이 과정을 통해 클러스터의 가용성과 확장성을 높일 수 있으며, 실무 환경에서도 자주 활용되는 중요한 작업입니다.
1. 환경 정보
노드 이름 | IP 주소 |
---|---|
mariadb1 | 192.168.155.51 |
mariadb2 | 192.168.155.52 |
mariadb3 | 192.168.155.53 |
mariadb4 | 192.168.155.54 |
2. 신규 노드 초기 설정 (mariadb4)
IP설정 및 hostname 설정
# hostnamectl set-hostname mariadb4 # nmcli connection modify enp1s0 ipv4.addresses 192.168.155.54/24 ipv4.gateway 192.168.155.1 ipv4.dns 8.8.8.8 autoconnect on ipv4.method manual
방화벽 설정
새로운 노드에서 Galera 클러스터 통신을 위한 포트를 열어줍니다.
# firewall-cmd --add-port=3306/tcp --permanent # MySQL/MariaDB 포트 # firewall-cmd --add-port=4567/tcp --permanent # Galera 복제 트래픽 # firewall-cmd --add-port=4567/udp --permanent # Galera 복제 트래픽 (UDP) # firewall-cmd --add-port=4568/tcp --permanent # IST (Incremental State Transfer) # firewall-cmd --add-port=4444/tcp --permanent # SST (State Snapshot Transfer) # firewall-cmd --reload
호스트 파일 설정
모든 노드(기존 노드 포함)에서 새로운 노드의 호스트 정보를 추가합니다.
# vi /etc/hosts # Galera Cluster Nodes 192.168.155.51 mariadb1 192.168.155.52 mariadb2 192.168.155.53 mariadb3 192.168.155.54 mariadb4
3. MariaDB 패키지 설치 (mariadb4)
MariaDB 저장소 설정
MariaDB 10.6 저장소를 설정합니다. 자세한 설정 방법은 MariaDB 공식 저장소 설정 가이드를 참고하세요.
- /etc/yum.repos.d/MariaDB.repo 파일 생성
# vi /etc/yum.repos.d/MariaDB.repo ... # MariaDB 10.6 RedHatEnterpriseLinux repository list - created 2025-06-11 14:02 UTC # <https://mariadb.org/download/> [mariadb] name = MariaDB # rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See <https://mariadb.org/mirrorbits/> for details. # baseurl = <https://rpm.mariadb.org/10.6/rhel/$releasever/$basearch> baseurl = <https://tw1.mirror.blendbyte.net/mariadb/yum/10.6/rhel/$releasever/$basearch> module_hotfixes = 1 # gpgkey = <https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB> gpgkey = <https://tw1.mirror.blendbyte.net/mariadb/yum/RPM-GPG-KEY-MariaDB> gpgcheck = 1
패키지 설치
[root@mariadb4 ~]# sudo yum install -y MariaDB-server MariaDB-client MariaDB-common
4. 클러스터 설정 파일 구성
기존 노드 설정 수정 (mariadb1~3)
기존 모든 노드의 /etc/my.cnf.d/server.cnf
파일에서 wsrep_cluster_address
설정을 업데이트합니다.
기존 노드의 [galera]
섹션에 아래와 같이 mariadb4
의 IP를 추가합니다. 변경 후에는 반드시 MariaDB 서비스를 재시작해야 설정이 반영됩니다.
[galera] wsrep_cluster_address=gcomm://192.168.155.51,192.168.155.52,192.168.155.53,192.168.155.54
신규 노드 설정 (mariadb4)
/etc/my.cnf.d/server.cnf
파일의 [galera]
섹션을 다음과 같이 구성합니다.
[galera] # Galera 기본 설정 wsrep_on=ON # Write-Set 복제 기능 활성화 wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so # WSREP 프로바이더 모듈 경로 wsrep_cluster_address=gcomm://192.168.155.51,192.168.155.52,192.168.155.53,192.168.155.54 # 복제 설정 binlog_format=row # Row 기반 복제 (권장) default_storage_engine=InnoDB # 기본 스토리지 엔진 innodb_autoinc_lock_mode=2 # Auto increment 잠금 모드 # 네트워크 설정 bind-address=0.0.0.0 # 모든 인터페이스에서 접속 허용 # 클러스터 식별 정보 wsrep_cluster_name="galera-cluster" # 클러스터 이름 wsrep_node_address="192.168.155.54" # 현재 노드의 IP 주소 wsrep_node_name="mariadb4" # 현재 노드의 호스트명 # 상태 전송 방법 wsrep_sst_method=rsync # SST 방식 (rsync 권장)
5. 클러스터 재시작 및 노드 합류
기존 노드 재시작
기존 노드들을 순차적으로 재시작하여 새로운 클러스터 주소 설정을 적용합니다.
$ sudo systemctl restart mariadb
주의: 클러스터의 안정성을 위해 한 번에 하나씩 재시작하고, 각 노드가 정상적으로 클러스터에 재합류한 것을 확인한 후 다음 노드를 재시작하세요.
신규 노드 서비스 시작
새로운 노드에서 MariaDB 서비스를 시작합니다.
$ sudo systemctl start mariadb $ sudo systemctl enable mariadb
클러스터 합류 확인
모든 노드에서 클러스터 크기를 확인합니다.
mysql> SHOW STATUS LIKE 'wsrep_cluster_size'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 4 | +--------------------+-------+
모든 노드에서 위 값이 4
로 표시되면, mariadb4
가 클러스터에 정상적으로 합류한 것입니다.
추가 상태 확인
클러스터 상태를 더 자세히 확인하려면 다음 쿼리들을 사용할 수 있습니다.
-- 클러스터 상태 확인 MariaDB [inventory]> SHOW STATUS LIKE 'wsrep_cluster_status'; +----------------------+---------+ | Variable_name | Value | +----------------------+---------+ | wsrep_cluster_status | Primary | +----------------------+---------+ 1 row in set (0.001 sec) -- 노드 상태 확인 MariaDB [inventory]> SHOW STATUS LIKE 'wsrep_local_state_comment'; +---------------------------+--------+ | Variable_name | Value | +---------------------------+--------+ | wsrep_local_state_comment | Synced | +---------------------------+--------+ 1 row in set (0.001 sec) -- 연결된 노드 확인 MariaDB [inventory]> SHOW STATUS LIKE 'wsrep_incoming_addresses'; +--------------------------+---------------------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------------------+ | wsrep_incoming_addresses | 192.168.155.51:0,192.168.155.52:0,192.168.155.53:0,192.168.155.54:0 | +--------------------------+---------------------------------------------------------------------+ 1 row in set (0.001 sec)
6. 데이터 복제 확인
새로운 노드에서 기존 데이터가 정상적으로 복제되었는지 확인합니다.
MariaDB [mysql]> use inventory; Database change MariaDB [inventory]> select * from products; +------------+--------------+----------+ | product_id | product_name | quantity | +------------+--------------+----------+ | 1 | Notebook | 50 | | 2 | Pen | 200 | | 3 | Monitor | 30 | | 4 | Keyboard | 20 | | 5 | Mouse | 60 | | 6 | Webcam | 10 | | 7 | Tablet | 25 | +------------+--------------+----------+ 7 rows in set (0.001 sec)
mariadb1~4
모든 노드에서 동일한 결과가 나와야 정상입니다.
참고: 본 예제에서는 데이터량이 적어 빠르게 복제되지만, 대용량 데이터의 경우 SST(State Snapshot Transfer) 과정이 상당한 시간이 소요될 수 있습니다. 이 경우 클러스터 성능에 영향을 줄 수 있으므로 적절한 시간대에 작업을 진행하시기 바랍니다.
관련 포스팅
- [MariaDB] Galera 클러스터 구축1: RHEL 8.8 기반 노드 3대 준비
- [MariaDB] Galera 클러스터 구축2: MariaDB 10.6 3대 설치
- [MariaDB] Galera 클러스터 구축3: Garela Cluster 환경 설정
- [MariaDB] Galera 클러스터 구축4: 복제 테스트 및 데이터 동기화 확인
- [MariaDB] Galera 클러스터 구축5: 노드 중지와 재시작 시 데이터 복제 동작 확인
- [MariaDB] Galera 클러스터 구축6: 노드 강제 종료 시 복제와 Quorum 동작 이해
- [MariaDB] Galera 클러스터 구축7: 전체 노드 정지 후 재시작과 부트스트랩 복구
댓글
댓글 쓰기