[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)

출력 결과에서 MouseWebcam 제품 데이터가 모두 존재한다면, 노드가 꺼진 동안 삽입된 데이터도 정상적으로 복제되었다는 의미입니다.



결론

이번 실습을 통해 확인한 Galera Cluster의 복제 동작 특성은 다음과 같습니다:

  • 노드를 shutdown으로 종료할 경우, 클러스터는 나머지 노드로 운영을 지속함
  • 노드가 다운된 동안 삽입된 데이터는 복구 시 자동으로 동기화됨
  • 클러스터 크기는 자동으로 조정되며, 재합류 후 전체 데이터 일치가 보장됨

Galera Cluster는 노드 단위의 유연한 유지보수를 지원하면서도 데이터 일관성을 강하게 유지하는 구조이므로, 고가용성 환경에 적합한 선택입니다.


관련 포스팅

댓글

이 블로그의 인기 게시물

MySQL 주요 기능 하나씩 쉽게 살펴보기

MySQL 라이선스 종류와 선택 가이드

[Linux] OpenSSL을 사용한 자체 서명된 CA 생성 가이드