Sử dụng nhân rộng để nhân rộng


8

Đã đọc Sử dụng bản sao để mở rộng quy mô , làm cách nào tôi có thể định tuyến các truy vấn khác nhau đến các máy chủ khác nhau, ví dụ: SELECTtôi muốn định tuyến đến nô lệ và NON-SELECTlàm chủ. Tôi giả sử là loadbalancer Tôi có thể sử dụng haproxy , nhưng tôi không thấy có thể phân biệt giữa các truy vấn về mức độ haproxy ? Ngoài ra, giả sử ai đó đã trực tiếp đến chủ, làm thế nào chủ có thể xác định rằng đây là SELECTtruy vấn và hiển thị được gửi đến nô lệ hoặc cho trình cân bằng tải.

Câu trả lời:


3

Có một dự án được gọi là MySQL Proxy đang cố gắng xử lý phân tách đọc / ghi trong lớp proxy, nhưng nó không sẵn sàng sản xuất. Bạn có thể đọc thêm về các vấn đề trên trang này , chú ý đến phần vấn đề đã biết.

Hiện tại, như những người khác đã lưu ý, bạn phải xử lý việc định tuyến thông qua ứng dụng của mình.


Trong một mạch tương tự (nhưng, tôi tin rằng, đã sẵn sàng sản xuất): scalebase.com/solution/arch architecture
Nick

2

Đó là công việc của bạn web clientđể xác định xem một giao dịch mà nó sắp gửi đến cơ sở dữ liệu là read-onlyhay read-writevà chọn giao dịch được chỉ định slavehoặc mastertheo đó.


2

Tôi không biết bất kỳ phần mềm proxy nào để làm điều này cho bạn. haproxy là một proxy cấp HTTP, điều này sẽ không có bất kỳ tác động nào đến cơ sở dữ liệu của bạn. Bạn sẽ cần phải thực hiện điều này như một phần của logic nghiệp vụ của ứng dụng web của bạn.

Tại trung tâm của lớp kiên trì của bạn, bạn sẽ có thể chặn các cuộc gọi này và "định tuyến" chúng đến cơ sở dữ liệu phù hợp dựa trên loại giao dịch được thực hiện. Ví dụ: SELECTcác truy vấn có thể được gửi đến các máy chủ chỉ đọc của bạn, nhưng UPDATE/INSRET/DELETEcác truy vấn sẽ được gửi đến máy chủ chính.


haproxy là một bộ cân bằng tải TCP và có thể được sử dụng cho các giao thức khác, bao gồm cả MySQL, mặc dù nó có thể không phải là lựa chọn tốt nhất.
Aaron Brown
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.