[MariaDB] Galera Cluster의 핵심: State Transfer란 무엇인가?

 Galera Cluster를 운영하다 보면 새로운 노드를 클러스터에 추가하거나, 장애 복구를 위해 노드를 다시 동기화해야 하는 상황이 발생합니다. 이때 기존 클러스터의 데이터를 새 노드에 복제하는 과정을 State Transfer라고 부릅니다. 이번 글에서는 Galera Cluster의 State Transfer 개념과 그 방법에 대해 정리해보겠습니다.


State Transfer란?

State Transfer는 클러스터에 조인하는 새로운 노드와 기존 노드 간의 데이터 동기화 과정을 의미합니다. 즉, 기존에 클러스터가 보유하고 있던 데이터를 새 노드로 복제하여 동일한 데이터 상태를 갖게 만드는 작업입니다. 이 과정을 Provisioning이라고도 부릅니다.


Provisioning 방법

Galera Cluster는 노드를 프로비저닝하는 두 가지 주요 방법을 제공합니다.

1. State Snapshot Transfer (SST)

SST는 기존 노드의 전체 데이터를 새로운 노드로 복제하는 방법입니다. SST는 다음 두 가지 방식으로 구분할 수 있습니다.

Logical 방법

  • mysqldump를 이용해 데이터베이스를 백업한 후, 이를 새 노드에 복구합니다.
  • 비교적 단순하지만, 데이터 용량이 크면 시간이 오래 걸릴 수 있습니다.

Physical 방법

  • 데이터 파일 자체를 복사합니다.
  • 대표적으로 rsync를 사용해 변경된 파일만 효율적으로 복제할 수 있습니다.
  • 파일 복사 방식이기 때문에 대용량 데이터 환경에서 빠른 동기화가 가능합니다.

SST는 새로운 노드가 비어 있는 상태이거나, 기존 데이터와 클러스터 데이터 간 차이가 클 때 사용됩니다.


2. Incremental State Transfer (IST)

IST는 기존 데이터를 어느 정도 보유하고 있는 노드에 대해서 누락된 트랜잭션만 복제하는 방법입니다.

  • 클러스터는 새 노드(Joiner)의 상태를 확인한 후, 누락된 트랜잭션만 전송합니다.
  • 전체 데이터를 복제할 필요가 없기 때문에 SST에 비해 훨씬 빠릅니다.
  • 기존 노드가 최근까지 클러스터에 있었던 경우에 유용합니다.

IST는 네트워크 트래픽을 줄이고, 동기화 시간을 단축할 수 있는 장점이 있습니다.


핵심 정리

  • State Transfer는 클러스터 데이터와 새 노드 데이터를 동기화하는 과정입니다.
  • SST는 전체 데이터 복제, IST는 누락된 트랜잭션만 복제.
  • SST는 mysqldump(Logical)나 rsync(Physical) 방식으로 수행.
  • IST는 데이터가 일부 존재하는 노드에 빠른 복제를 제공.

마치며

Galera Cluster에서 안정적인 서비스 운영을 위해서는 노드 간 데이터 일관성 유지가 필수입니다. SST와 IST를 적절히 활용하면 신규 노드 추가나 장애 복구 시에도 빠르고 안정적으로 클러스터를 확장하거나 복원할 수 있습니다. 환경에 따라 가장 적합한 State Transfer 방식을 선택하는 것이 중요합니다.

댓글

이 블로그의 인기 게시물

[Linux] RHEL Local YUM Repository 구성

[Linux Command] sudo command 설명

[Ansible Modules] Fetch module 설명 및 활용