MySQL High Availability at GitHub
Jun 20, 2018Shlomi Noach

Summary
This post details GitHub's MySQL high availability and primary service discovery solution, which iterates on previous solutions. It moves away from VIP and DNS-based discovery due to its unreliability and slow propagation times, especially for cross-DC failovers. The new solution utilizes orchestrator/raft for detection and failovers, Consul for service discovery (as a KV store), GLB/HAProxy for a proxy layer, and anycast for network routing. This architecture aims to be data center agnostic, tolerant of data center failure, remove unreliable cooperative workflows, reduce total outage time, and achieve lossless failovers.