Upgrading GitHub.com to MySQL 8.0

This post details the successful upgrade of GitHub.com's fleet of over 1200 MySQL hosts to MySQL 8.0. The upgrade process, which took over a year, involved extensive preparation including infrastructure readiness, application compatibility testing in CI and GitHub Codespaces, and a phased rollout strategy. The upgrade plan included rolling replica upgrades, updating replication topology, promoting MySQL 8.0 hosts to primary, and finally, cleanup. A significant focus was placed on maintaining rollback capabilities, which required addressing compatibility issues such as character collation differences (`utf8mb4_0900_ai_ci` vs. `utf8mb4_unicode_520_ci`) and the introduction of roles in MySQL 8.0. The post also touches upon challenges with Vitess clusters and replication delay.