Как разделить Mysql между НЕСКОЛЬКИМИ СЕРВЕРАМИ?
-
05-07-2019 - |
Вопрос
Я знаю, что горизонтальное разбиение ... вы можете создавать много таблиц.
Как вы можете сделать это с несколькими серверами? Это позволит Mysql масштабироваться.
Создавать X-таблицы на X-серверах?
Кто-нибудь хочет объяснить, или есть хорошее руководство для начинающих (пошаговое руководство), которое научит вас, как разбивать на несколько серверов?
Решение
В MySQL люди обычно делают то, что называется шардингом на основе приложений .
В двух словах, у вас будет одна и та же структура базы данных на нескольких серверах баз данных. Но он не будет содержать те же данные.
Так, например:
Users 1 - 10000: server A
Users 10001 - 20000: server B
Sharding (конечно) не является техникой резервного копирования, он предназначен для распределения операций чтения и записи по кластеру.
Методы, используемые для шардинга, например, MySQL-Proxy. Это не то, что придумал HScale, это более или менее простой сценарий LUA, который распределяет операции чтения и записи на разные серверы. В кузнице MySQL должно быть много примеров.
Другой инструмент (на основе MySQL Proxy) - это SpockProxy . Полностью с учетом шардинга. Они также избавились от Lua и работали над различными вещами, чтобы сделать его быстрее, чем прокси. До сих пор я только тестировал SpockProxy, но никогда не запускал его в производстве.
Теперь, кроме этих прокси, вы также можете осквернять себя. Требуется главная таблица, например:
-------------------
| userA | server1 |
| userB | server2 |
| userC | server1 |
-------------------
Затем создайте свои операции чтения и записи на сервере. Не очень красиво, но это работает. Следующим препятствием было бы сделать его более терпимым. Так, например, server1
, server2
и server3
каждый должен быть небольшим кластером.
И наконец, еще один интересный подход к разделению данных и индексов между серверами - это IDDB от Digg . Я не уверен, выпустили ли они когда-нибудь его код, но их сообщения в блоге дают отличную информацию о том, что он делает.
Дайте мне знать, если это поможет!
Другие советы
Но вы должны иметь в виду, что если по каким-то причинам вы захотите перенести это решение в облако и сделать его мультитенантным, то приведенная выше конфигурация может стать более сложной. Подумай об этом -
<Ол>Итак, теперь вопрос в том, что вам, вероятно, нужно подумать, как вы можете сделать это разделение в среде en-mster-slave, где slaves обычно предназначены для чтения, а master для записи.
ура! Gary
Вот что написано в объявлении о HSCALE 0.1:
Сейчас нам нужно просто расстаться огромные таблицы, но позже мы хотим распределить разделы по нескольким Экземпляры сервера MySQL, чтобы иметь реальный горизонтальное масштабирование. Самая тяжелая часть будет иметь дело с транзакциями где мы должны использовать распределенный транзакции (XA) или запретить транзакции с разделами на разные хосты ...
Посмотрите на этот проект: http://sourceforge.net/projects/hscale/ Может быть, это подойдет вам.