MySQL 액티브-액티브 동기화 복제를 위한 4가지 솔루션

MySQL 데이터베이스에서 액티브-액티브 동기 복제를 구현하기 위한 4가지 방법은 다음과 같습니다: 마스터-마스터 복제, Galera 기반 복제, MySQL 그룹 복제 기반 복제, Canal 기반 솔루션.

download-icon
무료 다운로드
for VM, OS, DB, File, NAS, etc.
minjae-han

업데이트 한민재 현재 2025/08/19

목차
  • MySQL 데이터베이스의 네이티브 복제 기능을 기반으로 한 마스터-마스터 복제

  • Galera 복제 기반 솔루션

  • 그룹 레플리케이션을 기반으로 한 솔루션

  • Canal 기반 솔루션

  • 백업 MySQL 데이터베이스, Vinchin Backup & Recovery와 함께

  • 결론

MySQL은 구조화된 데이터의 관리 및 저장에 널리 사용되는 오픈소스 관계형 데이터베이스 관리 시스템입니다. 간단함, 사용 용이성, 확장성을 갖추고 있어 소규모 웹사이트부터 대규모 기업에 이르기까지 다양한 애플리케이션에서 인기 있는 선택지입니다.

실시간 데이터 동기화를 위해서는 로그 기반으로 구현하는 것이 핵심 요구사항이며, 이는 거의 실시간에 가까운 데이터 동기화를 가능하게 합니다. 이 방식은 데이터베이스 자체의 설계 및 구현에 추가적인 제약을 가하지 않습니다. MySQL의 Active-Active 동기 복제의 목적은 지속적인 가용성과 결함 허용성을 보장하는 것입니다. 다음은 MySQL의 Active-Active 동기 복제를 구현하기 위한 4가지 방법입니다.

MySQL 데이터베이스의 네이티브 복제 기능을 기반으로 한 마스터-마스터 복제

일반적으로 소규모에서 중규모 배포에 적합합니다.

이 아키텍처에서 두 노드는 간단한 듀얼 마스터 모드를 채택하고 전용 연결을 사용할 수 있습니다. 마스터_A 노드에 장애가 발생할 경우 애플리케이션 연결은 신속하게 마스터_B 노드로 전환될 수 있으며, 반대로도 마찬가지입니다.

분할 브레인 상황, 즉 두 노드가 상충되는 데이터를 기록하는 상황을 피하기 위해 두 노드에서 auto-increment-increment와 auto-increment-offset에 서로 다른 값을 설정하는 것이 중요합니다. 이는 마스터 노드가 예기치 않게 충돌하거나 사용할 수 없게 되었을 때 일부 빈로그 이벤트가 슬레이브 노드에 복제되지 않을 가능성이 있기 때문입니다. 이러한 경우, 슬레이브에서 생성된 자동 증가 값과 마스터의 원래 값 사이에 충돌이 발생할 수 있습니다.

그러나, 마스터-슬레이브 자동 증가 ID 충돌을 해결할 수 있는 적절한 내결함성 메커니즘이 있다면 그러한 방법을 사용하지 않을 수도 있습니다. MySQL의 업데이트된 버전 5.7 이상에서는 다중 스레드 복제를 활용함으로써 복제 지연을 크게 줄일 수 있습니다. 또한, 복제 지연에 특히 민감한 또 다른 대안은 실질적인 지연이 없는 반동기식 복제입니다. 하지만 이는 특히 양방향 쓰기 환경에서 트랜잭션 동시성 성능 저하를 초래할 수 있습니다. 따라서 결정을 내리기 위해서는 종합적인 평가가 필요합니다.

Galera 복제 기반 솔루션

Galera는 Codership에서 제공하는 멀티 마스터 데이터 동기화 복제 메커니즘입니다. 이는 여러 노드 간에 데이터 동기 복제 및 읽기 및 쓰기 작업을 가능하게 하여 데이터베이스의 고가용성과 데이터 일관성을 보장합니다. Galera를 기반으로 하는 주요 고가용성 솔루션으로는 MariaDB Galera Cluster와 Percona XtraDB Cluster(PXC)가 있습니다.

현재 PXC는 보다 널리 사용되며 엄격한 데이터 일관성을 제공하여 전자상거래에 특히 적합합니다. 그러나 PXC에도 한계가 있습니다. 동시 트랜잭션량이 높은 시나리오에서는 네트워크 지연을 줄이기 위해 InfiniBand 네트워크 사용을 권장합니다. 이는 PXC가 쓰기 증폭 현상과 병목 효과를 겪을 수 있어 동시 처리 효율성이 크게 저하될 수 있기 때문입니다. 반-동기화 복제와 마찬가지로 Galera 복제는 일반적으로 3개 노드로 제한됩니다. 또한, 네트워크 지터(jitter)로 인해 성능 및 안정성 문제가 발생할 수 있습니다.

그룹 레플리케이션을 기반으로 한 솔루션 

MGR(MySQL 그룹 레플리케이션)은 MySQL에서 공식적으로 제공하는 고가용성 솔루션입니다. 이는 데이터베이스 클러스터 내 노드들 간에 Paxos 프로토콜을 통해 강력한 데이터 일관성 보장을 제공합니다. MGR은 네이티브 레플리케이션 기술을 기반으로 하여 플러그인 형태로 제공되며, 클러스터 내 모든 노드에서 쓰기 작업이 가능하도록 하여 단일 클러스터의 성능 한계를 극복하고, 네트워크 파티션으로 인한 split-brain 문제를 해결하며 레플리케이션된 데이터의 신뢰성을 향상시킵니다.

그러나 현실은 다소 가혹합니다. 현재 MGR의 초기 adopter는 많지 않습니다. 또한 InnoDB 테이블만 지원하며, write set conflict detection을 위해 각 테이블에 기본 키가 필요합니다. GTID 기능이 활성화되어야 하며, 리더 선출 및 write set을 위해 바이너리 로그 형식을 ROW로 설정해야 합니다.

COMMIT은 스냅샷 격리 수준의 실패 시나리오와 유사하게 잠재적으로 실패할 수 있습니다. 현재 MGR(MySQL 그룹 복제) 클러스터는 최대 9개의 노드만 지원하며, 외래 키와 저장 지점 기능은 지원하지 않아 글로벌 제약 조건 검사 및 부분 롤백이 불가능합니다. 이진 로그는 binlog 이벤트 체크섬을 지원하지 않습니다.

Canal 기반 솔루션

실시간 데이터베이스 동기화를 위해 알리바바는 Otter라는 전용 오픈소스 프로젝트를 보유하고 있으며, 이는 분산 데이터베이스의 동기화 복제를 가능하게 합니다. Otter의 핵심 아이디어는依연속적인 데이터베이스 로그를 캡처하여 거의 실시간에 가까운 동기화 복제를 구현하는 데 있습니다. Otter 자체는 Canal이라는 또 다른 오픈소스 프로젝트에 의존하며, 이는 증분 데이터베이스 동기화 로그 정보를 캡처하는 데 중점을 둡니다.

현재 Otter는 MySQL 데이터베이스 간의 동기식 복제를 구현하는 데 중점을 두고 있습니다. 이를 위해 두 개의 MySQL 데이터베이스 간에 양방향 동기식 복제를 달성하는 유사한 기술을 사용합니다. 여기서 양방향은 데이터를 A에서 B로 또는 B에서 A로 동기화할 수 있다는 의미이지만, 특정 시점에서는 단방향일 수도 있다는 점에 주목해야 합니다.

마스터-슬레이브 복제 과정은 세 단계로 나눌 수 있습니다:

1. 마스터는 변경 내용을 이진 로그에 기록하며, 이를 이진 로그 이벤트라고 합니다. 이러한 이벤트는 "show binlog events" 명령어를 사용하여 확인할 수 있습니다.

2. 슬레이는 마스터로부터 이진 로그 이벤트를 복사하여 자체 릴레이 로그에 기록합니다.

3. 슬레이는 릴레이 로그에 기록된 이벤트를 순차적으로 다시 실행하여 마스터에서 발생한 변경 사항을 자신의 데이터에 반영합니다.

캐널의 원칙은 비교적 간단합니다:

1. Canal은 MySQL 슬레이브로 위장하여 MySQL 마스터에 덤프 요청을 보내는 방식으로 MySQL 슬레이브의 상호작용 프로토콜을 시뮬레이션합니다.

2. 덤프 요청을 수신하면 MySQL 마스터가 이진 로그를 슬레이브(Canal)로 전송하기 시작합니다.

3.  Canal은 이진 로그 객체(원래 바이트 스트림 형식)를 구문 분석하여 관련 정보를 추출합니다.

백업 MySQL 데이터베이스, Vinchin Backup & Recovery와 함께

데이터를 더욱 효과적으로 보호하기 위해 데이터베이스 백업을 권장합니다. Vinchin Backup & Recovery 는 가상 머신과 물리 서버 모두에서 데이터베이스를 보호할 수 있는 강력한 기능을 제공합니다. VM 수준 백업과 잘 협조함으로써 가상 환경 사용자에게 핵심 비즈니스 데이터 및 정보 시스템에 대한 이중 보장을 제공합니다.

Vinchin Backup & Recovery는 강력한 데이터베이스 백업 및 복구 기능을 통해 물리적 및 가상 머신에 설치된 Oracle DB, MySQL, SQL Server, PostgreSQL, Postgres Pro 및 MariaDB 보호를 지원합니다. 또한 전체 백업, 차등 백업, 증분 백업 및 트랜잭션 로그 백업 전략을 제공하여 요구에 따라 자체 백업 계획을 설정할 수 있습니다.

Vinchin Backup & Recovery는 데이터베이스의 정상적인 운영에 영향을 주지 않으면서 효율적인 핫 백업을 지원하며, 사용자가 직접 맞춤형 데이터베이스 백업 작업을 간편하게 생성할 수 있습니다.

1 대상 데이터베이스 선택

대상 데이터베이스 선택

2. 백업 저장소 선택

백업 저장소 선택

3 백업 전략 선택

백업 전략 선택

4 작업 제출

채용 공고 제출

강력한 시스템을 60일 동안 완전한 기능을 갖춘 무료 체험판으로 사용해 보실 수 있습니다. 설치 패키지를 받으려면 버튼을 클릭하십시오. MySQL을 Vinchin Backup & Recovery로 백업하는 방법에 대해 더 알아보려면 여기를 클릭하십시오.

결론

MySQL의 액티브-액티브 동기화 복제는 고가용성과 유연성을 제공하도록 설계되었습니다. 여러 MySQL 인스턴스가 동시에 활성화되어 서로 데이터를 동기화함으로써 양방향 읽기 및 쓰기 작업이 가능합니다. 이는 지속적인 가용성, 부하 분산, 데이터 일관성 및 유연성을 보장합니다. 그러나 적절한 구성과 관리가 중요하며, 구현 솔루션과 도구의 선택은 특정 요구 사항에 따라 결정됩니다.

데이터베이스 데이터를 효과적으로 보호하려면 Vinchin Backup & Recovery를 선택하여 데이터베이스 백업 및 복구를 간편하게 수행할 수 있습니다. 무료 체험 기회를 놓치지 마세요.

공유하기:

카테고리: Database Tips