Dengan MySQL, orang biasanya melakukan apa yang disebut berbasis aplikasi sharding .
Singkatnya, Anda akan memiliki struktur database yang sama pada beberapa server database. Tapi itu tidak akan berisi data yang sama.
Jadi misalnya:
Users 1 - 10000: server A
Users 10001 - 20000: server B
Sharding (tentu saja) bukan teknik pencadangan, ini dimaksudkan untuk mendistribusikan pembacaan dan penulisan di seluruh cluster.
Teknik yang digunakan untuk shard adalah MySQL-Proxy, misalnya. Ini bukan apa-apa yang ditemukan Hscale, ini lebih atau kurang skrip LUA sederhana yang mendistribusikan membaca dan menulis ke server backend yang berbeda. Seharusnya ada banyak contoh di MySQL forge.
Alat lain (berdasarkan Proxy MySQL) adalah SpockProxy . Sepenuhnya disesuaikan dengan sharding. Mereka juga menyingkirkan Lua, dan mereka mengerjakan berbagai hal untuk membuatnya lebih cepat daripada proxy. Sejauh ini, saya hanya menguji SpockProxy, tetapi tidak pernah menjalankannya dalam produksi.
Sekarang selain dari proxy itu, Anda juga dapat melakukan sharding. Diperlukan tabel master, mis.:
-------------------
| userA | server1 |
| userB | server2 |
| userC | server1 |
-------------------
Kemudian buat pembacaan dan penulisan Anda ke server. Tidak terlalu cantik tapi itu berhasil. Kendala selanjutnya adalah membuatnya lebih falt tolarant. Jadi misalnya, server1
, server2
dan server3
masing-masing harus berupa cluster kecil.
Dan yang tak kalah pentingnya, pendekatan menarik lainnya untuk mempartisi data dan indeks di seluruh server adalah IDDB . Saya tidak yakin apakah mereka pernah merilis kodenya, tetapi postingan blog mereka memberikan detail yang bagus tentang fungsinya.
Beri tahu saya jika ini membantu!