25.6.10 Использование MySQL Server для NDB Cluster
mysqld — это традиционный процесс MySQL-сервера. Для использования с NDB Cluster, mysqld необходимо скомпилировать с поддержкой NDB движка хранения, как это сделано в предварительно скомпилированных бинарных файлах, доступных на https://dev.mysql.com/downloads/. Если вы компилируете MySQL из исходных кодов, необходимо вызвать CMake с параметром -DWITH_NDB=1 или (устаревшим) -DWITH_NDBCLUSTER=1, чтобы включить поддержку NDB.
Более подробная информация о компиляции NDB Cluster из исходных кодов приведена в разделе 25.3.1.4, «Компиляция NDB Cluster из исходных кодов в Linux» и разделе 25.3.2.2, «Компиляция и установка NDB Cluster из исходных кодов в Windows».
(Дополнительная информация об опциях и переменных mysqld, относящихся к NDB Cluster, а также обсуждаемых в этом разделе, приведена в разделе 25.4.3.9, «Опции и переменные MySQL Server для NDB Cluster».)
Если бинарный файл mysqld был скомпилирован с поддержкой кластера, движок хранения NDBCLUSTER по умолчанию отключен. Для включения этого движка можно использовать два варианта:
Используйте
--ndbclusterв качестве опции запуска в командной строке при запуске mysqld.Вставьте строку, содержащую
ndbcluster, в раздел[mysqld]вашего файлаmy.cnf.
Простой способ проверить, что ваш сервер работает с включенным движком хранения NDBCLUSTER, — это выполнить оператор SHOW ENGINES в мониторе MySQL (mysql). Вы должны увидеть значение YES в качестве значения Support в строке для NDBCLUSTER. Если вы видите NO в этой строке или если такая строка не отображается в выводе, вы не используете версию MySQL с поддержкой NDB. Если вы видите DISABLED в этой строке, необходимо включить его одним из описанных выше способов.
Для чтения данных конфигурации кластера MySQL-серверу, как минимум, требуется три параметра:
ID узла кластера самого MySQL-сервера
Имя хоста или IP-адрес сервера управления
Номер TCP/IP-порта, по которому он может подключиться к серверу управления
Идентификаторы узлов могут быть динамически назначены, поэтому их не обязательно указывать явно.
Параметр mysqld ndb-connectstring используется для указания строки подключения либо в командной строке при запуске mysqld, либо в my.cnf. Строка подключения содержит имя хоста или IP-адрес, где находится сервер управления, а также используемый им TCP/IP-порт.
В приведенном ниже примере ndb_mgmd.mysql.com — это хост, на котором находится сервер управления, и сервер управления ожидает сообщения кластера на порту 1186:
$> mysqld --ndbcluster --ndb-connectstring=ndb_mgmd.mysql.com:1186
Дополнительную информацию о строках подключения см. в разделе 25.4.3.3, «Строки подключения NDB Cluster».
Имея эту информацию, 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 ndbcluster
Info: NULL
Для участия в NDB Cluster процесс mysqld должен быть запущен как с опциями --ndbcluster, так и с опцией --ndb-connectstring (или их эквивалентами в my.cnf). Если mysqld запущен только с опцией --ndbcluster, или если он не может связаться с кластером, работа с таблицами NDB невозможна, так же, как и создание новых таблиц независимо от движка хранения. Последнее ограничение является мерой предосторожности, призванной предотвратить создание таблиц с теми же именами, что и таблицы NDB, пока узел SQL не подключен к кластеру. Если вы хотите создать таблицы, используя другой движок хранения, в то время как процесс mysqld не участвует в NDB Cluster, необходимо перезапустить сервер без опции --ndbcluster.
© 2025 Oracle
Licensed under the GPLv2 License.