С MySQL люди обычно делают то, что называется основанным на приложениях шардингом .
В двух словах, у вас будет одна и та же база данных структура на нескольких серверах баз данных. Но он не будет содержать те же данные.
Так, например:
Users 1 - 10000: server A
Users 10001 - 20000: server B
Раздробление (конечно) не является техникой резервного копирования, оно предназначено для распределения операций чтения и записи по кластеру.
Методы, используемые для шардинга, например, MySQL-Proxy. Это не то, что придумал HScale, это более или менее простой сценарий LUA, который распределяет операции чтения и записи на разные серверы. В кузнице MySQL должно быть много примеров.
Другим инструментом (на основе MySQL Proxy) является SpockProxy . Полностью с учетом шардинга. Они также избавились от Lua и работали над различными вещами, чтобы сделать его быстрее, чем прокси. До сих пор я только тестировал SpockProxy, но никогда не запускал его в работе.
Теперь, кроме этих прокси, вы также можете осквернять себя. Требуется главная таблица, например ::1022*
-------------------
| userA | server1 |
| userB | server2 |
| userC | server1 |
-------------------
Затем создайте ваши операции чтения и записи на сервере. Не очень красиво, но это работает. Следующим препятствием было бы сделать его более терпимым. Так, например, server1
, server2
и server3
каждый должен быть небольшим кластером.
И, наконец, еще один интересный подход к разделению данных и индексов между серверами - это Digg IDDB . Я не уверен, выпустили ли они когда-нибудь его код, но их сообщения в блоге дают подробные сведения о том, что он делает.
Дайте мне знать, если это поможет!