Spec-Zone .ru
спецификации, руководства, описания, API
|
mysqld является традиционным серверным процессом MySQL. Чтобы
использоваться с MySQL Cluster, mysqld должен быть создан с поддержкой NDB
механизм хранения, как это находится в предварительно скомпилированных
двоичных файлах, доступных от -DWITH_NDBCLUSTER=1
опция, чтобы включать поддержку NDB
.
Для получения дополнительной информации о компиляции MySQL Cluster из источника, см. Раздел 17.2.2.3, "Создавая MySQL Cluster from Source on Linux", и Раздел 17.2.3.2, "Компилируя и Кластер MySQL Installing из Источника на Windows".
(Для получения информации о mysqld опциях и переменных, в дополнение к обсужденным в этом разделе, которые относятся к MySQL Cluster, см. Раздел 17.3.4, "MySQL Server Options и Variables для MySQL Cluster".)
Если mysqld
двоичный файл был создан с поддержкой Кластера, NDBCLUSTER
механизм хранения все еще отключается по умолчанию. Можно
использовать любой из двух возможных вариантов включить этому механизму:
Использовать --ndbcluster
как опция запуска на командной строке, запускаясь mysqld.
Вставьте строку, содержащую ndbcluster
в [mysqld]
раздел Вашего my.cnf
файл.
Легкий способ проверить, что Ваш сервер работает с NDBCLUSTER
включенный механизм хранения должен выйти SHOW ENGINES
оператор в MySQL Monitor (mysql). Следует видеть значение YES
как Support
значение в строке для NDBCLUSTER
. Если Вы видите NO
в этой строке или если
нет такой строки, выведенной на экран в выводе, Вы не работаете NDB
Поддерживающая версия MySQL. Если Вы видите DISABLED
в этой строке Вы должны включить этому любым из этих двух способов,
только описанных.
Чтобы считать данные кластерной конфигурации, сервер MySQL требует как минимум трех сведений:
Собственный ID узла кластера сервера MySQL
Имя хоста или IP-адрес для сервера управления (узел MGM)
Число порта TCP/IP, на котором это может соединиться с сервером управления
ID узла могут быть выделены динамически, таким образом, не строго необходимо определить их явно.
mysqld параметр ndb-connectstring
используется, чтобы определить connectstring или на командной строке, запускаясь mysqld или в my.cnf
.
connectstring содержит имя хоста или IP-адрес, где сервер управления может быть найден, так же как порт TCP/IP,
это использует.
В следующем примере, ndb_mgmd.mysql.com
узел, где сервер управления находится, и
сервер управления прислушивается к сообщениям кластера на порту 1186:
shell> mysqld --ndbcluster
--ndb-connectstring=ndb_mgmd.mysql.com:1186
См. Раздел 17.3.2.3, "MySQL Cluster Connectstring", для получения дополнительной информации о connectstrings.
Учитывая эту информацию, сервер MySQL будет полноправным участником кластера. (Мы часто обращаемся к процессу mysqld, работающему этим способом как узел SQL.) Это будет полностью осведомлено обо всех узлах данных кластера так же как их состоянии, и установит соединения со всеми узлами данных. В этом случае это в состоянии использовать любой узел данных в качестве координатора транзакции и считать и обновить данные узла.
Можно видеть в mysql клиенте, соединяется ли сервер MySQL с использованием
кластера SHOW PROCESSLIST
. Если
сервер MySQL соединяется с кластером, и Вы имеете PROCESS
полномочие, тогда первая строка вывода как показано здесь:
mysql> SHOW PROCESSLIST \G*************************** 1. row *************************** Id: 1 User: system user Host: db:Command: Daemon Time: 1 State: Waiting for event from ndbclusterInfo: NULL
Чтобы участвовать в MySQL Cluster, процесс mysqld должен быть запущен с обоих
опции --ndbcluster
и --ndb-connectstring
(или их эквиваленты в my.cnf
). Если mysqld запускается с только --ndbcluster
опция, или если это неспособно связаться с кластером, не
возможно работать с NDB
таблицы, и при этом не возможно составить любые новые таблицы независимо от
механизма хранения. Последнее ограничение является мерой по безопасности, предназначенной,
чтобы предотвратить создание таблиц, имеющих те же самые имена как NDB
таблицы, в то время как узел SQL не соединяется с кластером. Если Вы
хотите составить таблицы, используя различный механизм хранения, в то время как процесс mysqld не участвует в MySQL Cluster, следует
перезапустить сервер без --ndbcluster
опция.