GitHub uses MySQL to store vast amounts of relational data. This is the story of how we seamlessly upgraded our production fleet to MySQL 8.0.
Overview
The article discusses GitHub's upgrade of its MySQL infrastructure from version 5.7 to 8.0, detailing the motivations, preparation, upgrade plan, and challenges faced during the process. It emphasizes the importance of maintaining service level objectives (SLOs) and the collaborative effort required across multiple teams.
What You'll Learn
How to upgrade a large-scale MySQL infrastructure while maintaining service availability
Why it's crucial to have rollback capabilities during database upgrades
How to ensure application compatibility with new database versions through CI testing
Prerequisites & Requirements
- Understanding of MySQL database management and version compatibility
- Familiarity with GitHub Projects for tracking upgrades(optional)
Key Questions Answered
What motivated GitHub to upgrade to MySQL 8.0?
How did GitHub ensure application compatibility during the upgrade?
What challenges did GitHub face during the MySQL upgrade?
What was the upgrade strategy for MySQL 8.0?
Key Statistics & Figures
Technologies & Tools
Some links below are affiliate links. We may earn a commission if you make a purchase.
Key Actionable Insights
1Implement a gradual upgrade strategy for database systems to minimize risks.A gradual rollout allows for monitoring and quick rollbacks if issues arise, ensuring that service levels are maintained throughout the upgrade process.
2Utilize Continuous Integration (CI) to test application compatibility with new database versions.Running both old and new database versions in CI helps identify potential issues before they affect production, reducing the likelihood of downtime.
3Maintain sufficient replicas of the previous database version to facilitate rollbacks.Having enough 5.7 replicas online during the upgrade ensures that production traffic can be served without disruption if the new version encounters issues.