Sử dụng ProxySQL để tự động phân chia SQL query trên Aurora Endpoint.
Xin chào mọi người, lại là mình đây. Ngày trước khi Aurora mới ra đời, chúng ta còn cùng xem Aurora có gì mới hơn, hiện đại hơn so với RDS, vậy mà giờ đây, có thể nói Aurora đã bắt đầu len lỏi vào các dự án và trở thành một trong những thành phần quan trọng bậc nhất trong các dự án sử dụng AWS.
Hôm nay, mình muốn chia sẻ một vấn đề mà chắc là cũng có nhiều người gặp phải, nhưng bên AWS chưa có một giải pháp cụ thể nào (nhưng chắc là trong tương lai sẽ có). Đó chính là việc phân chia SQL query trên Aurora Endpoint. Chắc mọi người cũng đã biết, khi Aurora Cluster được tạo ra, chúng ta sẽ có một vài Endpoint đặc trưng, gồm Writer Endpoint cho phép đọc và ghi vào Database instance primary, và Reader Endpoint - Endpoint chỉ đọc, cho phép các query đọc (dạng SELECT, không INSERT, UPDATE …). Aurora cho phép chúng ta gộp các Aurora Instance vào và chỉ sử dụng 1 Reader Aurora Endpoint, nhưng ở thời điểm hiện tại, chưa có một cách đơn giản nào để tự động phân chia Reader và Writer endpoint dựa theo loại query. Chúng ta có một phương án thường được sử dụng mà sẽ được nói trong bài này, đó chính là: ProxySQL.
Lưu ý rằng: ProxySQL không phải là một dịch vụ của AWS như RDS Proxy (có thể quản lý và phân phối các Instance/Endpoint của Database Instance). ProxySQL là một nền tảng mã nguồn mở, giúp chúng ta có thể phân chia query đi vào các Endpoint. Tuy nhiên do là mã nguồn mở nên ProxySQL cần thiết lập và cài đặt tương đối phức tạp một chút, chứ không phải chỉ đơn giản là một tính năng, bật lên là có. Chúng ta cùng xem hình sau đây để hiểu rõ hơn một chút về cách phân phối Endpoint của Aurora:
Bản thân Aurora Cluster đã có cơ chế tự động failover, khi Primary Instance có vấn đề, một trong số các Read Replica Instances có thể được promote lên làm Primary Instance hoặc Aurora sẽ tự động tạo ra một Primary Instance thay thế, đảm bảo tính sẵn sàng của hệ thống. Để không mất tính HA này, chúng ta phải sử dụng Reader Endpoint và Writer Endpoint mà Aurora cung cấp cho chúng ta làm đầu ra cho ProxySQL.
Chúng ta sẽ tiến hành tạo một Instance, cài đặt ProxySQL và thiết lập 2 Endpoints cho ProxySQL với các rule theo mô hình sau:
All Rights Reserved