Với MySQL, mọi người thường làm những gì được gọi là dựa trên ứng dụng sharding .
Tóm lại, bạn sẽ có cùng một cấu trúc cơ sở dữ liệu trên nhiều máy chủ cơ sở dữ liệu. Nhưng nó sẽ không chứa cùng một dữ liệu.
Ví dụ:
Users 1 - 10000: server A
Users 10001 - 20000: server B
Sharding (tất nhiên) không phải là một kỹ thuật sao lưu, nó có nghĩa là phân phối các lần đọc và ghi trên một cụm.
Ví dụ, các kỹ thuật được sử dụng để phân đoạn là MySQL-Proxy. Đây không phải là thứ mà HScale đã phát minh ra, nó ít nhiều là một tập lệnh LUA đơn giản phân phối các lần đọc và ghi tới các máy chủ phụ trợ khác nhau. Nên có rất nhiều ví dụ về MySQL forge.
Một công cụ khác (dựa trên MySQL Proxy) là SpockProxy . Hoàn toàn được điều chỉnh theo hướng sharding. Họ cũng loại bỏ Lua và làm nhiều thứ khác nhau để làm cho nó nhanh hơn proxy. Cho đến nay, tôi mới chỉ thử nghiệm SpockProxy, nhưng chưa bao giờ chạy nó trong phiên bản sản xuất.
Bây giờ ngoài những proxy đó, bạn cũng có thể tự chia nhỏ. Bắt buộc sẽ là một bảng chính, ví dụ:
-------------------
| userA | server1 |
| userB | server2 |
| userC | server1 |
-------------------
Sau đó, xây dựng các lần đọc và ghi của bạn đối với máy chủ. Không đẹp lắm nhưng điều đó hiệu quả. Khó khăn tiếp theo sẽ là làm cho nó trở nên chậm chạp hơn. Ví dụ:server1
, server2
và server3
mỗi cụm phải là một cụm nhỏ.
Và cuối cùng nhưng không kém phần quan trọng, một cách tiếp cận thú vị khác để phân vùng dữ liệu và chỉ số trên các máy chủ là IDDB . Tôi không chắc liệu họ có bao giờ phát hành mã của nó hay không, nhưng các bài đăng trên blog của họ cung cấp thông tin chi tiết tuyệt vời về những gì nó hoạt động.
Hãy cho tôi biết nếu điều này có ích!