MySQL кластер вопросы - PullRequest
       12

MySQL кластер вопросы

5 голосов
/ 08 марта 2010

Я прочитал большую часть документации по MySQL Cluster и некоторые учебные пособия, но у меня все еще есть некоторые неясные вещи, и основные из них сейчас:

  1. Когда узел данных перезапускается (аварийно завершает работу и снова начинает работать), будут ли данные по-прежнему доступны? Обновления / Дополнения будут работать как обычно? Будет ли он "синхронизироваться"?
  2. Работает ли кластер быстрее, чем автономный? В частности, я обновляю строки много раз, но по одной, что означает, что задержка сети может повлиять на производительность. Могу ли я следовать какой-либо схеме, чтобы ускорить процесс, например, добавить больше узлов SQL или добавить узлы данных режима?

По вопросу № 2 обновление строки имеет следующий синтаксис:

UPDATE db_accounts.tbl_items SET items=items+%lld WHERE id_account=%u

"id_account" - это индекс (уникальный).

Ответы [ 2 ]

8 голосов
/ 09 марта 2010

MySQL Cluster - это база данных в памяти (хотя некоторые столбцы могут храниться на диске, индексированные столбцы не могут). Если вилка будет извлечена, ваши данные исчезнут. Процесс восстановления для узла, вновь присоединяющегося к кластеру, заключается в том, что он извлекает данные, которые он потерял, из уцелевшего узла (требуя хороших быстрых соединений между узлами), а затем осторожно применяет события репликации, пока он не догонит и не сможет активно участвовать. Если имеется недавняя резервная копия, ее можно восстановить из другой, а не из другого узла, но принцип тот же: узел должен быть заполнен данными с нуля.

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

Очевидно, что с учетом того, что узлы распределены, медленная или перегруженная сеть сильно повлияет на производительность.

5 голосов
/ 06 июня 2011

Даже если ваша таблица MySQL Cluster находится в оперативной памяти, по умолчанию любые записи асинхронно проверяются на диск (можно отключить эту функцию для каждой таблицы).

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

Если происходит сбой одного узла данных, а затем происходит восстановление из его локальной копии диска, он догоняет, применяя последние обновления от своего узла данных равноправного узла.

Чтобы еще больше повысить доступность ваших данных, вы можете использовать асинхронную репликацию MySQL для второго сайта (при необходимости, на другом конце света).

...