[MariaDB] Galera 클러스터 구축5: 노드 중지와 재시작 시 데이터 복제 동작 확인
Galera Cluster의 가장 강력한 기능 중 하나는 노드가 재시작되거나 일시적으로 오프라인이 되더라도 데이터 일관성을 유지하는 동기 복제 구조입니다. 이번 글에서는 일부 노드를 정상적으로 종료(shutdown)한 후, 재시작했을 때 데이터가 정상 복제되는지 확인하는 과정을 실습을 통해 검증해보겠습니다.
클러스터 상태 확인
먼저 현재 클러스터가 정상적으로 3개 노드로 구성되어 있는지 확인합니다.
mysql> SHOW STATUS LIKE 'wsrep_cluster_size'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+
클러스터 크기가 3이면 모든 노드가 정상 참여 중입니다.
테스트 데이터 준비
테스트를 위해 inventory
데이터베이스의 products
테이블에 몇 개의 데이터를 미리 삽입해둡니다.
mysql> USE inventory; mysql> SELECT * FROM products; +------------+--------------+----------+ | product_id | product_name | quantity | +------------+--------------+----------+ | 1 | Notebook | 50 | | 2 | Pen | 100 | | 3 | Monitor | 30 | +------------+--------------+----------+
여기에 새 데이터를 추가합니다:
mysql> INSERT INTO products VALUES (4, 'Keyboard', 20);
모든 노드에서 SELECT
로 확인하면 복제가 잘 이루어졌음을 알 수 있습니다.
노드 하나를 정상 종료 후 복제 테스트
이제 mariadb1
을 아래 명령으로 정상 종료합니다.
$ sudo shutdown -h now -
남아있는 노드에서 클러스터 크기를 확인합니다.
mysql> SHOW STATUS LIKE 'wsrep_cluster_size'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 2 | +--------------------+-------+ 1 row in set (0.002 sec)
이 상태에서 새로운 데이터를 삽입합니다.
mysql> INSERT INTO products VALUES (5, 'Mouse', 60);
mariadb2
와 mariadb3
에서는 이 데이터가 확인됩니다. 이때 mariadb1
은 다운 상태입니다.
나머지 노드도 종료 후, 단일 노드에서 데이터 삽입
이제 mariadb2도 종료하고, mariadb3 만 남겨둔 상태에서 또 하나의 데이터를 추가해봅니다.
mysql> SHOW STATUS LIKE 'wsrep_cluster_size'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 1 | +--------------------+-------+ 1 row in set (0.003 sec) mysql> INSERT INTO products VALUES (6, 'Webcam', 10);
단일 노드 운영 상태에서 데이터가 추가되었습니다.
노드 재시작 후 복제 확인
이제 mariadb2
와 mariadb1
을 순차적으로 재시작합니다.
$ sudo systemctl start mariadb
재시작한 각 노드에서 아래를 확인합니다:
$ systemctl status mariadb $ mysql -u root -p mysql> SHOW STATUS LIKE 'wsrep_cluster_size'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+ 1 row in set (0.001 sec) mysql> 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 | +------------+--------------+----------+ 6 rows in set (0.003 sec)
출력 결과에서 Mouse
와 Webcam
제품 데이터가 모두 존재한다면, 노드가 꺼진 동안 삽입된 데이터도 정상적으로 복제되었다는 의미입니다.
결론
이번 실습을 통해 확인한 Galera Cluster의 복제 동작 특성은 다음과 같습니다:
- 노드를
shutdown
으로 종료할 경우, 클러스터는 나머지 노드로 운영을 지속함 - 노드가 다운된 동안 삽입된 데이터는 복구 시 자동으로 동기화됨
- 클러스터 크기는 자동으로 조정되며, 재합류 후 전체 데이터 일치가 보장됨
Galera Cluster는 노드 단위의 유연한 유지보수를 지원하면서도 데이터 일관성을 강하게 유지하는 구조이므로, 고가용성 환경에 적합한 선택입니다.
관련 포스팅
댓글
댓글 쓰기