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, “Building NDB Cluster from Source on Linux” и разделе 25.3.2.2, “Compiling and Installing NDB Cluster from Source on Windows”.
(Дополнительную информацию об опциях и переменных mysqld, помимо обсуждаемых в этом разделе, которые актуальны для NDB Cluster, см. в разделе 25.4.3.9, “MySQL Server Options and Variables for NDB Cluster”.)
Если двоичный файл mysqld был скомпилирован с поддержкой кластера, NDBCLUSTER движок хранения по-прежнему отключен по умолчанию. Вы можете использовать одну из двух возможных опций для его включения:
Используйте
--ndbclusterв качестве опции запуска при запуске mysqld.Вставьте строку, содержащую
ndbcluster, в раздел[mysqld]вашего файлаmy.cnf.
Легкий способ проверить, что ваш сервер работает с включенным движком хранения NDBCLUSTER, — выполнить оператор SHOW ENGINES в мониторе MySQL (mysql). Вы должны увидеть значение YES в качестве значения Support в строке для NDBCLUSTER. Если вы видите NO в этой строке или если такой строки нет в выводе, значит, у вас не запущена версия MySQL, поддерживающая NDB. Если вы видите DISABLED в этой строке, вам нужно включить его одним из двух описанных способов.
Для чтения данных конфигурации кластера сервер MySQL требует как минимум трех элементов информации:
Собственный идентификатор узла кластера сервера 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 Connection Strings”.
С этой информацией сервер MySQL может действовать как полноценный участник кластера. (Мы часто называем процесс mysqld, работающий таким образом, узлом SQL.) Он полностью осведомлен обо всех узлах данных кластера и их статусе и устанавливает соединения со всеми узлами данных. В этом случае он может использовать любой узел данных в качестве координатора транзакций и читать и обновлять данные узла.
Вы можете проверить, подключен ли сервер MySQL к кластеру, используя SHOW
PROCESSLIST в клиенте mysql. Если сервер 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.