12 điểm bởi xguru 2021-09-29 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp
  • 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%

  1. 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
  1. 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, mysql1 khi 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.

Chưa có bình luận nào.