Spec-Zone.ru › MySQL 8.4

25.5.1 ndbd — Демон узла данных кластера NDB

Бинарник ndbd предоставляет однопоточную версию процесса, используемого для обработки всех данных в таблицах, использующих NDBCLUSTER движок хранения. Этот процесс узла данных позволяет узлу данных выполнять обработку распределённых транзакций, восстановление узла, создание контрольных точек на диск, онлайн-резервное копирование и связанные задачи. В NDB 8.4.1 и более поздних версиях при запуске ndbd записывает предупреждение, аналогичное показанному здесь:

2024-05-28 13:32:16 [ndbd] WARNING  -- Running ndbd with a single thread of
signal execution.  For multi-threaded signal execution run the ndbmtd binary.

ndbmtd — многопоточная версия этого бинарника.

В кластере NDB набор процессов ndbd взаимодействуют для обработки данных. Эти процессы могут выполняться на одном компьютере (хосте) или на разных компьютерах. Соответствия между узлами данных и хостами кластера полностью настраиваются.

Параметры, которые можно использовать с ndbd, показаны в следующей таблице. Дополнительные описания следуют за таблицей.

Примечание

Все эти параметры также применяются к многопоточной версии этой программы (ndbmtd), и вы можете заменить “ndbmtd” на “ndbd” там, где это встречается в этом разделе.

  • --bind-address

    Формат командной строки --bind-address=name
    Тип String
    Значение по умолчанию

    Заставляет ndbd привязываться к определенному сетевому интерфейсу (имя хоста или IP-адрес). Этот параметр не имеет значения по умолчанию.

  • --character-sets-dir

    Формат командной строки --character-sets-dir=path

    Каталог, содержащий кодировки символов.

  • --connect-delay=#

    Формат командной строки --connect-delay=#
    Устарел Да
    Тип Numeric
    Значение по умолчанию 5
    Минимальное значение 0
    Максимальное значение 3600

    Определяет время ожидания между попытками связаться с сервером управления при запуске (количество попыток контролируется параметром --connect-retries). Значение по умолчанию — 5 секунд.

    Этот параметр устарел и может быть удален в будущих версиях NDB Cluster. Используйте --connect-retry-delay вместо него.

  • --connect-retries=#

    Формат командной строки --connect-retries=#
    Тип Numeric
    Значение по умолчанию 12
    Минимальное значение -1
    Максимальное значение 65535

    Устанавливает количество попыток повторного подключения перед отказом; 0 означает только 1 попытку (и без повторных попыток). Значение по умолчанию — 12 попыток. Время ожидания между попытками контролируется параметром --connect-retry-delay.

    Также можно установить этот параметр в -1, в этом случае процесс узла данных будет бесконечно пытаться установить соединение.

  • --connect-retry-delay=#

    Формат командной строки --connect-retry-delay=#
    Тип Numeric
    Значение по умолчанию 5
    Минимальное значение 0
    Максимальное значение 4294967295

    Определяет время ожидания между попытками связаться с сервером управления при запуске (время между попытками контролируется параметром --connect-retries). Значение по умолчанию — 5 секунд.

    Этот параметр заменяет параметр --connect-delay, который теперь устарел и будет удален в будущих версиях NDB Cluster.

    Сокращенная форма -r для этого параметра также устарела и, следовательно, подлежит удалению. Используйте полную форму вместо нее.

  • --connect-string

    Формат командной строки --connect-string=connection_string
    Тип String
    Значение по умолчанию [none]

    То же самое, что и --ndb-connectstring.

  • --core-file

    Формат командной строки --core-file

    Записывает дамп памяти при ошибке; используется для отладки.

  • --daemon, -d

    Формат командной строки --daemon

    Инструктирует ndbd или ndbmtd работать как демон. Это поведение по умолчанию. --nodaemon можно использовать, чтобы предотвратить запуск процесса как демона.

    Этот параметр не оказывает влияния при запуске ndbd или ndbmtd на платформах Windows.

  • --defaults-extra-file

    Формат командной строки --defaults-extra-file=path
    Тип String
    Значение по умолчанию [none]

    Читает указанный файл после чтения глобальных файлов.

  • --defaults-file

    Формат командной строки --defaults-file=path
    Тип String
    Значение по умолчанию [none]

    Читает параметры по умолчанию только из указанного файла.

  • --defaults-group-suffix

    Формат командной строки --defaults-group-suffix=string
    Тип String
    Значение по умолчанию [none]

    Также читает группы с concat(group, suffix).

  • --filesystem-password

    Формат командной строки --filesystem-password=password

    Передает пароль шифрования и дешифрования файловой системы процессу узла данных с помощью stdin, tty или файла my.cnf.

    Требуется EncryptedFileSystem = 1.

    Для получения дополнительной информации см. Раздел 25.6.14, «Шифрование файловой системы для NDB Cluster».

  • --filesystem-password-from-stdin

    Формат командной строки --filesystem-password-from-stdin={TRUE|FALSE}

    Передает пароль шифрования и дешифрования файловой системы процессу узла данных только из stdin.

    Требуется EncryptedFileSystem = 1.

    Для получения дополнительной информации см. Раздел 25.6.14, «Шифрование файловой системы для NDB Cluster».

  • --foreground

    Формат командной строки --foreground

    Принуждает ndbd или ndbmtd работать в фоновом процессе, главным образом для целей отладки. Этот параметр подразумевает параметр --nodaemon.

    Данный параметр не имеет эффекта при запуске ndbd или ndbmtd на платформах Windows.

  • --help

    Формат командной строки --help

    Отображает текст справки и завершает работу.

  • --initial

    Формат командной строки --initial

    Указывает ndbd на выполнение начального запуска. Начальный запуск стирает все файлы, созданные для восстановления предыдущими экземплярами ndbd, и пересоздает файлы журнала восстановления. На некоторых операционных системах этот процесс может занять значительное время.

    Этот параметр также приводит к удалению всех файлов данных, связанных с табличными пространствами данных «Диск» и файлов журнала отмены, связанных с группами файлов журналов, существовавшими ранее на этом узле данных (см. Раздел 25.6.11, «Табличные пространства данных NDB Cluster на диске»).

    Начальный запуск (--initial) следует использовать только в особых случаях при запуске процесса ndbd, так как он приводит к удалению всех файлов из файловой системы NDB Cluster и пересозданию всех файлов журнала повторного применения. Эти обстоятельства перечислены здесь:

    • При выполнении обновления программного обеспечения, изменившего содержимое любых файлов.

    • При перезапуске узла с новой версией ndbd.

    • В качестве крайнего средства, когда по какой-либо причине перезапуск узла или системы неоднократно терпит неудачу. В этом случае следует понимать, что этот узел больше нельзя использовать для восстановления данных из-за уничтожения файлов данных.

    Предупреждение

    Для предотвращения потенциальной потери данных рекомендуется не использовать параметр --initial вместе с StopOnError = 0. Вместо этого установите значение StopOnError в 0 в config.ini только после запуска кластера, затем перезапустите узлы данных в обычном режиме — без параметра --initial. Смотрите описание параметра StopOnError для подробного объяснения этой проблемы. (Ошибка #24945638)

    Использование этого параметра предотвращает действие параметров конфигурации StartPartialTimeout и StartPartitionedTimeout.

    Важно

    Данный параметр не влияет на файлы резервных копий, которые уже были созданы соответствующим узлом.

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

    Допустимо использовать этот параметр при первом запуске кластера (то есть до создания каких-либо файлов узла данных), но это не обязательно.

  • --initial-start

    Формат командной строки --initial-start

    Этот параметр используется при выполнении частичного начального запуска кластера. Каждый узел должен быть запущен с этим параметром, а также с параметром --nowait-nodes.

    Предположим, у вас есть кластер из 4 узлов, узлы данных которых имеют идентификаторы 2, 3, 4 и 5, и вы хотите выполнить частичный начальный запуск, используя только узлы 2, 4 и 5, то есть исключив узел 3:

    $> ndbd --ndb-nodeid=2 --nowait-nodes=3 --initial-start
    $> ndbd --ndb-nodeid=4 --nowait-nodes=3 --initial-start
    $> ndbd --ndb-nodeid=5 --nowait-nodes=3 --initial-start
    

    При использовании этого параметра необходимо также указать идентификатор узла для запускаемого узла данных с помощью параметра --ndb-nodeid.

    Важно

    Не путайте этот параметр с параметром --nowait-nodes для ndb_mgmd, который можно использовать для запуска кластера с несколькими серверами управления без необходимости запуска всех серверов управления.

  • --install[=name]

    Формат командной строки --install[=name]
    Платформа Windows
    Тип Строка
    Значение по умолчанию ndbd

    Принуждает ndbd к установке в качестве службы Windows. Необязательно, можно указать имя службы; если не указано, имя службы по умолчанию ndbd. Хотя предпочтительнее указывать другие параметры программы ndbd в файлах конфигурации my.ini или my.cnf, можно использовать вместе с --install. Однако в таких случаях параметр --install должен быть указан первым, прежде чем будут указаны другие параметры, для успешной установки службы Windows.

    Обычно не рекомендуется использовать этот параметр вместе с параметром --initial, так как это приводит к очистке и пересозданию файловой системы узла данных каждый раз при остановке и запуске службы. Следует также соблюдать особую осторожность, если вы намерены использовать другие параметры ndbd, влияющие на запуск узлов данных, включая --initial-start, --nostart и --nowait-nodes вместе с --install, и вы должны быть абсолютно уверены, что полностью понимаете и учитываете все возможные последствия.

    Параметр --install не влияет на платформы, отличные от Windows.

  • --logbuffer-size=#

    Формат командной строки --logbuffer-size=#
    Тип Целое число
    Значение по умолчанию 32768
    Минимальное значение 2048
    Максимальное значение 4294967295

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

  • --login-path

    Формат командной строки --login-path=path
    Тип String
    Значение по умолчанию [none]

    Считывает заданный путь из файла входа.

  • --no-login-paths

    Формат командной строки --no-login-paths

    Пропускает чтение параметров из файла пути входа.

  • --ndb-connectstring

    Формат командной строки --ndb-connectstring=connection_string
    Тип String
    Значение по умолчанию [none]

    Устанавливает строку подключения для соединения с ndb_mgmd. Синтаксис: [nodeid=id;][host=]hostname[:port]. Перезаписывает записи в NDB_CONNECTSTRING и my.cnf.

  • --ndb-mgmd-host

    Формат командной строки --ndb-mgmd-host=connection_string
    Тип String
    Значение по умолчанию [none]

    То же самое, что и --ndb-connectstring.

  • --ndb-mgm-tls

    Формат командной строки --ndb-mgm-tls=level
    Тип Enumeration
    Значение по умолчанию relaxed
    Допустимые значения

    relaxed

    strict

    Устанавливает уровень поддержки TLS, необходимый для подключения к серверу управления; один из relaxed или strict. relaxed (по умолчанию) означает, что попытка установить соединение TLS будет предпринята, но успех не обязателен; strict означает, что для подключения требуется TLS.

  • --ndb-nodeid

    Формат командной строки --ndb-nodeid=#
    Тип Integer
    Значение по умолчанию [none]

    Устанавливает идентификатор узла для этого узла, переопределяя любой идентификатор, установленный с помощью --ndb-connectstring.

  • --ndb-optimized-node-selection

    Формат командной строки --ndb-optimized-node-selection

    Включает оптимизацию выбора узлов для транзакций. Включено по умолчанию; используйте --skip-ndb-optimized-node-selection для отключения.

  • --ndb-tls-search-path

    Формат командной строки --ndb-tls-search-path=list
    Тип Путь
    Значение по умолчанию (Unix) $HOME/ndb-tls
    Значение по умолчанию (Windows) $HOMEDIR/ndb-tls

    Указывает список каталогов для поиска файла CA. На платформах Unix имена каталогов разделяются двоеточиями (:); в системах Windows в качестве разделителя используется символ точки с запятой (;). Ссылка на каталог может быть относительной или абсолютной; она может содержать одну или несколько переменных среды, каждая из которых обозначается предшествующим знаком доллара ($), и расширяется перед использованием.

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

    Если путь поиска не указан, используется встроенное значение по умолчанию. Это значение зависит от используемой платформы: в Windows это \ndb-tls; на других платформах (включая Linux) это $HOME/ndb-tls. Это можно переопределить, скомпилировав NDB Cluster с использованием -DWITH_NDB_TLS_SEARCH_PATH.

  • --nodaemon

    Формат командной строки --nodaemon

    Предотвращает выполнение ndbd или ndbmtd в качестве демона. Эта опция переопределяет опцию --daemon. Это полезно для перенаправления вывода на экран при отладке двоичного файла.

    Поведение по умолчанию для ndbd и ndbmtd в Windows — это запуск на переднем плане, что делает эту опцию ненужной на платформах Windows, где она не оказывает никакого влияния.

  • --no-defaults

    Формат командной строки --no-defaults

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

  • --nostart, -n

    Формат командной строки --nostart

    Инструктирует ndbd не запускаться автоматически. Когда используется этот параметр, ndbd подключается к серверу управления, получает от него данные конфигурации и инициализирует объекты связи. Однако он фактически не запускает ядро выполнения, пока сервер управления не запросит его сделать это. Это можно сделать, отправив соответствующую команду START в клиенте управления (см. Раздел 25.6.1, «Команды в клиенте управления кластером NDB»).

  • --nowait-nodes=node_id_1[, node_id_2[, ...]]

    Формат командной строки --nowait-nodes=list
    Тип String
    Значение по умолчанию

    Этот параметр принимает список узлов данных, для которых кластер не ожидает перед запуском.

    Это можно использовать для запуска кластера в раздробленном состоянии. Например, чтобы запустить кластер только с половиной узлов данных (узлы 2, 3, 4 и 5) в кластере из 4 узлов, можно запустить каждый процесс ndbd с помощью --nowait-nodes=3,5. В этом случае кластер запускается, как только подключаются узлы 2 и 4, и не ожидает StartPartitionedTimeout миллисекунд подключения узлов 3 и 5, как это было бы в противном случае.

    Если бы вы хотели запустить тот же кластер, что и в предыдущем примере, без одного ndbd (скажем, например, что хост-машина для узла 3 столкнулась с аппаратным сбоем), то запустите узлы 2, 4 и 5 с --nowait-nodes=3. Затем кластер запускается, как только подключаются узлы 2, 4 и 5, и не ждет запуска узла 3.

  • --print-defaults

    Формат командной строки --print-defaults

    Выводит список аргументов программы и завершает работу.

  • --remove[=name]

    Формат командной строки --remove[=name]
    Специфично для платформы Windows
    Тип Строка
    Значение по умолчанию ndbd

    Удаляет процесс ndbd, ранее установленный как служба Windows. Дополнительно можно указать имя службы для удаления; если не задано, имя службы по умолчанию равно ndbd.

    Опция --remove не оказывает влияния на платформы, отличные от Windows.

  • --usage

    Формат командной строки --usage

    Отображает текст справки и завершает работу; то же, что и --help.

  • --verbose, -v

    Выводит дополнительную отладочную информацию в журнал узла.

    Вы также можете использовать NODELOG DEBUG ON и NODELOG DEBUG OFF для включения и выключения этой дополнительной записи журнала во время работы узла данных.

  • --version

    Формат командной строки --version

    Отображает информацию о версии и завершает работу.

ndbd создаёт набор лог-файлов, размещаемых в директории, указанной в файле конфигурации DataDir в разделе config.ini.

Эти лог-файлы перечислены ниже. node_id представляет собой уникальный идентификатор узла. Например, ndb_2_error.log — это журнал ошибок, генерируемый узлом данных с идентификатором узла 2.

  • ndb_node_id_error.log — файл, содержащий записи всех сбоев, которые произошли в процессе работы ndbd. Каждая запись в этом файле содержит краткое описание ошибки и ссылку на файл трассировки для этого сбоя. Пример записи в этом файле:

    Date/Time: Saturday 30 July 2004 - 00:20:01
    Type of error: error
    Message: Internal program error (failed ndbrequire)
    Fault ID: 2341
    Problem data: DbtupFixAlloc.cpp
    Object of reference: DBTUP (Line: 173)
    ProgramName: NDB Kernel
    ProcessID: 14909
    TraceFile: ndb_2_trace.log.2
    ***EOM***
    

    Список возможных кодов возврата и сообщений ndbd, генерируемых при преждевременном завершении процесса узла данных, можно найти в Сообщения об ошибках узла данных.

    Важно

    Последняя запись в файле журнала ошибок не обязательно является самой новой (скорее всего, нет). Записи в журнале ошибок не упорядочены по времени; они соответствуют порядку файлов трассировки, как определено в файле ndb_node_id_trace.log.next (см. ниже). Следовательно, записи в журнале ошибок перезаписываются циклически, а не последовательно.

  • ndb_node_id_trace.log.trace_id — файл трассировки, описывающий то, что произошло непосредственно перед ошибкой. Эта информация полезна для анализа командой разработчиков кластера NDB.

    Можно настроить количество файлов трассировки, создаваемых до перезаписи старых файлов. trace_id — это число, увеличивающееся для каждого последующего файла трассировки.

  • ndb_node_id_trace.log.next — файл, отслеживающий следующий номер файла трассировки.

  • ndb_node_id_out.log — файл, содержащий любые данные, выводимые процессом ndbd. Этот файл создаётся только в том случае, если ndbd запущен как демон, что является стандартным поведением.

  • ndb_node_id.pid — файл, содержащий идентификатор процесса ndbd при запуске в качестве демона. Также выполняет функцию файла блокировки для предотвращения запуска узлов с одинаковым идентификатором.

  • ndb_node_id_signal.log — файл, используемый только в отладочных версиях ndbd, где можно отслеживать все входящие, исходящие и внутренние сообщения с данными в процессе ndbd.

Рекомендуется не использовать директории, смонтированные через NFS, так как в некоторых средах это может привести к проблемам, связанным с сохранением блокировки файла .pid даже после завершения процесса.

Для запуска ndbd может потребоваться указать имя хоста сервера управления и порт, на котором он прослушивает. Также можно указать идентификатор узла, который должен использовать процесс.

$> ndbd --connect-string="nodeid=2;host=ndb_mgmd.mysql.com:1186"

Дополнительную информацию об этом вопросе см. в разделе 25.4.3.3, «Строки подключения к кластеру NDB». Дополнительные сведения о параметрах конфигурации узлов данных см. в разделе 25.4.3.6, «Определение узлов данных кластера NDB».

При запуске ndbd фактически запускаются два процесса. Первый называется “процессом-ангелом”; его единственная задача — определить момент завершения процесса выполнения и перезапустить процесс ndbd, если это настроено. Таким образом, если вы пытаетесь убить ndbd с помощью команды Unix kill, необходимо убить оба процесса, начиная с процесса-ангела. Предпочтительный метод завершения процесса ndbd — использование клиента управления и остановки процесса оттуда.

Процесс выполнения использует один поток для чтения, записи и сканирования данных, а также для всех других действий. Этот поток реализован асинхронно, чтобы он мог легко обрабатывать тысячи одновременных операций. Кроме того, поток-сторож контролирует поток выполнения, чтобы убедиться, что он не застревает в бесконечном цикле. Пул потоков обрабатывает ввод-вывод файлов, каждый поток может обрабатывать один открытый файл. Потоки также могут использоваться для подключений транспортеров транспортерами в процессе ndbd. В системе с несколькими процессорами, выполняющей большое количество операций (включая обновления), процесс ndbd может потреблять до 2 ЦП, если ему это разрешено.

Для машины с множеством ЦП можно использовать несколько процессов ndbd, принадлежащих различным группам узлов; однако такая конфигурация всё ещё считается экспериментальной и не поддерживается для MySQL 8.4 в рабочей среде. См. раздел 25.2.7, «Известные ограничения кластера NDB».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/mysql-cluster-programs-ndbd.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API