중소 인터넷 기업에서. MySQL 클러스터는 일반적으로 위에 표시된 아키텍처를 갖습니다. WEB 노드는 데이터베이스를 읽을 때 dbproxy 서버를 읽습니다. dbproxy 서버는 SQL 문을 판단하여 데이터베이스 읽기와 쓰기를 분리합니다. 읽기 요청은 슬레이브 라이브러리에 로드되고(마스터 라이브러리도 추가 가능) 쓰기 요청은 마스터 라이브러리에 기록됩니다.
여기의 dbproxy는 데이터베이스 클러스터의 유일한 콘센트이므로 가용성도 높아야 합니다.
drproxy는 데이터베이스 읽기 및 쓰기 분리에 일반적으로 사용되는 소프트웨어입니다. amoeba, mycat 및 cobar도 일반적으로 사용됩니다. 이러한 유형의 소프트웨어는 읽기와 쓰기를 분리하는 기능을 가질 뿐만 아니라 백엔드 노드의 로드 밸런싱 및 상태 확인도 구현할 수 있습니다.
이러한 유형의 데이터베이스 미들웨어 소프트웨어를 통해 데이터베이스에서 읽기와 쓰기의 분리를 구현하는 것 외에도 프로그램에서 작성할 수도 있습니다.
일반적으로 메인 라이브러리는 듀얼 마스터 고가용성이어야 하므로 메인 라이브러리에 오류가 발생하면 다른 메인 라이브러리가 즉시 인계됩니다. 듀얼 마스터를 사용하지 않는 경우 슬레이브 데이터베이스가 마스터 데이터베이스를 대신할 때 상태 마이그레이션이 필요하므로 지연이 발생합니다.
메인 데이터베이스의 고가용성을 위해 고려해야 할 핵심 포인트는 데이터 동기화입니다. 더 일반적으로 사용되는 고가용성 솔루션은 다음과 같습니다:
1, keepalived+mysql 복제. VIP 우아함은 keepalived를 통해 달성되며, 데이터 동기화는 mysql에서 제공하는 동기화 솔루션인 복제를 통해 달성됩니다.
2.하드비트+drbd. 듀얼 마스터 데이터 동기화는 DRBD를 통해 이루어집니다. 이 데이터 동기화는 블록 장치를 기반으로 합니다. 일반 동기화 솔루션보다 훨씬 빠릅니다. 하트비트를 통해 VIP 드리프트 및 DRBD 리소스 전환 관리를 실현합니다.
3. 연결 유지+mha.
슬레이브 라이브러리의 경우 5개를 넘지 않는 것이 가장 좋습니다. 그 중 3개는 사용자가 액세스할 수 있는 노드로 사용하고, 다른 하나는 내부자를 위한 쿼리 노드로 사용할 수 있습니다. 내부 직원이 노드를 쿼리할 때 일반적으로 인덱싱 없이 기간에 따라 쿼리하므로 많은 리소스를 차지하므로 고객 액세스에 영향을 미치지 않도록 이 노드를 별도로 전용으로 사용해야 합니다. 마지막으로 데이터베이스 데이터 백업을 위해 슬레이브 데이터베이스를 남겨 두어야 합니다.
슬레이브 데이터베이스의 데이터 일관성은 마스터 데이터베이스에서 직접 마스터-슬레이브 지원을 통해 유지되거나 다른 슬레이브 데이터베이스에서 마스터-슬레이브 복제를 통해 유지될 수 있습니다(장점은 마스터 데이터베이스에 대한 부담을 줄이는 것이지만 단점은 지연이 약간 더 큼).
위 내용은 대기업에서는 mysql 클러스터에 무엇을 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!