장애 조치 시나리오를 설정하기 위해 MySQL이 복제 또는 클러스터링하는 방법은 무엇입니까?

장애 조치 시나리오를 설정하기 위해 MySQL이 복제 또는 클러스터링하는 방법은 무엇입니까?

GER의 공급자로부터 막대한 데이터 문제가 발생한 후 이제 장애 조치 시나리오를 처리해야 합니다. 그러나 실제 답변을 찾을 수 없는 몇 가지 질문이 있습니다. 그래서 누군가가 여기서 나를 도울 수 있기를 바랍니다.

현재 별도의 도커 컨테이너에서 두 개의 MySQL 데이터베이스를 실행하는 server1이 있습니다. 이제 이러한 내용이 두 번째 서버에 복제되어야 합니다. server1에 장애가 발생하는 경우 ClusterIP를 통해 상대적으로 빠르게 server2로 전환할 수 있습니다.

다음 사항을 아는 것이 중요합니다. 데이터베이스를 사용하는 소프트웨어는 데이터베이스에 많은 쓰기 작업을 수행하는 스포츠 경기 관리 시스템입니다(테스트되지는 않았지만 읽기 작업이 포함된 전체 쓰기 작업은 아님).

나에게 필요한 질문은 다음과 같습니다.

  • 어떤 복제 방법이 가장 적합합니까?
  • 제가 알기로는 MASTER <-> MASTER가 가장 적합할 것 같습니다. 하지만 저는 여기서도 문제가 발생할 수 있다는 점을 반복해서 읽었습니다.
  • MASTER <-> SLAVE를 사용하면 슬레이브가 읽기만 할 수 있다는 문제가 발생합니다. 마스터가 실패하면 어떻게 되나요? 그러면 슬레이브가 자동으로 마스터가 되어 쓰기도 할 수 있나요?
  • 아니면 클러스터가 최선의 솔루션입니까? 현재는 활성 노드가 하나만 있습니다. 향후 미국에 또 다른 DB 노드가 추가될 수 있습니다. 하지만 현재는 존재하지 않습니다.

빠른 작업 솔루션이 필요하고 이 일반적인 주제가 매우 거대하고 쉽지 않은 것 같기 때문에 도움을 주시면 정말 감사하겠습니다.

답변1

두 가지 문제를 제기합니다.

MySQL 토폴로지순서대로(정상에서 최고까지)

  • 기본 -> 복제본 - "장애 조치"를 수행할 수 있지만 수동 작업이 필요하므로 시간이 걸립니다.
  • 기본 <=> 기본 -- 다른 서버를 "즉각적으로" 사용할 수 있지만 설정이 약간 더 복잡합니다.
  • 3개 이상의 서버로 구성된 클러스터입니다. 이를 통해 장애 조치가 더욱 자동화됩니다. "InnoDB CLuster"(MySQL 8) 또는 "Galera"(MariaDB에 포함됨)를 참조하세요.

지역 - 데이터 센터도 실패할 수 있다는 점을 염두에 두십시오. 예를 들어, 단일 허리케인으로 인해 플로리다의 오프라인 지역이 얼마나 될까요?

"분할 브레인" 시나리오에 유의하세요. 여기에는 두 개의 서버만 있고 둘 다 살아 있지만 네트워크가 다운된 곳입니다. 그들은 상황이 무엇인지 말할 수 없고 당신도 말할 수 없습니다. 각각이 자신이 살아있는 유일한 서버라고 생각하고 계속해서 쓰기를 수행한다면 결국 혼란에 빠질 것입니다. 따라서 대신 전체 시스템이 다운되었다고 가정해야 합니다.

요점 - 물리적으로 분리된 최소 3개의 서버가 필요합니다.

대리

아직도 문제가 남아있다클라이언트데이터베이스 시스템의 어느 부분이 살아 있는지(읽기 및/또는 쓰기를 위해) 아는 것입니다. "읽기"만 중요한 경우에는 복제본 수에 관계없이 많은 토폴로지로 충분하며 '무제한' 확장성을 제공합니다. "쓰기"는 실제 과제가 있는 곳입니다.

한 서버가 다운되었음을 알아차리고 다른 서버로 다시 라우팅하는 "올바른 작업"을 수행하는 데 능숙한 여러 타사 제품이 있습니다. 연구해 보세요.

코딩

오류가 발생하면 코드에 일종의 오류가 발생할 가능성이 높습니다. 오류를 확인해야 하며 일부는 자체 복구되지 않습니다. 그리고 대부분의 네트워크 오류는 알아차리는 데 시간이 걸립니다.

관련 정보