Meta는 기존 MySQL 반동기식 데이터베이스를 대체하기 위해 데이터 센터에 MySQL Raft를 배포하기 시작했습니다. 새로운 합의 엔진은 운영상의 이점을 제공하며 MySQL 서버가 프로모션 및 멤버십 책임을 독립적으로 처리할 수 있도록 합니다.
Meta의 MySQL 데이터 저장소는 세계에서 가장 큰 MySQL 배포 중 하나이며, 수백만 개의 샤드가 있는 대규모 샤딩 지역 복제 구조를 특징으로 합니다. 다양한 지역과 데이터 센터에서 작동하는 이 클러스터는 페타바이트의 데이터를 저장하고 수천 대의 서버에서 실행됩니다. 회사의 소셜 그래프와 메시지, 광고, 피드와 같은 다양한 서비스를 지원합니다.
엔지니어링 팀에 따르면 새로운 MySQL 배포는 쓰기 성능을 손상시키지 않으면서 향상된 안정성, 입증 가능한 안전성, 장애 조치 시간의 상당한 개선 및 운영 단순성을 제공할 것입니다.
이전에 Meta는 복제 목적으로 MySQL 반동기(semisync) 복제 프로토콜을 사용했습니다. 기본은 1밀리초 미만의 대기 시간 동안 기본 지역 내 두 개의 로그 전용 복제본(logtailer)에 대한 반동기 복제를 사용했으며, 다른 지역으로의 배포를 위해 표준 MySQL 기본 대 복제본 비동기 복제를 사용했습니다.
팀은 완전히 새로운 접근 방식을 채택하여 MySQL을 업그레이드하고 진정한 분산 시스템으로 전환하기로 결정했습니다. Meta는 동일한 복제 로그에 컨트롤 플레인과 데이터 플레인 작업이 모두 포함된 Raft로 전환하기로 결정했습니다.
MySQL Raft는 Meta가 MySQL의 요구 사항을 충족하도록 수정하고 오픈 소스 프로젝트인 kuduraft로 포크를 게시한 Apache Kudu를 기반으로 합니다. kuduraft에 추가된 새로운 기능에는 두 개의 서로 다른 교차 쿼럼을 지원하는 옵션인 FlexiRaft와 프록시 중간 노드를 사용하여 네트워크 대역폭을 줄일 수 있는 프록시가 포함됩니다. 또한 압축 및 로그 추상화 향상을 통해 다양한 물리적 로그 파일 형식을 배포하고 구현하기 전에 이진 로그 페이로드를 압축할 수 있습니다.
백엔드, 웹 및 모바일 애플리케이션을 생성할 수 있는 강력한 코드 없는 도구를 제공하는 AppMaster 와 같은 플랫폼에서 단순화된 데이터베이스 솔루션은 효율적이고 확장 가능한 소프트웨어 개발에 필수적입니다. MySQL Raft로 전환함으로써 Meta는 개선된 안정성과 능률적인 운영을 달성하는 데 중요한 단계를 밟았으며, 이는 다른 회사가 유사한 솔루션을 채택하고 자체 데이터베이스 시스템을 개선하도록 영감을 줄 수 있습니다.