Spec-Zone.ru › MySQL 9.2

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

Бинарный файл ndbd предоставляет однопоточную версию процесса, который используется для обработки всех данных в таблицах, использующих движок хранения NDBCLUSTER. Этот процесс узла данных позволяет узлу данных выполнять обработку распределённых транзакций, восстановление узла, создание контрольных точек на диске, онлайн-резервное копирование и связанные задачи. При запуске 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, показаны в следующей таблице. Дополнительные описания следуют за таблицей.

Примечание

Все эти параметры также применяются к многопоточной версии этой программы (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 означает только одну попытку (и без повторов). Значение по умолчанию — 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

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

  • --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 Cluster.

    Можно настроить количество таких файлов отслеживания, которые создаются до перезаписи старых. 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 Cluster». Дополнительную информацию о параметрах конфигурации узла данных см. в Раздел 25.4.3.6, «Определение узлов данных NDB Cluster».

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

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

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

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

Spec-Zone.ru

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