Вопрос

Я знаю, что горизонтальное разбиение ... вы можете создавать много таблиц.

Как вы можете сделать это с несколькими серверами? Это позволит 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 . Я не уверен, выпустили ли они когда-нибудь его код, но их сообщения в блоге дают отличную информацию о том, что он делает.

Дайте мне знать, если это поможет!

Другие советы

Но вы должны иметь в виду, что если по каким-то причинам вы захотите перенести это решение в облако и сделать его мультитенантным, то приведенная выше конфигурация может стать более сложной. Подумай об этом -

<Ол>
  • вы вошли в систему, и БД выбрана (обмен БД) на основе таблицы организации пользователя
  • Это будет новая мастер-таблица, с которой вы сейчас разговариваете, с ее собственными рабами
  • Но пункт 2 выше также нуждается в рассмотрении, поскольку вы хотите убедиться, что масштабирование не станет узким местом.
  • Итак, теперь вопрос в том, что вам, вероятно, нужно подумать, как вы можете сделать это разделение в среде en-mster-slave, где slaves обычно предназначены для чтения, а master для записи.

    ура! Gary

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top