Quá trình GitHub chuyển từ MySQL 5.7 sang MySQL 8.0
(github.blog)-
GitHub đã tiến hành nâng cấp hơn 1.200 host MySQL lên MySQL 8.0. Việc này được thực hiện vì MySQL 5.7 đã hết vòng đời, đồng thời để tận dụng các bản vá bảo mật mới nhất và các tính năng mới, và toàn bộ quá trình kéo dài hơn 1 năm. Những thách thức kỹ thuật và bài học rút ra trong quá trình nâng cấp một hạ tầng MySQL đa dạng và phức tạp đã nhấn mạnh tầm quan trọng của tự động hóa và quản lý fleet.
-
GitHub khởi đầu cách đây 15 năm với một ứng dụng Ruby on Rails và một cơ sở dữ liệu MySQL duy nhất. Kể từ đó, GitHub liên tục cải tiến kiến trúc MySQL để đáp ứng nhu cầu mở rộng quy mô và độ bền của nền tảng. Và lần này, họ đã thực hiện việc nâng cấp hơn 1.200 host MySQL lên MySQL 8.0.
-
Động lực nâng cấp là do MySQL 5.7 sắp hết vòng đời, và GitHub muốn nâng cấp lên MySQL 8.0 để có được các bản vá bảo mật mới nhất, sửa lỗi và cải thiện hiệu năng. Ngoài ra, 8.0 còn bao gồm các tính năng mới như Instant DDLs, invisible indexes, compressed bin logs.
-
Hạ tầng MySQL của GitHub là một môi trường triển khai đa dạng và phức tạp gồm hơn 1.200 host. Để thực hiện nâng cấp trong khi vẫn duy trì hệ thống này, GitHub cần có kế hoạch cẩn trọng, tự động hóa kiểm thử và sự phối hợp giữa nhiều nhóm khác nhau.
-
Ở giai đoạn chuẩn bị nâng cấp, GitHub đã thực hiện các công việc như nâng cấp hạ tầng, kiểm tra khả năng tương thích của ứng dụng, duy trì giao tiếp và tính minh bạch, đồng thời xây dựng chiến lược nâng cấp theo từng bước chậm rãi. Việc nâng cấp được tiến hành qua nhiều giai đoạn, và điểm quan trọng là luôn giữ khả năng rollback trong suốt quá trình.
-
Trong quá trình nâng cấp, có vấn đề là việc rollback từ MySQL 8.0 về MySQL 5.7 rất khó, nhưng GitHub vẫn thực hiện nâng cấp an toàn trong khi duy trì khả năng rollback. Họ cũng gặp nhiều thách thức kỹ thuật khác nhau như Vitess, nhưng đã vượt qua các vấn đề này, và toàn bộ quá trình nâng cấp kéo dài hơn 1 năm.
-
Kinh nghiệm và bài học thu được từ dự án này nhấn mạnh với GitHub rằng nâng cấp MySQL là một trong những công việc bảo trì định kỳ quan trọng, và đi đến kết luận rằng tự động hóa cùng việc phát triển các công cụ quản lý fleet ổn định sẽ giúp thực hiện các đợt nâng cấp trong tương lai hiệu quả hơn.
3 bình luận
Có vẻ như MS không hề cố ép các công ty được mua lại phải chuyển sang stack công nghệ của họ... đến giờ vẫn là RoR / mysql nhỉ
Di trú cơ sở dữ liệu của GitHub... chỉ tưởng tượng thôi cũng đã thấy kinh khủng rồi.
Có lẽ họ im lặng vì biết rằng một khi đụng tay vào thì sẽ không còn đường cứu vãn, đúng không? haha