RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
YandexMoney: 
41001198119846 
E-gold:
5128052

Руководство по MySQL Cluster

Данное руководство подготовлено Алексеем Паутовым в рамках некоммерческого проекта RussianLDP:MySQL ( http://www.botik.ru/~rldp/mysql.htm). Именно по этому адресу публикуются новые версии, а также другие материалы по MySQL.

1 Обзор MySQL Cluster

MySQL Cluster использует новый способ хранения NDB Cluster, чтобы сделать возможным выполнение нескольких серверов MySQL в кластере. Способ NDB Cluster доступен в BitKeeper для MySQL 4.1.2 и в двоичных дистрибутивах MySQL-Max 4.1.3.

В настоящее время поддерживаются операционные системы Linux, Mac OS X и Solaris. Ведутся работы по поддержке NDB Cluster на всех операционных системах, поддерживаемых MySQL, включая Windows.

Вы можете подписаться на список рассылки MySQL Cluster. Подробности на http://lists.mysql.com. Вы можете также обратиться к форумам MySQL на http://forums.mysql.com.

MySQL Cluster представляет собой новую технологию, созданную чтобы использовать кластеризацию в оперативной памяти баз данных в системе, совместно не использующей ничего. Архитектура таких систем позволяет системе работать с очень недорогими аппаратными средствами, и без любых специфических требований к аппаратным средствам или программному обеспечению. Это также не имеет никакой общей точки для сбоев потому, что каждый компонент имеет собственную память и диск.

MySQL Cluster интегрирует в оперативной памяти стандартный сервер MySQL с кластеризуемым способом хранения по имени NDB. В нашей документации термин NDB относится к части установки, которая является специфической для способа хранения, в то время как MySQL Cluster относится к комбинации MySQL и нового способа хранения.

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

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

2 Основные концепции MySQL Cluster

NDB представляет собой сочетание свойств постоянства данных и их высокой доступности.

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

Теперь опишем, как установить MySQL Cluster, состоящий из NDB и нескольких серверов MySQL.

Кластерная часть MySQL Cluster в настоящее время конфигурируется независимо от серверов MySQL. В MySQL Cluster каждая часть кластера именуется node (узел).

Обратите внимание: узел встречается во многих контекстах, но для MySQL Cluster он является процессом. Может иметься любое число узлов на одном компьютере.

Каждый узел имеет тип, и может быть несколько узлов каждого типа в MySQL Cluster. В минимальной конфигурации кластера MySQL будут по крайней мере три узла:

  • Управляющий (MGM). Роль этого типа узла: управлять другими узлами внутри MySQL Cluster, типа обеспечения данных конфигурации, старта и остановки узлов, выполнение резервного копирования и т.д. Поскольку этот тип узла управляет конфигурацией других узлов, узел этого типа должен быть запущен перед любым другим узлом. При работе кластера узел MGM не обязательно должен выполняться все время. MGM-узел запускается командой ndb_mgmd, по этой причине NDB_MGMD обеспечивается как псевдоним для MGM при конфигурировании кластера.
  • Память или узел базы данных (DB). Это тип узла, который управляет и сохраняет базу данных непосредственно. Имеется столько DB-узлов, сколько имеется фрагментов для репликаций. Например, с двумя репликациями по два фрагмента каждая, надо четыре DB-узла. Вполне достаточно одной репликации, стало быть минимальный кластер может содержать только один DB-узел. DB-узел запускается командой ndbd и NDBD обеспечивается как псевдоним для DB при конфигурировании кластера.
  • Клиентский (API) узел. Это узел пользователя, который обратится к кластеру. В случае кластера MySQL, узел пользователя традиционный сервер MySQL, который использует тип хранения NDB Cluster, допуская доступ к кластеризуемым таблицам. В основном, сервер MySQL действует как пользователь кластера NDB. Прикладные программы, использующие NDB API непосредственно, также рассматриваются как узлы API. Так как сервер MySQL обычно запускается командами mysqld или mysqld_safe, MYSQLD обеспечивается как псевдоним для API при конфигурировании кластера.

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

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

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

  • Стандартные клиенты MySQL. Они никак не отличают кластер и обвчный (некластерный) MySQL. Другими словами, к кластеру можно обращаться из существующих прикладных программ MySQL, написанных на PHP, Perl, C, C++, Java, Python, Ruby и любом другом языке.
  • Клиенты управления. Эта клиентура соединяется с сервером управления и обеспечивает команды для запуска и остановки узлов элегантно, пуска и остановки рассмотрения сообщений (только отладочные версии), показ версии и состояния узла и так далее.

Поиск

 

Найди своих коллег!