Chia partition RDB tại GitHub: trải nghiệm thực tế
(github.blog)-
GitHub khởi đầu hơn 10 năm trước với RoR và một instance MySQL đơn lẻ
-
Năm 2019 bắt đầu chia partition và đây là tổng kết sau 2 năm thực hiện nhiều công việc khác nhau
→ Tính đến năm 2021, tải của DB đã giảm 50%
- Partition ảo
-
Tách biệt một cách ảo ở tầng ứng dụng trước khi di chuyển bảng thực tế
-
Gom các bảng theo nhóm và ràng buộc thành các schema domain, đồng thời dùng SQL Linter để bắt buộc giữ ranh giới
→ Để việc partition sau này được an toàn hơn
- Kiểm tra ranh giới ảo bằng Query Linter và Transaction Linter
- Di chuyển dữ liệu không downtime
- Sử dụng tính năng Vertical Sharding của Vitess
→ Triển khai VTGate lên cụm Kubernetes rồi đổi sang đó làm điểm kết nối
- Áp dụng quy trình write-cutover
→ Dùng tính năng Replication của MySQL để feed dữ liệu sang cụm khác
→ Dùng ProxySQL để multiplex các kết nối client MySQL
Kết quả
-
Năm 2019,
mysql1khi còn là cụm đơn phản hồi trung bình 950 nghìn truy vấn mỗi giây -
Đến năm 2021, hệ thống được phân tán thành multi-cluster, phản hồi trung bình 1,2 triệu truy vấn mỗi giây trong khi tải máy chủ giảm một nửa
Chưa có bình luận nào.