Spec-Zone.ru › MySQL 5.7

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

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

Таблица 21.22 Опции командной строки, используемые с программой ndbd

Таблица 21.22 Опции командной строки, используемые с программой ndbd
Формат Описание Добавлен, устарел или удален

--bind-address=name

Локальный адрес привязки

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--character-sets-dir=path

Директория, содержащая наборы символов

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--connect-delay=#

Устаревший синоним для --connect-retry-delay, который следует использовать вместо этой опции

УДАЛЕНО: NDB 7.5.25, NDB 7.6.21

--connect-retries=#

Устанавливает количество попыток повторного подключения перед отказом; 0 означает только 1 попытка (и без повторных попыток); -1 означает продолжать попытки неопределённое время

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--connect-retry-delay=#

Время ожидания между попытками связи с сервером управления в секундах; 0 означает не ждать между попытками

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--connect-string=connection_string,

-c connection_string

То же, что и --ndb-connectstring

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--core-file

Создать файл core при ошибке; используется при отладке

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--daemon,

-d

Запустить ndbd как демон (по умолчанию); переопределить с помощью --nodaemon

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--defaults-extra-file=path

Прочитать заданный файл после чтения глобальных файлов

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--defaults-file=path

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

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--defaults-group-suffix=string

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

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--foreground

Запустить ndbd в фоновом режиме, для целей отладки (подразумевает --nodaemon)

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--help,

-?

Отобразить текст справки и выйти

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--initial

Выполнить начальный запуск ndbd, включая очистку файловой системы; обратитесь к документации перед использованием этой опции

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--initial-start

Выполнить частичный начальный запуск (требуется --nowait-nodes)

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--install[=name]

Используется для установки процесса узла данных в качестве службы Windows; не применяется на других платформах

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--logbuffer-size=#

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

ДОБАВЛЕНО: NDB 7.6.6

--login-path=path

Прочитать указанный путь из файла входа

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--ndb-connectstring=connection_string,

-c connection_string

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

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--ndb-mgmd-host=connection_string,

-c connection_string

То же, что и --ndb-connectstring

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--ndb-nodeid=#

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

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--nodaemon

Не запускать ndbd как демон; для целей тестирования

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--no-defaults

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

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--nostart,

-n

Не запускать ndbd немедленно; ndbd ожидает команды запуска от ndb_mgm

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--nowait-nodes=list

Не ждать запуска этих узлов данных (принимает список идентификаторов узлов через запятую); требуется --ndb-nodeid

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--ndb-optimized-node-selection

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

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--print-defaults

Вывести список аргументов программы и выйти

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--remove[=name]

Используется для удаления процесса узла данных, который ранее был установлен в качестве службы Windows; не применяется на других платформах

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--usage,

-?

Отобразить текст справки и выйти; то же, что и --help

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--verbose,

-v

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

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)

--version,

-V

Отобразить информацию о версии и выйти

(Поддерживается во всех выпусках NDB на основе MySQL 5.7)


Примечание

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

END_OF_DOCUMENT_MARKER
  • --bind-address

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

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

  • --character-sets-dir

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

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

  • --connect-delay=#

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

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

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

  • --connect-retries=#

    Формат командной строки --connect-retries=#
    Тип Numeric
    Значение по умолчанию 12
    Минимальное значение (≥ 5.7.36-ndb-7.6.21) -1
    Минимальное значение (≥ 5.7.36-ndb-7.5.25) -1
    Минимальное значение (≤ 5.7.36-ndb-7.5.24) 0
    Минимальное значение (≤ 5.7.36-ndb-7.6.20) 0
    Минимальное значение 0
    Максимальное значение 65535

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

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

  • --connect-retry-delay=#

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

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

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

    Сокращенная форма -r для этого параметра устарела, начиная с NDB 7.5.25 и NDB 7.6.21, и может быть удалена в будущей версии NDB Cluster. Используйте полную форму вместо неё.

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

  • --foreground

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

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

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

  • --help

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

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

  • --initial

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

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

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

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

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

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

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

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

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

    Важно

    Этот параметр не влияет на следующие типы файлов:

    • Файлы резервных копий, которые уже были созданы затронутым узлом

    • Файлы данных NDB Cluster Disk (см. Раздел 21.6.11, «Таблицы данных NDB Cluster Disk»).

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

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

  • --initial-start

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

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

    Предположим, у вас есть кластер из 4 узлов, узлы данных которых имеют ID 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=#
    Введено 5.7.22-ndb-7.6.6
    Тип Целое число
    Значение по умолчанию 32768
    Минимальное значение 2048
    Максимальное значение 4294967295

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

  • --login-path

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

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

  • --ndb-connectstring

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

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

  • --ndb-mgmd-host

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

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

  • --ndb-nodeid

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

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

  • --ndb-optimized-node-selection

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

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

  • --nodaemon

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

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

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

  • --no-defaults

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

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

  • --nostart, -n

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

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

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

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

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

    Это можно использовать для запуска кластера в разнесённом состоянии. Например, для запуска кластера только с половиной узлов данных (узлы 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

    Приводит к записи дополнительного отладочного вывода в журнал узла.

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

  • --version

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

    Отображение информации о версии и выход.

ndbd генерирует набор файлов журнала, которые размещаются в каталоге, указанном в файле конфигурации config.ini по параметру DataDir.

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

END_OF_DOCUMENT_MARKER
  • Файл 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"

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

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

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

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

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

Spec-Zone.ru

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