5가지 일반적인 MySQL 고가용성 솔루션(가장 완벽함)
1. 개요
MySQL 데이터베이스의 고가용성 아키텍처를 고려할 때 주로 다음 측면을 고려해야 합니다.
데이터베이스가 다운되거나 예상치 못한 중단이나 기타 장애가 발생할 경우 최대한 신속하게 데이터베이스의 가용성을 복원하여 다운타임을 최대한 줄여 데이터베이스 장애로 인해 업무가 중단되지 않도록 합니다.
백업, 읽기 전용 복제본 등의 기능에 사용되는 기본 노드가 아닌 노드의 데이터는 실시간 또는 최종적으로 기본 노드의 데이터와 일치해야 합니다.
기업에서 데이터베이스 전환이 발생할 경우, 전환 전후의 데이터베이스 내용이 일관되어야 데이터 누락이나 불일치로 인해 기업이 영향을 받지 않습니다.
여기서는 고가용성 분류에 대해 자세히 논의하지 않고 일반적으로 사용되는 고가용성 솔루션의 장단점과 고가용성 솔루션 선택에 대해서만 논의하겠습니다.
2. 고가용성 솔루션
2.1. 마스터-슬레이브 또는 마스터-마스터 반동기 복제
2노드 데이터베이스를 사용하여 단방향 구축 또는 양방향 반동기 복제. 5.7 이후 버전에서는 무손실 복제 및 논리적 다중 스레드 복제와 같은 일련의 새로운 기능이 도입되어 MySQL의 기본 반동기 복제의 안정성이 더욱 높아졌습니다.
일반적인 아키텍처는 다음과 같습니다.
일반적으로 프록시 및 연결 유지와 같은 타사 소프트웨어와 함께 사용되며 데이터베이스의 상태를 모니터링하고 실행하는 데 사용할 수 있습니다. 일련의 관리 명령. 기본 데이터베이스에 장애가 발생한 경우 대기 데이터베이스로 전환한 후에도 해당 데이터베이스를 계속 사용할 수 있습니다.
장점:
데이터 동기화의 기초로 기본 반동기 복제를 사용하는 아키텍처가 비교적 간단합니다.
이중 노드, 마스터가 없습니다. 호스트가 다운된 후 선택 문제가 발생하면 직접 전환할 수 있습니다.
두 노드에는 리소스가 덜 필요하고 배포가 간단합니다.
전적으로 의존합니다. 반동기 복제의 경우 비동기 복제로 저하되어 데이터 일관성을 보장할 수 없습니다.
haproxy 및 keepalived의 고가용성 메커니즘에 대한 추가적인 고려가 필요합니다.
2.2. 반동기식 복제 최적화
반동기식 복제 메커니즘은 안정적입니다. 반동기 복제가 항상 적용되는 경우 데이터는 일관성이 있는 것으로 간주될 수 있습니다. 그러나 네트워크 변동 등 객관적인 이유로 인해 반동기 복제 시간이 초과되어 비동기 복제로 전환되는 경우 데이터 일관성을 보장할 수 없습니다. 따라서 반동기식 복제를 최대한 보장하면 데이터 일관성을 향상시킬 수 있습니다.
이 솔루션도 2노드 아키텍처를 사용하지만 원래 반동기 복제를 기반으로 기능이 최적화되어 반동기 복제 메커니즘의 안정성이 더욱 높아졌습니다.
참고할 수 있는 최적화 솔루션은 다음과 같습니다.
2.2.1. 이중 채널 복제
반동기 복제에서 시간 초과가 발생한 후 복제가 수행됩니다. 연결이 끊어지면 복사를 시작할 때 두 개의 채널이 동시에 설정됩니다. 반동기 복사 채널 중 하나는 슬레이브 시스템이 현재 호스트 실행의 진행 상황을 알 수 있도록 현재 위치에서 복사를 시작합니다. 또 다른 비동기 복제 채널이 슬레이브의 지연된 데이터를 따라잡기 시작합니다. 비동기 복제 채널이 반동기 복제의 시작 위치를 따라잡으면 반동기 복제가 재개됩니다.
2.2.2.Binlog 파일 서버
두 개의 반동기 복제 채널을 구축합니다. 파일 서버를 연결하는 반동기 채널은 일반적인 상황에서는 활성화되지 않습니다. 반동기 복제가 발생합니다. 네트워크 문제가 심각해지면 파일 서버에 대한 반동기 복제 채널을 시작합니다. 마스터-슬레이브 반동기 복제가 재개된 후 파일 서버와의 반동기 복제 채널을 닫습니다.
장점:
듀얼 노드는 리소스가 덜 필요하고 배포가 간단합니다.
아키텍처가 간단하고 마스터를 선택하는 데 문제가 없으며 전환만 하면 됩니다.
기본 복제와 비교하여 최적화된 반동기식 복제는 데이터 일관성을 더 잘 보장할 수 있습니다.
단점:
커널 소스 코드를 수정하거나 mysql 통신 프로토콜을 사용해야 합니다. 소스코드에 대한 어느 정도의 이해가 필요하고, 어느 정도 2차 개발도 할 수 있어야 합니다.
여전히 반동기식 복제에 의존하고 있는데, 이는 데이터 일관성 문제를 근본적으로 해결하지 못합니다.
2.3. 고가용성 아키텍처 최적화
2노드 데이터베이스를 다중 노드 데이터베이스 또는 다중 노드 데이터베이스 클러스터로 확장합니다. 필요에 따라 마스터 1개와 슬레이브 2개, 마스터 1개와 슬레이브 1개, 마스터 1개와 슬레이브 2개로 구성된 클러스터를 선택할 수 있습니다.
반동기 복제로 인해 슬레이브로부터 성공적인 응답을 받으면 반동기 복제가 성공한 것으로 간주되는 특성이 있으므로 다중 슬레이브 반동기 복제의 신뢰성이 더 좋습니다. 단일 슬레이브 반동기 복제의 신뢰성보다 . 또한, 여러 노드가 동시에 다운될 확률은 단일 노드가 다운될 확률보다 적기 때문에 어느 정도는 듀얼 노드에 비해 다중 노드 아키텍처가 더 나은 고가용성을 갖는다고 볼 수 있습니다. 건축학.
그러나 데이터베이스 수가 많기 때문에 데이터베이스의 유지 관리성을 보장하려면 데이터베이스 관리 소프트웨어가 필요합니다. MMM, MHA 또는 다양한 버전의 프록시 등을 선택할 수 있습니다. 일반적인 해결 방법은 다음과 같습니다.
2.3.1 MHA 다중 노드 클러스터
MHA 관리자는 클러스터의 마스터 노드를 정기적으로 감지하여 자동으로 업데이트할 수 있습니다. 최신 데이터 슬레이브는 새 마스터로 승격되고 다른 모든 슬레이브는 새 마스터로 리디렉션됩니다. 전체 장애 조치 프로세스는 애플리케이션에 완전히 투명합니다.
MHA 노드는 각 MySQL 서버에서 실행되며, 주요 기능은 전환 중에 바이너리 로그를 처리하여 전환으로 인해 데이터 손실이 최소화되도록 하는 것입니다.
MHA는 다음과 같은 다중 노드 클러스터로 확장될 수도 있습니다.
장점:
오류 자동 감지 및 전송이 수행될 수 있습니다.
확장성이 좋고 필요에 따라 MySQL 노드 수와 구조를 확장할 수 있습니다.
2노드 MySQL 복제에 비해 3노드/다중 노드 MySQL은 사용하지 못할 확률이 낮습니다.
단점:
최소 3개의 노드가 필요하며 이는 2개의 노드보다 더 많은 리소스를 필요로 합니다.
논리가 더 복잡하고 더 어렵습니다. 오류가 발생한 후 문제를 해결하고 찾아냅니다.
기본 반동기식 복제를 통해 데이터 일관성이 여전히 보장되며 데이터 불일치가 발생할 위험이 여전히 있습니다.
2.3.2. Zookeeper 프록시
Zookeeper는 클러스터 데이터의 일관성을 보장하기 위해 분산 알고리즘을 사용하여 프록시의 고가용성을 효과적으로 보장하고 더 나은 방지를 제공합니다. 네트워크 파티션.
장점:
프록시와 MySQL을 포함한 전체 시스템의 고가용성을 더 잘 보장합니다.
확장성이 좋고 대규모로 확장할 수 있습니다. -scale 클러스터. ;
단점:
데이터 일관성은 여전히 기본 mysql 반동기 복제에 의존합니다.
zk의 도입으로 전체 시스템이 더욱 복잡해집니다.
2.4. ***공유 스토리지
***공유 스토리지는 데이터베이스 서버와 스토리지 장치의 분리를 실현하므로 더 이상 서로 다른 데이터베이스 간의 데이터 동기화에 의존하지 않습니다. MySQL의 기본 복제 기능은 디스크 데이터 동기화를 통해 데이터 일관성을 보장합니다.
2.4.1. SAN*** 공유 스토리지
SAN의 개념은 저장 장치와 프로세서(서버) 사이에 직접 고속 네트워크를 구축할 수 있도록 하는 것입니다(비교 LAN으로) 연결을 통해 데이터의 중앙 집중식 저장이 이루어집니다.
일반적으로 사용되는 아키텍처는 다음과 같습니다.
공유 스토리지를 사용할 때 MySQL 서버는 파일 시스템을 마운트하고 정상적으로 작동할 수 있으며, 기본 데이터베이스가 다운되면 대기 데이터베이스도 동일한 파일 시스템을 마운트하여 이를 보장할 수 있습니다. 기본 데이터베이스는 대기 데이터베이스와 동일한 데이터를 사용합니다.
장점:
두 개의 노드만 필요하며 간단한 배포 및 간단한 전환 논리
강력한 데이터 일관성이 보장됩니다. MySQL 로직 오류로 인한 데이터 불일치가 발생하지 않습니다.
단점:
공유 스토리지의 고가용성을 고려해야 합니다.
가격이 비쌉니다. >
2.4.2. DRBD 디스크 복제
DRBD는 소프트웨어 기반, 네트워크 기반 블록 복제 스토리지 솔루션으로 주로 서버, 논리 볼륨 등의 디스크 및 파티션을 복제하는 데 사용됩니다. 데이터 미러링. 사용자가 로컬 디스크에 데이터를 쓰면 네트워크에 있는 다른 호스트의 디스크에도 데이터가 전송됩니다. 이렇게 하면 로컬 호스트(기본 노드)와 원격 호스트(대기 노드) 간의 관계가 형성됩니다. ) 데이터가 실시간으로 동기화되도록 보장할 수 있습니다. 일반적으로 사용되는 아키텍처는 다음과 같습니다.
로컬 호스트에 문제가 발생하더라도 동일한 데이터의 복사본이 원격 호스트에 그대로 유지되어 계속 사용할 수 있어 데이터 보안이 보장됩니다.
DRBD는 Linux 커널 모듈을 통해 구현된 빠른 수준의 동기 복제 기술로 SAN과 동일한 공유 스토리지 효과를 얻을 수 있습니다.
장점:
노드 2개만 필요하며 배포가 간단하고 전환 논리도 간단합니다.
SAN 스토리지 네트워크에 비해 가격이 저렴합니다. >
데이터의 강력한 일관성을 보장합니다.
단점:
io 성능에 큰 영향을 미칩니다.
슬레이브 라이브러리는 읽기 작업을 제공하지 않습니다. p>
2.5. 분산 프로토콜
분산 프로토콜은 데이터 일관성 문제를 매우 잘 해결할 수 있습니다. 보다 일반적인 솔루션은 다음과 같습니다:
2.5.1 MySQL 클러스터
MySQL 클러스터는 NDB 스토리지 엔진을 사용하여 중복 데이터를 실제로 백업합니다. 높은 데이터베이스 효율성과 데이터 일관성을 달성할 시간입니다.
장점:
모두 공식 구성 요소를 사용하고 타사 소프트웨어에 의존하지 않습니다.
강력한 데이터 일관성을 얻을 수 있습니다. p> 단점:
중국에서는 더 적은 수가 사용됩니다.
구성이 복잡하고 일반 MySQL 엔진과 다소 다른 NDB 스토리지 엔진을 사용해야 합니다.
p>
노드 3개 이상 ;
2.5.2 Galera
Galera를 기반으로 하는 MySQL 고가용성 클러스터는 다중 마스터 데이터 동기화를 위한 MySQL 클러스터 솔루션입니다. 사용이 간편하고 단일 장애 지점이 없으며 가용성이 높습니다. 일반적인 아키텍처는 다음과 같습니다.
장점:
다중 마스터 쓰기, 지연 없는 복제, 강력한 데이터 일관성 보장
성숙한 커뮤니티가 있으며 인터넷 회사에서 이를 대규모로 사용합니다.
자동 장애 조치, 노드 자동 추가 및 제거
단점:
기본 MySQL에 대한 wsrep 패치가 필요합니다. 노드
p>
innodb 스토리지 엔진만 지원
최소 3개의 노드;
2.5.3 POAXS
Paxos 알고리즘이 해결하는 문제는 분산 시스템에서 특정 값(해상도)에 동의하는 방법입니다. 이 알고리즘은 동종 알고리즘 중 가장 효율적인 것으로 간주됩니다. Paxos와 MySQL의 조합은 분산 MySQL 데이터에서 강력한 일관성을 달성할 수 있습니다.
일반적인 아키텍처는 다음과 같습니다:
장점:
다중 마스터 쓰기, 지연 없는 복제, 강력한 데이터 일관성 보장
성숙한 이론적 기반; p> p>
자동 장애 조치, 노드 자동 추가 및 제거;
단점:
innodb 스토리지 엔진만 지원
최소 3개 노드;
3. 요약
데이터 일관성에 대한 사람들의 요구가 계속 증가함에 따라 MySQL 자체의 최적화, 최적화 등 분산 데이터 일관성 문제를 해결하기 위해 점점 더 많은 방법이 시도되고 있습니다. MySQL 클러스터 아키텍처의 개발, Paxos, Raft, 2PC 알고리즘 도입 등
MySQL 데이터베이스 데이터 일관성 문제를 해결하기 위해 분산 알고리즘을 사용하는 방법은 PhxSQL, MariaDB Galera Cluster, Percona XtraDB Cluster 등과 같은 일련의 성숙한 제품에 의해 점점 더 많이 받아들여지고 있습니다. 점점 더 많은 양이 대규모로 사용되고 있습니다.
MySQL 그룹 복제의 공식 GA를 통해 분산 프로토콜을 사용하여 데이터 일관성 문제를 해결하는 것이 주류 방향이 되었습니다. 점점 더 우수한 솔루션이 제안될 것으로 예상되며 MySQL 고가용성 문제는 더 잘 해결될 수 있습니다.