Zero-downtime MySQL 8.0 → 8.4 upgrades on RDS with Blue/Green deployments
(Draft skeleton — expand each section with your real runbook details. This is your highest-value first post: it targets teams searching for exactly this migration ahead of MySQL 8.0 end of support.)
Why this migration was urgent
MySQL 8.0 on RDS reached its extended-support deadline, and staying meant rising costs and shrinking patch coverage. We had multiple production instances to move, including systems that could not tolerate downtime.
Our approach: Blue/Green with a full bake
- Inventory and compatibility pass — parameter groups, deprecated features, connector versions.
- Green environment creation — RDS Blue/Green deployment, replication lag monitoring.
- Full bake — running the green environment against production-shaped load before any switchover.
- Switchover window — what we monitor minute-by-minute, and the go/no-go criteria.
- Rollback paths — what "tested rollback" actually means in practice.
Lessons learned
- Custom parameter groups (like max_connections formula overrides) deserve their own review step.
- Cross-region read replicas change the switchover order of operations.
- The runbook is the deliverable: the second and third migrations took a fraction of the first one's time.
(TODO: flesh out with sanitized details, timings, and monitoring screenshots.)

