WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Резюме В этой главе рассматриваются NDB Cluster Management API, C API,
который используется для задач администрирования, таких как старт и остановка
узлов, резервные копии и регистрации. Это также покрывает понятия MGM API,
программные конструкции и типы событий.
Для каждой API-функции MGM нужен обработчик сервера типа
См. разделы 3.2.3.1 и
3.2.3.4
для получения дополнительной информации об этих двух функциях. Вы не должны разделять Функция может возвратить любое из следующего: Целочисленное значение, Непостоянное значение указателя. Постоянное значение указателя. Состояние ошибки может быть определено при помощи соответствующих функций
сообщения об ошибке
Вот пример использования MGM API (без обработки ошибок для краткости): Узлы данных и серверы управления регулярно и в определенных случаях
сообщают относительно различных событий регистрации, которые происходят.
Эти события регистрации написаны в журнал кластера. Произвольно клиент MGM
API может слушать эти события, используя метод
Регистрацией событий управляют функции
Это пример, показывающий, как слушать события,
связанные с резервной копией: Следующие шаги используются: Создайте Ждите и сохраните события регистрации с использованием
Данные о событии регистрации доступны в структуре
Следующий пример кода демонстрирует слушание событий,
связанных с резервными копиями: См. раздел 3.2.1. Доступные типы событий регистрации перечисляются в
разделе 3.3.4, а также в
файле Резюме Эта секция покрывает структуры и функции, используемые в MGM API.
Списки сгруппированы целью или использованием. Резюме Эта секция обсуждает функции, которые используются,
чтобы зарегистрировать события. Описание. Эта функция используется, чтобы послушать события
регистрации, которые прочитаны из дескриптора файла.
События используют основанный на тексте формат, как в регистрации кластера.
Сигнатура. Параметры. Эта функция берет два аргумента: Возвращаемое значение. Дескриптор файла, из которого должны
быть прочитаны события. Описание. Эта функция используется, чтобы создать
обработчик событий регистрации. Сигнатура. Параметры. Эта функция берет два аргумента: Возвращаемое значение. Обработчик событий регистрации. Описание. Используйте эту функцию, чтобы уничтожить обработчик
событий регистрации, когда не будет никакой дальнейшей потребности в нем. Сигнатура. Параметры. Указатель на событие регистрации
Возвращаемое значение.
Нет. Описание. Эта функция восстанавливает дескриптор файла из
Не пытайтесь читать от дескриптора файла, возвращенного этой функцией,
это может заставить описатель становиться испорченным. Сигнатура. Параметры. Возвращаемое значение. Дескриптор файла. В случае неудачи
Описание. Эта функция используется, чтобы восстановить следующее
событие регистрации, используя данные из события, чтобы заполнить
структуру Сигнатура. До NDB 7.2.14 и NDB 7.3.2 события регистрации
Параметры. Три параметра ожидаются этой функцией: Указатель на структуру данных
Количество миллисекунд, чтобы ждать события до тайм-аута, передача
Возвращаемое значение. Значение, возвращенное этой функцией,
интерпретируется следующим образом: Если возвращаемое значение меньше чем или
равно нолю, то Описание. Эта функция используется, чтобы получить
следующее событие регистрации, используя данные из события, чтобы заполнить
структуру Сигнатура. Параметры. Три параметра ожидаются этой функцией: An Указатель на структуру Количество миллисекунд, чтобы ждать события до тайм-аута,
Возвращаемое значение. Значение, возвращенная этой функцией,
интерпретируется следующим образом: Если возвращаемое значение меньше чем или
равно нолю, то Описание. Эта функция получает код ошибки. Можно предпочесть использовать
Сигнатура. Параметры. Обработчик событий регистрации. Возвращаемое значение. Код ошибки. Описание. Получает текст новой ошибки, полученной, пытаясь
прочитать события регистрации. Сигнатура. Параметры. Обработчик событий регистрации. Возвращаемое значение. Текст сообщения об ошибке. Резюме Функции MGM API, используемые для обработки ошибок,
обсуждены в этой секции. Каждая ошибка MGM API характеризуется кодом ошибки и сообщением об ошибке.
Может также быть описание ошибки, которое может предоставить дополнительную
информацию об ошибке. API обеспечивает функции, чтобы получить эту
информацию в случае ошибки. Описание. Эта функция используется, чтобы связать последний код
ошибки с данным обработчиком сервера управления. До NDB 7.4.8 эта функция не была безопасна для использования с
Сигнатура. Параметры. Возвращаемое значение. Код ошибки, соответствующий
Описание. Эта функция используется, чтобы получить последнее общее
сообщение об ошибке, связанное с До NDB 7.4.8 эта функция не была безопасна для использования с
Сигнатура. Параметры. Возвращаемое значение. Текст сообщения об ошибке.
Более определенная информация может быть получена, используя
Описание. Получает новое описание ошибки, связанной с
До NDB 7.4.8 эта функция не была безопасна для использования с
Сигнатура. Параметры. Возвращаемое значение. Текст описания ошибки. Описание. Функция может использоваться, чтобы установить
поток вывода ошибок. Сигнатура. Параметры. Эта функция требует двух параметров: Указатель на файл, в который должны быть посланы ошибки. Возвращаемое значение.
Нет. Резюме Эта секция содержит информацию об API-функциях MGM используемых, чтобы
создать и уничтожить обработчик сервера управления. Описание. Эта функция используется, чтобы создать
обработчик сервера управления. Сигнатура. Параметры. Нет. Возвращаемое значение. Описание. Эта функция может использоваться, чтобы определить имя
для обработчика сервера управления, о котором
сообщают в регистрации кластера. Сигнатура. Параметры. Эта функция берет два аргумента: Сервер управления Желаемое Возвращаемое значение.
Нет. Описание. MGM API по умолчанию устанавливает обработчик
сигнала, который игнорирует все Сигнатура. Параметры. Эта функция берет два параметра: Обработчик сервера управления. Целочисленное значение, которое определяет
Возвращаемое значение.
Нет. Описание. Эта функция уничтожает обработчик сервера управления. Сигнатура. Параметры. Указатель на Возвращаемое значение.
Нет. Резюме Эта секция обсуждает API-функции MGM, которые используются, чтобы начать,
формировать и закончить связи с сервером управления
Описание. Эта функция получает
строку подключения, используемую для связи. Эта функция возвращает строку подключения по умолчанию если никакого
вызова
Формат строки подключения совпадает с обсужденным в
разделе 3.2.4.10. Сигнатура. Параметры. Эта функция берет три аргумента: Указатель на Размер Возвращаемое значение. Строка подключения это
то же самое значение, которое передано в
Описание. Эта функция получает ID узла, к которому
было сделано подключение. Сигнатура. Параметры. Обработчик сервера управления. Возвращаемое значение. A node ID. Описание. Эта функция получает номер порта, используемого связью.
Сигнатура. Параметры. Возвращаемое значение. Номер порта. Описание. Эта функция используется, чтобы получить имя хоста, с
которым установлена связь. Сигнатура. Параметры. Обработчик сервера управления
Возвращаемое значение. Имя хоста. Описание. Учитывая обработчик сервера управления, эта функция
получает информацию о версии сервера MySQL и механизма хранения
Сигнатура. Параметры. Строка версии использует формат
Возвращаемое значение.
Описание. Используется, чтобы определить, была
ли связь установлена. Эта функция не определяет, есть ли рабочий
сервер управления на другом конце связи. Используйте
Сигнатура. Параметры. Сервер управления
Возвращаемое значение. Эта функция возвращает целое число, значение
которого интерпретируется следующим образом: Любое ненулевое значение: связь была установлена с узлом управления.
Описание. Эта функция может использоваться, чтобы определить,
работает ли сервер управления на данной связи. Сигнатура. Параметры. Возвращаемое значение. В NDB 7.5 и позже эта функция возвращает
0 при успехе, -1, когда обработчик пустой и -2, если не связан. В NDB 7.4 и ранее, эта функция возвращает -1 в случае ошибки,
иначе это возвратит 0, даже когда обработчик сервера управления был NULL или
когда проверка связи потерпела неудачу (Bug #53242, Bug #11760802). Описание. Это функция удобства, которая обеспечивает легкий способ
определить количество серверов управления, на которые ссылаются в строке
подключения, как установлено использованием
Сигнатура. Параметры. Обработчик управления
( Возвращаемое значение. При успехе неотрицательное целое число,
отрицательное целое число указывает на неудачу. Описание. Эта функция позволяет установить локальный адрес для
сервера управления. Если используется, это нужно вызвать прежде, чем
соединиться с сервером управления. Сигнатура. Параметры. Эта функция берет два параметра: Обработчик управления ( Строка Возвращаемое значение. Вернет integer: Любое ненулевое значение указывает на неудачу
(адрес не был действителен). Об ошибках, вызванных другими причинами, при действительном местном адресе
не сообщают, пока связь с управлением на самом деле не предпринята.
Описание. Эта функция используется, чтобы установить строку
подключения для связи сервера управления с узлом. Сигнатура. Параметры. Сервер управления A
Возможно установить связи с многими серверами управления, используя
единственную строку подключения. Возвращаемое значение. Эта функция вернет
Описание. Эта функция устанавливает ID узла подключения. Сигнатура. Параметры. Эта функция требует двух параметров: Возвращаемое значение. Эта функция вернет
Описание. Обычно сетевой тайм-аут 60 секунд. Эта функция разрешает
вам варьировать это время. Тайм-аут, установленный этой функцией, применяется не только к
установлению сетевых соединений, но и к
каждой операции, требующей
коммуникации, используя сетевое соединение. Это включает каждое чтение или
запись по сети, выполненное любой API-функцией MGM, методом NDB API или
ndb_mgm. Сигнатура. Параметры. Эта функция берет два параметра: Обработчик сервера управления
( Количество времени, чтобы ждать, в миллисекундах. Возвращаемое значение. Описание. Эта функция устанавливает связь с сервером управления,
определенным строкой подключения, установленной в
разделе 3.2.4.10. Сигнатура. Параметры. Эта функция берет 4 аргумента: Сервер управления Количество повторов Число секунд Если Возвращаемое значение. Эта функция вернет
Описание. Эта функция заканчивает связь с сервером управления. Сигнатура. Параметры. Возвращаемое значение. Вернет Резюме Эта секция обсуждает, как получить информацию о статусе из
узлов кластера NDB. Описание. Эта функция используется, чтобы получить статус
узлов в NDB Cluster. Вызывающий должен освободить указатель, возвращенный этой функцией. Сигнатура. Параметры. Эта функция берет единственный параметр, сервер
управления Возвращаемое значение. Указатель на структуру данных
Описание. Эта функция подобна
Вызывающий должен освободить указатель, возвращенный этой функцией. Сигнатура. Параметры. Эта функция берет два параметра: Сервер управления Указатель на множество типов узлов, которые будут проверены. Это
значения
Возвращаемое значение. Указатель на структуру данных
Описание. Эта функция может использоваться, чтобы сбросить в дамп
отладочную информацию в журнал кластера. Клиент управления NDB Cluster
Сигнатура. Параметры. Эта функция берет следующие параметры: Обработчик сервера управления
( Множество Возвращаемое значение. Пример. У следующего примера есть тот же самый результат как у
выполнения в клиенте управления команды
Резюме MGM API обеспечивает несколько функций, которые могут использоваться,
чтобы начать, остановить и перезапустить один или несколько узлов данных.
Эти функции обсуждены в этой секции. Старт, остановка и перезапуск узлов. Можно начать, остановить
и перезапустить узлы кластера, используя следующие функции, которые описаны
более подробно в следующих нескольких секциях. Старт узлов.
Остановка узлов.
Обычно вы не можете использовать ни одну из этих функций, чтобы остановить
узел, в то время как другие узлы запускаются. Можно отвергнуть это
ограничение с использованием
Перезапуск узлов.
Обычно вы не можете использовать ни одну из этих функций, чтобы остановить
узел, в то время как другие узлы запускаются. Можно отвергнуть это
ограничение с использованием
Описание. Эта функция может использоваться, чтобы запустить один
или несколько узлов кластера. Узлы, которые будут запущены, были запущены с
опцией no-start ( Сигнатура. Параметры. Возвращаемое значение. Количество узлов, которое на самом деле
запущено, в случае неудачи ваозвращается Описание. Эта функция останавливает один или
несколько узлов данных. Сигнатура. Параметры. Возвращаемое значение. Сколько узлов на самом деле остановлено,
в случае неудачи Описание. Аналог
Сигнатура. Параметры. Возвращаемое значение. Сколько узлов на самом деле остановлено,
в случае неудачи Описание. Аналог
Сигнатура. Параметры. A Если Возвращаемое значение. Сколько узлов на самом деле остановлено,
в случае неудачи Описание. Аналогично прочим Сигнатура. Параметры. Если Возвращаемое значение. Сколько узлов на самом деле остановлено,
в случае неудачи Описание. Эта функция может использоваться, чтобы перезапустить
один или несколько узлов данных. Сигнатура. Параметры. Вызов этой функции равнозначен: См. раздел 3.2.6.7. Возвращаемое значение. Сколько узлов на самом деле остановлено,
в случае неудачи Описание. Аналог
Сигнатура. Параметры. Если Если Если Возвращаемое значение. Сколько узлов на самом деле перезапущено,
в случае неудачи Описание. Аналог
Сигнатура. Параметры. Если Если Если Если Возвращаемое значение. Сколько узлов на самом деле перезапущено,
в случае неудачи Описание. Аналог
Сигнатура. Параметры. Если Если Если Если Возвращаемое значение. Сколько узлов на самом деле перезапущено,
в случае неудачи Резюме Эта секция покрывает функции, доступные в MGM API для управления
выводом регистрации кластера. Описание. Эта функция используется, чтобы получить фильтр
важности регистрации кластера. Сигнатура. Параметры. Вектор Возвращаемое значение. Номер уровня важности
или Описание. Эта функция используется, чтобы установить
фильтр важности регистрации. Сигнатура. Параметры. Эта функция берет 4 параметра: Сервер управления Уровень важности Флаг Указатель на структуру
Возвращаемое значение.
Описание. Эта функция используется, чтобы получить категорию
регистрации и информацию об уровне, ориентирована
на многопотоковое исполнение. Сигнатура. Параметры. Обработчик Вектор Размер Возвращаемое значение. Эта функция возвращает количество
возвращенных уровней или Описание. Эта функция используется, чтобы установить категорию
регистрации и уровни для регистрации кластера. Сигнатура. Параметры. Эта функция берет 5 параметров: An Событие Уровень регистрации Указатель на структуру
Возвращаемое значение. В случае ошибки эта функция вернет
Резюме Эта секция покрывает функции, обеспеченные в MGM API для старта и
остановки резервных копий. Описание. Эта функция используется, чтобы начать резервную
копию кластера NDB. Сигнатура. Параметры. Эта функция требует 4 параметров: Обработчик Флаг Никакой Указатель на структуру
Возвращаемое значение. В случае неудачи функция вернет
Описание. Эта функция используется, чтобы остановить
резервную копию кластера. Сигнатура. Параметры. Эта функция берет 3 параметра: Указатель на структуру
Возвращаемое значение. В случае ошибки эта функция вернет
Резюме MGM API позволяет программисту поместить кластер
в однопользовательский режим и возвратить его к нормальному режиму
из приложения. Эта секция покрывает функции, которые используются
для этих операций. Описание. Эта функция используется, чтобы войти в
однопользовательский режим в данном узле. Сигнатура. Параметры. Эта функция берет 3 параметра: An Указатель на структуру
Возвращаемое значение.
Вернет Описание. Эта функция используется, чтобы выйти из
однопользовательского режима и возвратиться к нормальному функционированию.
Сигнатура. Параметры. Эта функция требует 2 аргументов: Указатель на
Возвращаемое значение.
Вернет Резюме Эта секция обсуждает типы данных, определенные MGM API. Типы, описанные в этой секции, все определяются в файле
Описание. Это используется, чтобы классифицировать различные типы
узлов в NDB Cluster. Перечисляемые значения.
Возможные значения, наряду с описаниями, показаны в следующей таблице: Таблица 3.1. Значения и описания типа
ndb_mgm_node_type. Описание. Этот тип описывает статус узла кластера. Перечисляемые значения.
Возможные значения, наряду с описаниями, показаны в следующей таблице: Таблица 3.2. Тип ndb_mgm_node_status.
Описание. Значения для этого типа коды ошибок, которые могут быть
произведены API-функциями MGM. Они могут быть найдены в
разделе 3.5. См. раздел 3.2.2.1.
Описание. Это типы событий регистрации, доступных в MGM API,
сгруппированные категорией событий. См.
раздел 3.3.7. Перечисляемые значения.
Возможные значения, наряду с описаниями, показаны в следующей таблице:
Таблица 3.3. Тип Ndb_logevent_type
Описание. Это важность событий журнала, используемая, чтобы
отфильтровать регистрацию кластера через
Перечисляемые значения.
Возможные значения, наряду с описаниями, показаны в следующей таблице: Таблица 3.4. См. разделы
3.2.7.2 и 3.2.1.1. Описание. Этот тип используется, чтобы описать
ошибки событий регистрации. Перечисляемые значения.
Возможные значения, наряду с описаниями, показаны в следующей таблице: Таблица 3.5. Описание. Это категории событий регистрации, на которые ссылаются в
разделе 3.3.4.
Они также используются API-функциями MGM
Перечисляемые значения.
Возможные значения, наряду с описаниями, показаны в следующей таблице: Таблица 3.6. См. разделы
3.2.7.4 и 3.2.1.1. Резюме Эта секция покрывает программные структуры, доступные в MGM API. Описание. Эта структура моделирует событие кластера регистрации и
используется для того, чтобы сохранить и восстановить
информацию о событии регистрации. Определение.
Восьмой элемент структуры содержит данные, определенные для события
регистрации, и зависит от его типа. Это определяется как союз многих структур
данных, каждая соответствующая типу события регистрации.
Которую структуру использовать определяется значением
Таблица 3.7. Описание. Предоставляет информацию о статусе узла кластера. Определение. Эта структура содержит следующих участников: См. раздел 3.3.1. См. раздел 3.3.2.
Это действительно только если
Действительно только для узлов данных
(ndbd).
Действительно только для узлов данных
(ndbd).
Описание. Предоставляет информацию о статусе всех узлов кластера.
Эта структура возвращена
Определение. У этой структуры есть следующие два участника: Каждый элемент этого массива является структурой
См. раздел 3.2.5.1. Описание. Содержит информацию об ответе, состоящую из кода ответа и
соответствующего сообщения, от сервера управления. Определение. Эта структура содержит двух участников,
как показано здесь: Для кодов ошибок посмотрите раздел
3.3.3. См. разделы 3.2.2.1
и 3.2.2.2. Следующие разделы перечисляют значения ошибок
ошибки запроса ошибки распределения ID узлов сервисные ошибки резервные ошибки ошибки однопользовательского режима общие ошибки использования Есть только одна общая ошибка использования. Это ошибки, произведенные отказами соединиться с сервером управления. Таблица 3.8. Эти ошибки следуют из отказа назначить узлу ID. Таблица 3.9. Эти ошибки следуют из неудачи узла или кластера при запуске,
закрытии или перезапуске. Таблица 3.10. Это ошибки, которые следуют из проблем с инициированием или
прерыванием резервных копий. Таблица 3.11. Эти ошибки следуют из отказов войти или выйти
из однопользовательского режима. Таблица 3.12. Это общий ошибочный тип для ошибок, которые являются
не поддающимися классификации. Таблица 3.13. Эта секция содержит примеры работы с MGM API. Этот пример показывает основы обработки регистрации событий,
используя MGM API. Исходный код для этой программы может быть найден в исходном дереве
кластера NDB в файле
Этот пример иллюстрирует обработку событий регистрации, используя MGM API
на многократных кластерах в отдельном приложении. Исходный код для этой программы может быть найден в исходном дереве
NDB Cluster в файле
Этот файл ранее называли
Глава 3. MGM API
3.1. Концепция MGM API
NdbMgmHandle
. Это создается, вызывая функцию
ndb_mgm_create_handle()
и освобождается
ndb_mgm_destroy_handle()
.NdbMgmHandle
между
потоками. В то время как возможно сделать так (если вы осуществляете свои
собственные блокировки, это не рекомендуется. Каждый поток должен
использовать свой собственный обработчик сервера управления.-1
указывает на ошибку.NULL
указывает на ошибку, иначе возвращаемое значение должно
быть освобождено программистом.NULL
указывает на ошибку. Возвращенное значение не должно быть освобождено.
ndb_mgm_get_latest_error()
и
ndb_mgm_error()
.
NdbMgmHandle handle = ndb_mgm_create_handle();
ndb_mgm_connect(handle,0,0,0);
struct ndb_mgm_cluster_state *state= ndb_mgm_get_status(handle);
for (int i=0; i < state->no_of_nodes; i++)
{
struct ndb_mgm_node_state *node_state= &state->node_states[i];
printf("node with ID=%d ", node_state->node_id);
if (node_state->version != 0) printf("connected\n");
else printf("not connected\n");
}
free((void*)state);
ndb_mgm_destroy_handle(&handle);
3.1.1. Работа с событиями регистрации
ndb_mgm_listen_event()
. Каждое событие регистрации принадлежит
категории
ndb_mgm_event_category
и имеет важность
ndb_mgm_event_severity
, связанную с ним.
Каждому событию регистрации также присвоен уровень (0-15).
ndb_mgm_listen_event()
,
ndb_mgm_set_clusterlog_loglevel()
и
ndb_mgm_set_clusterlog_severity_filter()
.
int filter[] = { 15, NDB_MGM_EVENT_CATEGORY_BACKUP, 0 };
int fd = ndb_mgm_listen_event(handle, filter);
3.1.2. Структурированные события регистрации
NdbLogEventHandle
с помощью
ndb_mgm_create_logevent_handle()
.ndb_logevent_get_next()
.ndb_logevent
.
Данные, которые являются определенными для конкретного события, хранятся в
объединении структур, надо использовать
ndb_logevent::type
, чтобы
решить, какая структура действительна.
int filter[] = {15, NDB_MGM_EVENT_CATEGORY_BACKUP, 0};
NdbLogEventHandle le_handle= ndb_mgm_create_logevent_handle(handle, filter);
struct ndb_logevent le;
int r= ndb_logevent_get_next(le_handle, &le, 0);
if (r < 0) /*error*/
else if(r == 0) /*no event*/
switch(le.type)
{
case NDB_LE_BackupStarted:
... le.BackupStarted.starting_node;
... le.BackupStarted.backup_id;
break;
case NDB_LE_BackupFailedToStart:
... le.BackupFailedToStart.error;
break;
case NDB_LE_BackupCompleted:
... le.BackupCompleted.stop_gci;
break;
case NDB_LE_BackupAborted:
... le.BackupStarted.backup_id;
break;
default:
break;
}
/storage/ndb/include/mgmapi/ndb_logevent.h
исходных текстов NDB Cluster.3.2. Список API-функций MGM
3.2.1. Функции событий регистрации
3.2.1.1. ndb_mgm_listen_event()
int ndb_mgm_listen_event
(
NdbMgmHandle
handle
,
const int filter[]
)
NdbMgmHandle
handle
.filter
,
который состоит из серии пар {level,
ndb_mgm_event_category}
(в едином массиве), которые переданы
дескриптору файла. Надо использовать 0
для уровня, чтобы закончить список.
3.2.1.2. ndb_mgm_create_logevent_handle()
NdbLogEventHandle ndb_mgm_create_logevent_handle
(
NdbMgmHandle
handle
,
const int filter[]
)
NdbMgmHandle
handle
.filter
,
который состоит из серии пар {level,
ndb_mgm_event_category}
(в едином массиве), которые переданы
дескриптору файла. Надо использовать 0
для уровня, чтобы закончить список.
3.2.1.3. ndb_mgm_destroy_logevent_handle()
void ndb_mgm_destroy_logevent_handle
(
NdbLogEventHandle*
handle
)
handle
.3.2.1.4. ndb_logevent_get_fd()
NdbMgmLogEventHandle
, этот дескриптор может
использоваться в (например) вызове select()
.
int ndb_logevent_get_fd
(
const NdbLogEventHandle
handle
)
LogEventHandle
.-1
.
3.2.1.5. ndb_logevent_get_next()
ndb_logevent
.
int ndb_logevent_get_next
(
const NdbLogEventHandle
handle
,
struct ndb_logevent* logevent
,
unsigned timeout
)
ndb_mgm_event_category
приводились к типу enum
.
Это поведение, хотя и неправильное, вмешалось в существующие приложения и
было восстановлено в NDB 7.2.18 и NDB 7.3.7, новая функция, использующая
исправленное поведение, это
ndb_logevent_get_next2()
была добавлена в этих выпусках.NdbLogEventHandle
.ndb_logevent
.0
в этот параметр заставляет функцию ждать,
пока следующее событие регистрации не получено.logevent
не изменен или затронут в любом случае.> 0
: Событие существует,
данные были получены в logevent
.
0
: Тайм-аут произошел, ожидая события
(больше, чем timeout
миллисекунд).
< 0
: Ошибка произошла.
3.2.1.6. ndb_logevent_get_next2()
ndb_logevent
.ndb_logevent_get_next2()
была добавлена в
NDB 7.2.18 и NDB 7.3.7. Это предназначается, чтобы служить заменой для
for
ndb_logevent_get_next()
,
которая исправляет обработку структуры
ndb_mgm_event_category
для приложений,
которые не требуют обратной совместимости. Это в других отношениях идентично
ndb_logevent_get_next()
.
int ndb_logevent_get_next2
(
const NdbLogEventHandle
handle
,
struct ndb_logevent* logevent
,
unsigned timeout
)
NdbLogEventHandle
.ndb_logevent
.0
заставляет функцию ждать, пока следующее
событие регистрации не получено.logevent
не изменен или затронут в любом случае.> 0
: Событие существует,
данные были получены в logevent
.
0
: Тайм-аут произошел, ожидая события
больше timeout
миллисекунд.
< 0
: Ошибка произошла.
3.2.1.7.
ndb_logevent_get_latest_error()
ndb_logevent_get_latest_error_msg()
, см.
раздел 3.2.1.8
.
int ndb_logevent_get_latest_error
(
const NdbLogEventHandle
handle
)
3.2.1.8. ndb_logevent_get_latest_error_msg()
const char* ndb_logevent_get_latest_error_msg
(
const NdbLogEventHandle
handle
)
3.2.2. Функции обработки ошибок MGM API
3.2.2.1. ndb_mgm_get_latest_error()
NULL
. В более поздних версиях
ndb_mgm_get_latest_error()
NULL-безопасна, но
возвращает произвольное значение (Bug #78130, Bug #21651706).
int ndb_mgm_get_latest_error
(
const NdbMgmHandle
handle
)
NdbMgMHandle
.ndb_mgm_error
. Можно получить связанное
сообщение об ошибке, применяя
ndb_mgm_get_latest_error_msg()
.
3.2.2.2. ndb_mgm_get_latest_error_msg()
NdbMgmHandle
.
NULL
. В более поздних версиях
ndb_mgm_get_latest_error()
NULL-безопасна, но
возвращает произвольное значение (Bug #78130, Bug #21651706).
const char* ndb_mgm_get_latest_error_msg
(
const NdbMgmHandle
handle
)
NdbMgmHandle
.ndb_mgm_get_latest_error_desc()
.
3.2.2.3. ndb_mgm_get_latest_error_desc()
NdbMgmHandle
, это описание предоставляет
дополнительную информацию относительно сообщения об ошибке.NULL
. В более поздних версиях
ndb_mgm_get_latest_error()
NULL-безопасна, но
возвращает произвольное значение (Bug #78130, Bug #21651706).
const char* ndb_mgm_get_latest_error_desc
(
const NdbMgmHandle
handle
)
NdbMgmHandle
.
3.2.2.4. ndb_mgm_set_error_stream()
void ndb_mgm_set_error_stream
(
NdbMgmHandle
handle
,
FILE* file
)
NdbMgmHandle
.
3.2.3. Функции обработчика сервера управления
3.2.3.1. ndb_mgm_create_handle()
NdbMgmHandle ndb_mgm_create_handle(void)
NdbMgmHandle
.
3.2.3.2. ndb_mgm_set_name()
void ndb_mgm_set_name
(
NdbMgmHandle
handle
,
const char* name
)
handle
.name
для
handle
.
3.2.3.3. ndb_mgm_set_ignore_sigpipe()
SIGPIPE
,
которые могли бы произойти, при записи в сокет, который был закрыт или
перезагружен. Приложение, которое предоставляет собственный обработчик для
SIGPIPE
, должно вызвать эту функцию после
создания обработчика сервера управления и перед использованием обработчика,
чтобы соединиться с сервером управления. Другими словами, вызовите эту
функцию после использования
ndb_mgm_create_handle()
, но до
ndb_mgm_connect()
, который вызывает
обработчик MGM API SIGPIPE
, который будет
установлен, если не перекрыт.
int ndb_mgm_set_ignore_sigpipe
(
NdbMgmHandle
handle
,
int ignore
= 1
)
игнорировать ли
SIGPIPE
. Установите это в 1 (по умолчанию),
чтобы заставлять MGM API игнорировать
SIGPIPE
, установите в 0, если вы желаете
размножать SIGPIPE
к вашему приложению.
3.2.3.4. ndb_mgm_destroy_handle()
void ndb_mgm_destroy_handle
(
NdbMgmHandle*
handle
)
NdbMgmHandle
,
который должен быть разрушен.
3.2.4. Функции связи сервера управления
NDB
.
3.2.4.1. ndb_mgm_get_connectstring()
ndb_mgm_set_connectstring()
не было.
Кроме того, возвращенная строка подключения может быть отформатирована
немного по-другому, чем оригинал, это может содержать спецификаторы,
не существующие в оригинале.
const char* ndb_mgm_get_connectstring
(
NdbMgmHandle
handle
,
char* buffer
,
int size
)
NdbMgmHandle
.buffer
,
куда поместить результат.size
буфера.
buffer
.
3.2.4.2. ndb_mgm_get_configuration_nodeid()
int ndb_mgm_get_configuration_nodeid
(
NdbMgmHandle
handle
)
3.2.4.3. ndb_mgm_get_connected_port()
int ndb_mgm_get_connected_port
(
NdbMgmHandle
handle
)
NdbMgmHandle
.
3.2.4.4. ndb_mgm_get_connected_host()
const char* ndb_mgm_get_connected_host
(
NdbMgmHandle
handle
)
handle
.3.2.4.5. ndb_mgm_get_version()
NDB
для обозначенного сервера управления.
int ndb_mgm_get_version
(
NdbMgmHandle
handle
,
int* major
,
int* minor
,
int* build
,
int length
,
char* string
)
NdbMgmHandle
и указатели на значения версии NDB
,
major
,
minor
и
build
, а также указатель на версию
string
(наряду с length
).mysql-
, где
x.x.x
ndb-y.y.y
-
status
x.x.x
это
трехчастная версия сервера MySQL, и
y.y.y
это трехчастная версия
механизма хранения NDB
. Строка
status
указывает на уровень выпуска
или статус, обычно это одно из beta
,
rc
или ga
,
но другие значения иногда возможны.ndb_mgm_get_version()
вернет integer,
0 при удаче, любое ненулевое значение указывает на ошибку.
3.2.4.6. ndb_mgm_is_connected()
ndb_mgm_check_connection()
, чтобы
выполнить эту задачу.
int ndb_mgm_is_connected
(
NdbMgmHandle
handle
)
handle
.0
: Не связан с узлом управления.
3.2.4.7. ndb_mgm_check_connection()
int ndb_mgm_check_connection
(
NdbMgmHandle
handle
)
NdbMgmHandle
(см.
раздел 3.1).
3.2.4.8. ndb_mgm_number_of_mgmd_in_connect_string()
ndb_mgm_set_connectstring()
.
int ndb_mgm_number_of_mgmd_in_connect_string
(
NdbMgmHandle
handle
)
NdbMgmHandle
).
3.2.4.9. ndb_mgm_set_bindaddress()
int ndb_mgm_set_bindaddress
(
NdbMgmHandle
handle
,
const char* address
)
NdbMgmHandle
).
address
в форме
.host
[:
port
]0
= успех.
3.2.4.10. ndb_mgm_set_connectstring()
int ndb_mgm_set_connectstring
(
NdbMgmHandle
handle
,
const char* connection_string
)
ndb_mgm_set_connectstring()
берет два параметра:handle
.
connection_string
,
чей формат показывают здесь:
connection_string
:=
[nodeid-specification
,
]host-specification
[,
host-specification
]
ndb_mgm_get_connectstring()
также использует этот формат для строк подключения.
nodeid-specification
:= nodeid=id
host-specification
:= host
[:port
]
id
,
port
и
host
определяются следующим образом:id
:
Целое число больше 0
, идентификация узла в
config.ini
.port
:
Целое число, относящееся к стандартному порту Unix.host
:
Строка, содержащая действительный адрес сетевого узла.
-1
в случае неудачи.
3.2.4.11. ndb_mgm_set_configuration_nodeid()
int ndb_mgm_set_configuration_nodeid
(
NdbMgmHandle
handle
,
int id
)
NdbMgmHandle
.id
узла, чтобы соединиться.
-1
в случае неудачи.3.2.4.12. ndb_mgm_set_timeout()
int ndb_mgm_set_timeout
(
NdbMgmHandle
handle
,
unsigned int timeout
)
NdbMgmHandle
).0
= успех,
любое другое значение = неудача.3.2.4.13. ndb_mgm_connect()
int ndb_mgm_connect
(
NdbMgmHandle
handle
,
int retries
,
int delay
,
int verbose
)
handle
.retries
, которые
надо сделать, пытаясь соединиться. 0
означает, что только одна попытка подключения будет сделана.delay
между попытками подключения.verbose
=
1
, сообщение печатается для
каждой попытки подключения.-1
в случае неудачи.3.2.4.14. ndb_mgm_disconnect()
int ndb_mgm_disconnect
(
NdbMgmHandle
handle
)
NdbMgmHandle
.-1
,
если не получилось разъединиться.
3.2.5. Функции статуса кластера
3.2.5.1. ndb_mgm_get_status()
struct ndb_mgm_cluster_state* ndb_mgm_get_status
(
NdbMgmHandle
handle
)
handle
.ndb_mgm_cluster_state
.3.2.5.2. ndb_mgm_get_status2()
ndb_mgm_get_status()
, это используется, чтобы получить статус
узлов в NDB Cluster. Но ndb_mgm_get_status2()
позволяет определять тип или типы узлов
(
ndb_mgm_node_type
) для проверки.
struct ndb_mgm_cluster_state* ndb_mgm_get_status2
(
NdbMgmHandle
handle
,
const enum ndb_mgm_node_type types[]
)
handle
.ndb_mgm_node_type
.
Множество должно быть закончено элементом типа
NDB_MGM_NODE_TYPE_UNKNOWN
.ndb_mgm_cluster_state
.3.2.5.3. ndb_mgm_dump_state()
DUMP
это обертка
для этой функции.ndb_mgm_dump_state()
, как команда
DUMP
, может заставить NDB
Cluster работать со сбоями или даже терпеть неудачу полностью, если она
используется неправильно. Обязательно консультируйтесь с соответствующей
документацией перед использованием этой функции. Для получения дополнительной
информации о DUMP
, списка текущих кодов
a listing of current DUMP
и их эффектов см.
NDB Cluster Management Client DUMP Commands.
int ndb_mgm_dump_state
(
NdbMgmHandle
handle
,
int nodeId
,
const int* arguments
,
int numberOfArguments
,
struct ndb_mgm_reply* reply
)
NdbMgmHandle
).nodeId
узла данных кластера.arguments
.
Первый из них это код DUMP
, который будет
выполнен. Последующие аргументы могут быть переданы в этом множестве в случае
необходимости для передачи команде
DUMP
.numberOfArguments
для передачи.
ndb_mgm_reply
, который содержит код возврата наряду с ответом или
сообщением об ошибке.0
= успех,
иначе код ошибки.2 DUMP 1000
:
//[...]
#include <mgmapi_debug.h>
//[...]
struct ndb_mgm_reply reply;
int args[1];
int stat, arg_count, node_id;
args[0] = 1000;
arg_count = 1;
node_id = 2;
stat = ndb_mgm_dump_state(h, node_id, args, arg_count, &reply);
3.2.6. Функции для старта и остановки узлов
ndb_mgm_start()
.ndb_mgm_stop()
,
ndb_mgm_stop2()
,
ndb_mgm_stop3()
или
ndb_mgm_stop4()
.ndb_mgm_stop4()
с параметром
force
= 1.ndb_mgm_restart()
,
ndb_mgm_restart2()
,
ndb_mgm_restart3()
или
ndb_mgm_restart4()
.ndb_mgm_restart4()
с параметром
force
= 1.3.2.6.1. ndb_mgm_start()
-n
), означая, что узел
данных был запущен и ждет команды
START
, которая на самом
деле включает узел.
int ndb_mgm_start
(
NdbMgmHandle
handle
,
int number
,
const int* list
)
ndb_mgm_start()
берет 3 параметра:NdbMgmHandle
.number
узлов, которые будут
запущены. Надо использовать 0
, чтобы запустить
все узлы данных.list
node ID
узлов, которые будут запущены.-1
.3.2.6.2. ndb_mgm_stop()
int ndb_mgm_stop
(
NdbMgmHandle
handle
,
int number
,
const int* list
)
ndb_mgm_stop()
берет 3
параметра: вызов этой функции эквивалентен запросу
ndb_mgm_stop2(
.handle
,
number
,
list
, 0)NdbMgmHandle
.number
число узлов для
остановки. 0
остановит все узлы.list
node ID для остановки.
-1
.3.2.6.3. ndb_mgm_stop2()
ndb_mgm_stop()
, эта функция останавливает
один или несколько узлов данных. Однако это предлагает способность определить
действительно ли выключение узлов правильно.int ndb_mgm_stop2
(
NdbMgmHandle
handle
,
int number
,
const int* list
,
int abort
)
ndb_mgm_stop2()
берет 4 параметра:NdbMgmHandle
.number
число узлов для
остановки. 0
остановит все узлы.list
node ID для остановки.
abort
определяет, как узлы
будут остановлены. 1
указывает, что узлы
немедленно отключатся, 0
, что
узлы остановятся аккуратно.-1
.3.2.6.4. ndb_mgm_stop3()
ndb_mgm_stop()
и
ndb_mgm_stop2()
, эта
функция останавливает один или несколько узлов данных. Как
ndb_mgm_stop2()
, предлагает способность определить, должны ли узлы
остановиться правильно. Кроме того, это предусматривает способ проверить,
требуется ли разъединение до остановки узла.
int ndb_mgm_stop3
(
NdbMgmHandle
handle
,
int number
,
const int* list
,
int abort
,
int* disconnect
)
ndb_mgm_stop3()
берет 5 параметров:NdbMgmHandle
.number
число узлов для
остановки. 0
остановит все узлы.list
node
ID для остановки.abort
определяет, как узлы
будут остановлены. 1
указывает, что узлы
немедленно отключатся, 0
, что
узлы остановятся аккуратно.disconnect
вернет
1
(true
),
это означает, что вы должны разъединить связь, прежде чем можно будет
применить команду, чтобы остановить. Например, разъединение требуется,
останавливая сервер управления, с которым связан обработчик.-1
.3.2.6.5. ndb_mgm_stop4()
ndb_mgm_stop
, эта функция
останавливает один или несколько узлов данных. Как
*
()
ndb_mgm_stop2()
, это предлагает способность определить, должны ли
узлы остановиться правильно, как
ndb_mgm_stop3()
это предусматривает способ проверить, требуется ли
разъединение до остановки узла. Кроме того, возможно вынудить узел
остановиться, даже если это заставило бы кластер стать нежизнеспособным.
int ndb_mgm_stop4
(
NdbMgmHandle
handle
,
int number
,
const int* list
,
int abort
,
int force
,
int* disconnect
)
ndb_mgm_stop4()
берет 6 параметров:NdbMgmHandle
.number
число узлов для
остановки. 0
остановит все узлы.list
node ID
для остановки.abort
определяет, как узлы
будут остановлены. 1
указывает, что узлы
немедленно отключатся, 0
, что
узлы остановятся аккуратно.force
определяет,
действие, которое будет выполнено, если остановка данного узла вызвала
бы неполную группу. 1
заставляет узел
и весь кластер быть остановленным в таких случаях,
0
означает, что узел не будет остановлен.force
= 1 также позволяет
остановить узел даже в то время, как другие узлы запускаются (Bug #58451).
disconnect
вернет
1
(true
),
это означает, что вы должны разъединить связь, прежде чем можно будет
применить команду, чтобы остановить. Например, разъединение требуется,
останавливая сервер управления, с которым связан обработчик.-1
.3.2.6.6. ndb_mgm_restart()
int ndb_mgm_restart
(
NdbMgmHandle
handle
,
int number
,
const int* list
)
ndb_mgm_restart()
берет 3 параметра:NdbMgmHandle
.number
число узлов для
остановки. 0
остановит все узлы.list
node ID для остановки.
ndb_mgm_restart2(
handle
,
number
,
list
, 0, 0, 0);
-1
.3.2.6.7. ndb_mgm_restart2()
ndb_mgm_restart()
, эта функция может
использоваться, чтобы перезапустить один или несколько узлов данных, но
ndb_mgm_restart2()
предоставляет дополнительные
возможности перезапуска, включая начальный перезапуск, ожидание запуска и
непосредственный (принудительный) перезапуск.
int ndb_mgm_restart2
(
NdbMgmHandle
handle
,
int number
,
const int* list
,
int initial
int nostart
,
int abort
)
ndb_mgm_restart2()
берет 6 параметров:NdbMgmHandle
.number
число узлов для
остановки. 0
остановит все узлы.list
node ID для остановки.
initial
= true
(1
), тогда каждый узел подвергается начальному
перезапуску, то есть его файловая система удалена.nostart
= true,
тогда узлы на самом деле не запущены, а вместо этого оставлены
готовыми к команде запуска.abort
= true,
тогда узлы немедленно перезапущены, обойдя любой аккуратный перезапуск.
-1
.3.2.6.8. ndb_mgm_restart3()
ndb_mgm_restart2()
, эта функция может
использоваться, чтобы вызвать начальный перезапуск, ожидание перезапуска и
непосредственный (принудительный) перезапуск на одном или более узлах данных,
но ndb_mgm_restart3()
предоставляет
дополнительные возможности проверки, требуется ли
разъединение до перезапуска.
int ndb_mgm_restart3
(
NdbMgmHandle
handle
,
int number
,
const int* list
,
int initial
int nostart
,
int abort
,
int* disconnect
)
ndb_mgm_restart3()
берет 7 параметров:NdbMgmHandle
.number
число узлов для
остановки. 0
остановит все узлы.list
node ID для остановки.
initial
= true
(1
), тогда каждый узел подвергается начальному
перезапуску, то есть его файловая система удалена.nostart
= true,
тогда узлы на самом деле не запущены, а вместо этого оставлены
готовыми к команде запуска.abort
= true,
тогда узлы немедленно перезапущены, обойдя любой аккуратный перезапуск.
disconnect
вернет
1
(true
),
это означает, что вы должны разъединить связь, прежде чем можно будет
применить команду перезапуска. Например, разъединение требуется, останавливая
сервер управления, с которым связан обработчик.-1
.3.2.6.9. ndb_mgm_restart4()
ndb_mgm_stop3()
, но возможно вынудить узел
перезапуститься, даже если это вызвало бы перезапуск всего кластера.
int ndb_mgm_restart4
(
NdbMgmHandle
handle
,
int number
,
const int* list
,
int initial
int nostart
,
int abort
,
int force
,
int* disconnect
)
ndb_mgm_restart4()
берет 7 параметров:NdbMgmHandle
.number
число узлов для
остановки. 0
остановит все узлы.list
node ID для остановки.
initial
= true
(1
), тогда каждый узел подвергается начальному
перезапуску, то есть его файловая система удалена.nostart
= true, тогда узлы на самом
деле не запущены, а вместо этого оставлены готовыми к команде запуска.
abort
= true,
тогда узлы немедленно перезапущены, обойдя любой аккуратный перезапуск.
force
определяет действие, которое будет выполнено, если потеря данного узла из-за
перезапуска вызвала бы неполный кластер.1
заставляет узел и весь кластер
быть перезапущенным в таких случаях, 0
значит, что узел не будет перезапущен.force
= 1 также позволяет
перезапустить узел даже в то время, как другие узлы запускаются (Bug #58451).
disconnect
вернет
1
(true
),
это означает, что вы должны разъединить связь, прежде чем можно будет
применить команду перезапуска. Например, разъединение требуется, останавливая
сервер управления, с которым связан обработчик.-1
.3.2.7.
Функции регистрации событий кластера
3.2.7.1. ndb_mgm_get_clusterlog_severity_filter()
int ndb_mgm_get_clusterlog_severity_filter
(
NdbMgmHandle
handle
,
struct ndb_mgm_severity* severity
,
unsigned int size
)
NdbMgmHandle
.severity
из семи
элементов (NDB_MGM_EVENT_SEVERITY_ALL
), каждый
из которых это структура ndb_mgm_severity
,
где каждый элемент содержит 1
, если индикатор
позволен и 0
иначе. Уровень важности сохранен в
ndb_mgm_clusterlog_level
,
например, ошибочный уровень сохранен в
NDB_MGM_EVENT_SEVERITY_ERROR
. Первый элемент
(NDB_MGM_EVENT_SEVERITY_ON
) в векторе
указывает, отключена ли регистрация кластера или позволена.size
размер вектора
(NDB_MGM_EVENT_SEVERITY_ALL
).-1
в случае ошибки.
3.2.7.2. ndb_mgm_set_clusterlog_severity_filter()
int ndb_mgm_set_clusterlog_severity_filter
(
NdbMgmHandle
handle
,
enum ndb_mgm_event_severity severity
,
int enable
,
struct ndb_mgm_reply* reply
)
handle
.severity
.
enable
для включения
или выключения фильтра, 1
включить,
0
выключить.ndb_mgm_reply
для ответного сообщения.
-1
в случае неудачи.
3.2.7.3. ndb_mgm_get_clusterlog_loglevel()
int ndb_mgm_get_clusterlog_loglevel
(
NdbMgmHandle
handle
,
struct ndb_mgm_loglevel* loglevel
,
unsigned int size
)
ndb_mgm_get_clusterlog_loglevel()
берет следующие параметры:handle
(
NdbMgmHandle
).loglevel
(уровень
регистрации событий), состоящий из двенадцати элементов, каждый из которых
структура ndb_mgm_loglevel
представляет уровень
регистрации соответствующей категории.size
вектора
(MGM_LOGLEVELS
).-1
в случае ошибки.
3.2.7.4. ndb_mgm_set_clusterlog_loglevel()
int ndb_mgm_set_clusterlog_loglevel
(
NdbMgmHandle
handle
,
int id
,
enum ndb_mgm_event_category category
,
int level
,
struct ndb_mgm_reply* reply
)
NdbMgmHandle
.id
затронутого узла.
category
это одно из значений, перечисленных в
разделе 3.3.7.level
.
ndb_mgm_reply
для сообщения
reply
.-1
.3.2.8. Функции резервного копирования
3.2.8.1. ndb_mgm_start_backup()
int ndb_mgm_start_backup
(
NdbMgmHandle
handle
,
int wait
,
unsigned int* id
,
struct ndb_mgm_reply* reply
)
handle
(NdbMgmHandle
).wait
со следующими возможными значениями:0
:
Не ждите подтверждения резервной копии.1
: Ждите начала резервной копии.2
: Ждите окончания резервной копии.
id
резервной копии.id
резервной копии не
возвращен, если wait
= 0.
ndb_mgm_reply
, чтобы обработать
reply
.-1
.
3.2.8.2. ndb_mgm_abort_backup()
int ndb_mgm_abort_backup
(
NdbMgmHandle
handle
,
unsigned int id
,
struct ndb_mgm_reply* reply
)
NdbMgmHandle
.id
резервной копии, которая будет прервана.ndb_mgm_reply
.-1
.
3.2.9. Однопользовательские функции
3.2.9.1. ndb_mgm_enter_single_user()
int ndb_mgm_enter_single_user
(
NdbMgmHandle
handle
,
unsigned int id
,
struct ndb_mgm_reply* reply
)
NdbMgmHandle
.id
узла, который будет использоваться в однопользовательском режиме.ndb_mgm_reply
для сообщения
reply
.-1
в случае неудачи.
3.2.9.2. ndb_mgm_exit_single_user()
int ndb_mgm_exit_single_user
(
NdbMgmHandle
handle
,
struct ndb_mgm_reply* reply
)
NdbMgmHandle
.ndb_mgm_reply
.-1
в случае ошибки.3.3. Типы данных MGM API
/storage/ndb/include/mgmapi/mgmapi.h
,
за исключением
Ndb_logevent_type
,
ndb_mgm_event_severity
,
ndb_mgm_logevent_handle_error
и
ndb_mgm_event_category
, которые определяются в
/storage/ndb/include/mgmapi/ndb_logevent.h
.3.3.1. Тип ndb_mgm_node_type
Значение
Описание
NDB_MGM_NODE_TYPE_UNKNOWN
Unknown
NDB_MGM_NODE_TYPE_API
Узел API (узел SQL) NDB_MGM_NODE_TYPE_NDB
Узел данных NDB_MGM_NODE_TYPE_MGM
Узел управления
3.3.2. Тип ndb_mgm_node_status
Значение
Описание
NDB_MGM_NODE_STATUS_UNKNOWN
Статус узла неизвестен NDB_MGM_NODE_STATUS_NO_CONTACT
С узлом нельзя связаться NDB_MGM_NODE_STATUS_NOT_STARTED
Узел еще не выполнил протокол запуска NDB_MGM_NODE_STATUS_STARTING
Узел выполняет протокол запуска NDB_MGM_NODE_STATUS_STARTED
Узел работает NDB_MGM_NODE_STATUS_SHUTTING_DOWN
Узел закрывается NDB_MGM_NODE_STATUS_RESTARTING
Узел перезапускается NDB_MGM_NODE_STATUS_SINGLEUSER
Узел в однопользовательском режиме NDB_MGM_NODE_STATUS_RESUME
Узел находится в режиме восстановления NDB_MGM_NODE_STATUS_CONNECTED
Узел соединен
3.3.3. Тип ndb_mgm_error
3.3.4. Тип Ndb_logevent_type
Тип
Описание
Категория NDB_LE_Connected
Узел соединился
NDB_MGM_EVENT_CATEGORY_CONNECTION
NDB_LE_Disconnected
Узел был разъединен
NDB_MGM_EVENT_CATEGORY_CONNECTION
NDB_LE_CommunicationClosed
Связь с узлом была закрыта
NDB_MGM_EVENT_CATEGORY_CONNECTION
NDB_LE_CommunicationOpened
Связь с узлом была начата
NDB_MGM_EVENT_CATEGORY_CONNECTION
NDB_LE_ConnectedApiVersion
Версия API, используемая узлом API, в случае сервера MySQL (узел
SQL), это совпадает с
SELECT VERSION()
NDB_MGM_EVENT_CATEGORY_CONNECTION
NDB_LE_GlobalCheckpointStarted
Была начата глобальная контрольная точка
NDB_MGM_EVENT_CATEGORY_CHECKPOINT
NDB_LE_GlobalCheckpointCompleted
Была закончена глобальная контрольная точка
NDB_MGM_EVENT_CATEGORY_CHECKPOINT
NDB_LE_LocalCheckpointStarted
Узел начал местную контрольную точку
NDB_MGM_EVENT_CATEGORY_CHECKPOINT
NDB_LE_LocalCheckpointCompleted
Узел закончил местную контрольную точку
NDB_MGM_EVENT_CATEGORY_CHECKPOINT
NDB_LE_LCPStoppedInCalcKeepGci
Локальная контрольная точка была прервана, но последняя
глобальная контрольная точка была сохранена
NDB_MGM_EVENT_CATEGORY_CHECKPOINT
NDB_LE_LCPFragmentCompleted
Копирование фрагмента таблицы было закончено
NDB_MGM_EVENT_CATEGORY_CHECKPOINT
NDB_LE_NDBStartStarted
Узел начал запуск
NDB_MGM_EVENT_CATEGORY_STARTUP
NDB_LE_NDBStartCompleted
Узел закончил процесс запуска
NDB_MGM_EVENT_CATEGORY_STARTUP
NDB_LE_STTORRYRecieved
Узел получил сигнал
STTORRY
,
указывающий, что чтение данных конфигурации идет полным ходом, посмотрите
Configuration Read Phase (STTOR Phase -1) и
STTOR Phase 0NDB_MGM_EVENT_CATEGORY_STARTUP
NDB_LE_StartPhaseCompleted
Фаза начала узла была закончена
NDB_MGM_EVENT_CATEGORY_STARTUP
NDB_LE_CM_REGCONF
Узел получил сигнал
CM_REGCONF
, см.
STTOR Phase 1NDB_MGM_EVENT_CATEGORY_STARTUP
NDB_LE_CM_REGREF
Узел получил сигнал
CM_REGREF
, см.
STTOR Phase 1NDB_MGM_EVENT_CATEGORY_STARTUP
NDB_LE_FIND_NEIGHBOURS
Узел обнаружил свои соседние узлы в кластере
NDB_MGM_EVENT_CATEGORY_STARTUP
NDB_LE_NDBStopStarted
Узел начинает закрываться
NDB_MGM_EVENT_CATEGORY_STARTUP
NDB_LE_NDBStopCompleted
Закрытие узла закончено
NDB_MGM_EVENT_CATEGORY_STARTUP
NDB_LE_NDBStopForced
Узел вынужден закрыться (обычно указывает на серьезную проблему)
NDB_MGM_EVENT_CATEGORY_STARTUP
NDB_LE_NDBStopAborted
Начал закрываться, но был вынужден продолжить работу,
это происходит, например, когда команда
STOP
была дана в клиенте
управления для узла таким образом, что кластер больше не был бы в состоянии
держать все доступные данные, если бы узел был закрытNDB_MGM_EVENT_CATEGORY_STARTUP
NDB_LE_StartREDOLog
Redo-регистрация начата
NDB_MGM_EVENT_CATEGORY_STARTUP
NDB_LE_StartLog
Регистрация началась
NDB_MGM_EVENT_CATEGORY_STARTUP
NDB_LE_UNDORecordsExecuted
Узел прочитал и выполнил все записи из журнала отката
NDB_MGM_EVENT_CATEGORY_STARTUP
NDB_LE_StartReport
Узел выпускает отчет о начале
NDB_MGM_EVENT_CATEGORY_STARTUP
NDB_LE_NR_CopyDict
Узел копирует словарь данных
NDB_MGM_EVENT_CATEGORY_NODE_RESTART
NDB_LE_NR_CopyDistr
Узел копирует информацию о распределении данных
NDB_MGM_EVENT_CATEGORY_NODE_RESTART
NDB_LE_NR_CopyFragsStarted
Узел копирует фрагменты таблицы
NDB_MGM_EVENT_CATEGORY_NODE_RESTART
NDB_LE_NR_CopyFragDone
Узел закончил копирование фрагмента таблицы
NDB_MGM_EVENT_CATEGORY_NODE_RESTART
NDB_LE_NR_CopyFragsCompleted
Узел закончил копирование всех необходимых фрагментов таблицы
NDB_MGM_EVENT_CATEGORY_NODE_RESTART
NDB_LE_NodeFailCompleted
Все (остающиеся) узлы были оповещены о сбое узла данных
NDB_MGM_EVENT_CATEGORY_NODE_RESTART
NDB_LE_NODE_FAILREP
Узел данных потерпел неудачу
NDB_MGM_EVENT_CATEGORY_NODE_RESTART
NDB_LE_ArbitState
Это событие используется, чтобы сообщить относительно
текущего состояния арбитража
NDB_MGM_EVENT_CATEGORY_NODE_RESTART
NDB_LE_ArbitResult
Это событие используется, чтобы сообщить относительно
результата арбитража узла
NDB_MGM_EVENT_CATEGORY_NODE_RESTART
NDB_LE_GCP_TakeoverStarted
Узел пытается стать главным узлом (чтобы принять на себя
ответственность за GCP)
NDB_MGM_EVENT_CATEGORY_NODE_RESTART
NDB_LE_GCP_TakeoverCompleted
Узел стал главным и принял на себя ответственность за GCP
NDB_MGM_EVENT_CATEGORY_NODE_RESTART
NDB_LE_LCP_TakeoverStarted
Узел пытается стать главным узлом (чтобы принять на себя
ответственность за LCP)
NDB_MGM_EVENT_CATEGORY_NODE_RESTART
NDB_LE_LCP_TakeoverCompleted
Узел стал главным (и принял на себя ответственность за LCP)
NDB_MGM_EVENT_CATEGORY_NODE_RESTART
NDB_LE_TransReportCounters
Это указывает на сообщение о действии транзакций, которое дано
приблизительно один раз в 10 секунд
NDB_MGM_EVENT_CATEGORY_STATISTIC
NDB_LE_OperationReportCounters
Указывает на отчет о количестве операций, выполненных этим
узлом (обеспечен приблизительно один раз в 10 секунд)
NDB_MGM_EVENT_CATEGORY_STATISTIC
NDB_LE_TableCreated
Была составлена новая таблица
NDB_MGM_EVENT_CATEGORY_STATISTIC
NDB_LE_UndoLogBlocked
Регистрация отмен заблокирована, потому что буфер
регистрации близок к переполнению
NDB_MGM_EVENT_CATEGORY_STATISTIC
NDB_LE_JobStatistic
...
NDB_MGM_EVENT_CATEGORY_STATISTIC
NDB_LE_SendBytesStatistic
Указывает среднее число байтов, переданных за операцию этим узлом
NDB_MGM_EVENT_CATEGORY_STATISTIC
NDB_LE_ReceiveBytesStatistic
Указывает среднее число байтов, полученных за операцию этим узлом
NDB_MGM_EVENT_CATEGORY_STATISTIC
NDB_LE_MemoryUsage
Команда
DUMP 1000
была дана этому узлу, и это сообщает о своем использовании памятиNDB_MGM_EVENT_CATEGORY_STATISTIC
NDB_LE_TransporterError
Ошибка транспортера произошла, см.
NDB Transporter Errors
NDB_MGM_EVENT_CATEGORY_ERROR
NDB_LE_TransporterWarning
Потенциальная проблема происходит в транспортере, см.
NDB Transporter Errors
NDB_MGM_EVENT_CATEGORY_ERROR
NDB_LE_MissedHeartbeat
Указывает, что узел данных пропустил сигнал синхронизации, ожидаемый от
другого узла данных
NDB_MGM_EVENT_CATEGORY_ERROR
NDB_LE_DeadDueToHeartbeat
Узел данных пропустил по крайней мере 3 сигнала синхронизации
от другого узла данных и сообщает, что больше не может общаться с
тем узлом данных
NDB_MGM_EVENT_CATEGORY_ERROR
NDB_LE_WarningEvent
Указывает на предупреждающее сообщение
NDB_MGM_EVENT_CATEGORY_ERROR
NDB_LE_SentHeartbeat
Сигнал синхронизации узла послали
NDB_MGM_EVENT_CATEGORY_INFO
NDB_LE_CreateLogBytes
...
NDB_MGM_EVENT_CATEGORY_INFO
NDB_LE_InfoEvent
Указывает на информационное сообщение
NDB_MGM_EVENT_CATEGORY_INFO
NDB_LE_SingleUser
Кластер вошел или вышел из однопользовательского режима
NDB_MGM_EVENT_CATEGORY_INFO
NDB_LE_EventBufferStatus
Этот тип события указывает на потенциально чрезмерное
использование буфера событий
NDB_MGM_EVENT_CATEGORY_INFO
NDB_LE_EventBufferStatus2
Обеспечивает улучшенное сообщение о статусе буфера
событий, добавлен в NDB 7.5.1
NDB_MGM_EVENT_CATEGORY_INFO
NDB_LE_BackupStarted
Резервная копия была начата
NDB_MGM_EVENT_CATEGORY_BACKUP
NDB_LE_BackupFailedToStart
Резервная копия не началась
NDB_MGM_EVENT_CATEGORY_BACKUP
NDB_LE_BackupCompleted
Резервная копия была закончена успешно
NDB_MGM_EVENT_CATEGORY_BACKUP
NDB_LE_BackupAborted
Происходящая резервная копия была прервана пользователем
NDB_MGM_EVENT_CATEGORY_BACKUP
3.3.5. Тип ndb_mgm_event_severity
ndb_mgm_set_clusterlog_severity_filter()
и отфильтровать события через
ndb_mgm_listen_event()
.
Значение
Описание
NDB_MGM_ILLEGAL_EVENT_SEVERITY
Недействительная важность событий определяется NDB_MGM_EVENT_SEVERITY_ON
Регистрация кластера позволена NDB_MGM_EVENT_SEVERITY_DEBUG
Используемый только для
развития кластера NDB NDB_MGM_EVENT_SEVERITY_INFO
Информационные сообщения NDB_MGM_EVENT_SEVERITY_WARNING
Условия, которые не являются ошибками как таковыми, но это
могло бы потребовать специальной обработки NDB_MGM_EVENT_SEVERITY_ERROR
Неокончательное состояние ошибки, которое должно быть исправлено
NDB_MGM_EVENT_SEVERITY_CRITICAL
Критические состояния, такие как ошибки
устройства или памяти NDB_MGM_EVENT_SEVERITY_ALERT
Условия, которые требуют пристального внимания, такие
как повреждения кластера NDB_MGM_EVENT_SEVERITY_ALL
Все уровни важности
3.3.6. Тип ndb_logevent_handle_error
Значение
Описание NDB_LEH_NO_ERROR
Нет ошибок NDB_LEH_READ_ERROR
Ошибка чтения NDB_LEH_MISSING_EVENT_SPECIFIER
Недействительная, неполная или пропущенная
спецификация событий регистрации NDB_LEH_UNKNOWN_EVENT_TYPE
Неизвестный тип события регистрации NDB_LEH_UNKNOWN_EVENT_VARIABLE
Неизвестная переменная событий регистрации NDB_LEH_INTERNAL_ERROR
Внутренняя ошибка NDB_LEH_CONNECTION_ERROR
Ошибка связи или потерянная связь с сервером управления
NDB_LEH_CONNECTION_ERROR
добавлен в NDB
7.4.13 и NDB 7.5.4 (BUG #19474782).
3.3.7. Тип ndb_mgm_event_category
ndb_mgm_set_clusterlog_loglevel()
и
ndb_mgm_listen_event()
.
Значение
Описание
NDB_MGM_ILLEGAL_EVENT_CATEGORY
Недействительная категория событий регистрации
NDB_MGM_EVENT_CATEGORY_STARTUP
События регистрации, происходящие во время запуска
NDB_MGM_EVENT_CATEGORY_SHUTDOWN
События регистрации, происходящие во время закрытия
NDB_MGM_EVENT_CATEGORY_STATISTIC
Статистические данные событий
NDB_MGM_EVENT_CATEGORY_CHECKPOINT
События регистрации, связанные с контрольными точками
NDB_MGM_EVENT_CATEGORY_NODE_RESTART
События регистрации, происходящие во время перезапуска узла
NDB_MGM_EVENT_CATEGORY_CONNECTION
События регистрации, касающиеся связей между узлами кластера
NDB_MGM_EVENT_CATEGORY_BACKUP
События регистрации, касающиеся резервных копий
NDB_MGM_EVENT_CATEGORY_CONGESTION
События регистрации, касающиеся перегруженности
NDB_MGM_EVENT_CATEGORY_INFO
Некатегоризированные события регистрации (уровень важности
INFO
)
Некатегоризированные события регистрации (уровень важности
NDB_MGM_EVENT_CATEGORY_ERROR
WARNING
,
ERROR
, CRITICAL
или ALERT
)
3.4. Структуры MGM API
3.4.1. Структура ndb_logevent
ndb_logevent
имеет 8 участников, первые 7 из которых показаны в следующем списке:void*
:
handle
NdbLogEventHandle
,
установленный
ndb_logevent_get_next()
.
Этот обработчик используется только в целях сравнения.type
:
Говорит, который это тип события
(
Ndb_logevent_type
).unsigned
: Время, в которое событие регистрации было
зарегистрировано в сервере управления.time
category
:
Категория событий регистрации
(
ndb_mgm_event_category
).severity
:
Важность событий регистрации
(
ndb_mgm_event_severity
).unsigned
:
Уровень событий регистрации. Это значение в диапазоне
от 0 до 15 включительно.level
unsigned
:
ID узла, который сообщил об этом событии.source_nodeid
type
в следующей таблице:
Значение
Ndb_logevent_type
Структура NDB_LE_Connected
Connected
:
unsigned
node
NDB_LE_Disconnected
Disconnected
:
unsigned
node
NDB_LE_CommunicationClosed
CommunicationClosed
:
unsigned
node
NDB_LE_CommunicationOpened
CommunicationOpened
:
unsigned
node
NDB_LE_ConnectedApiVersion
ConnectedApiVersion
:
unsigned
node
unsigned version
NDB_LE_GlobalCheckpointStarted
GlobalCheckpointStarted
:
unsigned
gci
NDB_LE_GlobalCheckpointCompleted
GlobalCheckpointCompleted
:
unsigned
gci
NDB_LE_LocalCheckpointStarted
LocalCheckpointStarted
:
unsigned
lci
unsigned keep_gci
unsigned restore_gci
NDB_LE_LocalCheckpointCompleted
LocalCheckpointCompleted
:
unsigned
lci
NDB_LE_LCPStoppedInCalcKeepGci
LCPStoppedInCalcKeepGci
:
unsigned
data
NDB_LE_LCPFragmentCompleted
LCPFragmentCompleted
:
unsigned
node
unsigned table_id
unsigned fragment_id
NDB_LE_UndoLogBlocked
UndoLogBlocked
:
unsigned
acc_count
unsigned tup_count
NDB_LE_NDBStartStarted
NDBStartStarted
:
unsigned
version
NDB_LE_NDBStartCompleted
NDBStartCompleted
:
unsigned
version
NDB_LE_STTORRYRecieved
STTORRYRecieved
:
[NONE]
NDB_LE_StartPhaseCompleted
StartPhaseCompleted
:
unsigned
phase
unsigned starttype
NDB_LE_CM_REGCONF
CM_REGCONF
:
unsigned
own_id
unsigned president_id
unsigned dynamic_id
NDB_LE_CM_REGREF
CM_REGREF
:
unsigned
own_id
unsigned other_id
unsigned cause
NDB_LE_FIND_NEIGHBOURS
FIND_NEIGHBOURS
:
unsigned
own_id
unsigned left_id
unsigned right_id
unsigned dynamic_id
NDB_LE_NDBStopStarted
NDBStopStarted
:
unsigned
stoptype
NDB_LE_NDBStopCompleted
NDBStopCompleted
:
unsigned
action
unsigned signum
NDB_LE_NDBStopForced
NDBStopForced
:
unsigned
action
unsigned signum
unsigned error
unsigned sphase
unsigned extra
NDB_LE_NDBStopAborted
NDBStopAborted
:
[NONE]
NDB_LE_StartREDOLog
StartREDOLog
:
unsigned
node
unsigned keep_gci
unsigned completed_gci
unsigned restorable_gci
NDB_LE_StartLog
StartLog
:
unsigned
log_part
unsigned start_mb
unsigned stop_mb
unsigned gci
NDB_LE_UNDORecordsExecuted
UNDORecordsExecuted
:
unsigned
block
unsigned data1
unsigned data2
unsigned data3
unsigned data4
unsigned data5
unsigned data6
unsigned data7
unsigned data8
unsigned data9
unsigned data10
NDB_LE_NR_CopyDict
NR_CopyDict
:
[NONE]
NDB_LE_NR_CopyDistr
NR_CopyDistr
:
[NONE]
NDB_LE_NR_CopyFragsStarted
NR_CopyFragsStarted
:
unsigned
dest_node
NDB_LE_NR_CopyFragDone
NR_CopyFragDone
:
unsigned
dest_node
unsigned table_id
unsigned fragment_id
NDB_LE_NR_CopyFragsCompleted
NR_CopyFragsCompleted
:
unsigned
dest_node
NDB_LE_NodeFailCompleted
NodeFailCompleted
:
unsigned
Для block
unsigned failed_node
unsigned completing_node
block
и
completing_node
,
0
понимается как
все.NDB_LE_NODE_FAILREP
NODE_FAILREP
:
unsigned
failed_node
unsigned failure_state
NDB_LE_ArbitState
ArbitState
:
unsigned
code
unsigned arbit_node
unsigned ticket_0
unsigned ticket_1
NDB_LE_ArbitResult
ArbitResult
:
unsigned
code
unsigned arbit_node
unsigned ticket_0
unsigned ticket_1
NDB_LE_GCP_TakeoverStarted
GCP_TakeoverStarted
:
[NONE]
NDB_LE_GCP_TakeoverCompleted
GCP_TakeoverCompleted
:
[NONE]
NDB_LE_LCP_TakeoverStarted
LCP_TakeoverStarted
:
[NONE]
NDB_LE_TransReportCounters
TransReportCounters
:
unsigned
trans_count
unsigned commit_count
unsigned read_count
unsigned simple_read_count
unsigned write_count
unsigned attrinfo_count
unsigned conc_op_count
unsigned abort_count
unsigned scan_count
unsigned range_scan_count
NDB_LE_OperationReportCounters
OperationReportCounters
:
unsigned
ops
NDB_LE_TableCreated
TableCreated
:
unsigned
table_id
NDB_LE_JobStatistic
JobStatistic
:
unsigned
mean_loop_count
NDB_LE_SendBytesStatistic
SendBytesStatistic
:
unsigned
to_node
unsigned mean_sent_bytes
NDB_LE_ReceiveBytesStatistic
ReceiveBytesStatistic
:
unsigned
from_node
unsigned mean_received_bytes
NDB_LE_MemoryUsage
MemoryUsage
:
int
gth
unsigned page_size_kb
unsigned pages_used
unsigned pages_total
unsigned block
NDB_LE_TransporterError
TransporterError
:
unsigned
to_node
unsigned code
NDB_LE_TransporterWarning
TransporterWarning
:
unsigned
to_node
unsigned code
NDB_LE_MissedHeartbeat
MissedHeartbeat
:
unsigned
node
unsigned count
NDB_LE_DeadDueToHeartbeat
DeadDueToHeartbeat
:
unsigned
node
NDB_LE_WarningEvent
WarningEvent
:
[NOT YET IMPLEMENTED]
NDB_LE_SentHeartbeat
SentHeartbeat
:
unsigned
node
NDB_LE_CreateLogBytes
CreateLogBytes
:
unsigned
node
NDB_LE_InfoEvent
InfoEvent
:
Пока не сделаноNDB_LE_EventBufferStatus
(NDB 7.5.0 и ранее)EventBufferStatus:
:
unsigned
usage
unsigned alloc
unsigned max
unsigned apply_gci_l
unsigned apply_gci_h
unsigned latest_gci_l
unsigned latest_gci_h
NDB_LE_EventBufferStatus2
(NDB 7.5.1 и позже)EventBufferStatus2
:
unsigned
usage
unsigned alloc
unsigned max
unsigned latest_consumed_epoch_l
unsigned latest_consumed_epoch_h
unsigned latest_buffered_epoch_l
unsigned latest_buffered_epoch_h
unsigned ndb_reference
unsigned report_reason
report_reason
одно из
NO_REPORT
,
COMPLETELY_BUFFERING
,
PARTIALLY_DISCARDING
,
COMPLETELY_DISCARDING
,
PARTIALLY_BUFFERING
,
BUFFERED_EPOCHS_OVER_THRESHOLD
,
ENOUGH_FREE_EVENTBUFFER
или
LOW_FREE_EVENTBUFFER
, см.
Event Buffer Reporting in the Cluster LogNDB_LE_BackupStarted
BackupStarted
:
unsigned
starting_node
unsigned backup_id
NDB_LE_BackupFailedToStart
BackupFailedToStart
:
unsigned
starting_node
unsigned error
NDB_LE_BackupCompleted
BackupCompleted
:
unsigned
starting_node
unsigned backup_id
unsigned start_gci
unsigned stop_gci
unsigned n_records
unsigned n_log_records
unsigned n_bytes
unsigned n_log_bytes
NDB_LE_BackupAborted
BackupAborted
:
unsigned
starting_node
unsigned backup_id
unsigned error
NDB_LE_SingleUser
SingleUser
:
unsigned
type
unsigned node_id
NDB_LE_StartReport
StartReport
:
unsigned
report_type
unsigned remaining_time
unsigned bitmask_size
unsigned bitmask_data[1]
3.4.2. Структура ndb_mgm_node_state
int
: ID узла кластера.node_id
enum ndb_mgm_node_type
: Тип узла.node_type
enum ndb_mgm_node_status
: Статус узла.node_status
int
: Фаза начала.start_phase
node_type
=
NDB_MGM_NODE_TYPE_NDB
и
node_status
=
NDB_MGM_NODE_STATUS_STARTING
.int
:
ID для синхронизации и поглощения главного узла.dynamic_id
int
:
группа узлов, к которой принадлежит узел.node_group
int
: Число внутренней версии.version
int
:
Сколько раз этот узел соединился или разъединился с сервером управления.
connect_count
char
:
IP-адрес этого узла, как он виден другим узлам в группе.connect_address[]
int
:
Номер версии MySQL, выраженный как целое число (например:
mysql_version
80020
). Применяется только к узлам SQL.int
:
ID API или SQL-узла, имеющего эксклюзивный доступ, когда кластер находится в
однопользовательском режиме. Иначе не применяется. Добавлено в NDB 8.0.17.
is_single_user
3.4.3. Структура ndb_mgm_cluster_state
ndb_mgm_get_status()
.int
: число элементов
массива no_of_nodes
node_states
.struct ndb_mgm_node_state
:
массив, содержащий статусы узлов.node_states[]
ndb_mgm_node_state
.3.4.4. Структура ndb_mgm_reply
int
:
Для успешной операции это значение return_code
0
,
иначе это содержит код ошибки.char
:
содержит текст ответа или сообщения об ошибке.message[256]
3.5. Ошибки MGM API
MGM
по типам. Есть шесть типов ошибок
MGM
:3.5.1. Ошибки запроса
Значение
Описание
NDB_MGM_ILLEGAL_CONNECT_STRING
Недействительная строка подключения
NDB_MGM_ILLEGAL_SERVER_HANDLE
Недействительная обработчик сервера управления NDB_MGM_ILLEGAL_SERVER_REPLY
Недействительный ответ от сервера управления NDB_MGM_ILLEGAL_NUMBER_OF_NODES
Неверный номер узлов NDB_MGM_ILLEGAL_NODE_STATUS
Недействительный статус узла
NDB_MGM_OUT_OF_MEMORY
Ошибка распределения памяти NDB_MGM_SERVER_NOT_CONNECTED
Сервер управления не подключен
NDB_MGM_COULD_NOT_CONNECT_TO_SOCKET
Не может соединиться с сокетом
3.5.2. Ошибки распределения ID узлов
Значение
Описание
NDB_MGM_ALLOCID_ERROR
Универсальная ошибка, может быть
возможно повторить и восстановить
NDB_MGM_ALLOCID_CONFIG_MISMATCH
Невосстанавливаемая универсальная ошибка
3.5.3. Сервисные ошибки
Значение
Описание NDB_MGM_START_FAILED
Неудача запуска NDB_MGM_STOP_FAILED
Неудача закрытия NDB_MGM_RESTART_FAILED
Неудача перезапуска
3.5.4. Ошибки резервирования
Значение
Описание
NDB_MGM_COULD_NOT_START_BACKUP
Не получилось начать резервную копию
NDB_MGM_COULD_NOT_ABORT_BACKUP
Не получилось прервать резервную копию
3.5.5.
Ошибки однопользовательского режима
Значение
Описание
NDB_MGM_COULD_NOT_ENTER_SINGLE_USER_MODE
Не получилось войти в однопользовательский режим
NDB_MGM_COULD_NOT_EXIT_SINGLE_USER_MODE
Не получилось выйти
из однопользовательского режима
3.5.6. Общие ошибки использования
Значение
Описание
NDB_MGM_USAGE_ERROR
Общая ошибка использования
3.6. Примеры MGM API
3.6.1. Основной пример регистрации событий MGM API
storage/ndb/ndbapi-examples/mgmapi_logevent/main.cpp
.
#include <mysql.h>
#include <ndbapi/NdbApi.hpp>
#include <mgmapi.h>
#include <stdio.h>
#include <stdlib.h>
/*
* export LD_LIBRARY_PATH=../../../../libmysql_r/.libs:../../src/.libs
*/
#define MGMERROR(h) \
{ \
fprintf(stderr, "code: %d msg: %s\n", \
ndb_mgm_get_latest_error(h), \
ndb_mgm_get_latest_error_msg(h)); \
exit(-1); \
}
#define LOGEVENTERROR(h) \
{ \
fprintf(stderr, "code: %d msg: %s\n", \
ndb_logevent_get_latest_error(h), \
ndb_logevent_get_latest_error_msg(h)); \
exit(-1); \
}
#define make_uint64(a,b) (((Uint64)(a)) + (((Uint64)(b)) << 32))
int main(int argc, char** argv)
{
NdbMgmHandle h;
NdbLogEventHandle le;
int filter[] = {15, NDB_MGM_EVENT_CATEGORY_BACKUP,
15, NDB_MGM_EVENT_CATEGORY_CONNECTION,
15, NDB_MGM_EVENT_CATEGORY_NODE_RESTART,
15, NDB_MGM_EVENT_CATEGORY_STARTUP,
15, NDB_MGM_EVENT_CATEGORY_ERROR, 0};
struct ndb_logevent event;
if (argc < 2)
{
printf("Arguments are <connect_string cluster> [<iterations>].\n");
exit(-1);
}
const char *connectstring = argv[1];
int iterations = -1;
if (argc > 2) iterations = atoi(argv[2]);
ndb_init();
h= ndb_mgm_create_handle();
if (h == 0) {
printf("Unable to create handle\n");
exit(-1);
}
if (ndb_mgm_set_connectstring(h, connectstring) == -1)
{
printf("Unable to set connection string\n");
exit(-1);
}
if (ndb_mgm_connect(h,0,0,0)) MGMERROR(h);
le= ndb_mgm_create_logevent_handle(h, filter);
if (le == 0) MGMERROR(h);
while (iterations-- != 0)
{
int timeout= 1000;
int r= ndb_logevent_get_next(le,&event,timeout);
if (r == 0) printf("No event within %d milliseconds\n", timeout);
else if (r < 0) LOGEVENTERROR(le)
else
{
switch (event.type) {
case NDB_LE_BackupStarted:
printf("Node %d: BackupStarted\n", event.source_nodeid);
printf("Starting node ID: %d\n", event.BackupStarted.starting_node);
printf("Backup ID: %d\n", event.BackupStarted.backup_id);
break;
case NDB_LE_BackupStatus:
printf("Node %d: BackupStatus\n", event.source_nodeid);
printf("Starting node ID: %d\n", event.BackupStarted.starting_node);
printf("Backup ID: %d\n", event.BackupStarted.backup_id);
printf("Data written: %llu bytes (%llu records)\n",
make_uint64(event.BackupStatus.n_bytes_lo,
event.BackupStatus.n_bytes_hi),
make_uint64(event.BackupStatus.n_records_lo,
event.BackupStatus.n_records_hi));
printf("Log written: %llu bytes (%llu records)\n",
make_uint64(event.BackupStatus.n_log_bytes_lo,
event.BackupStatus.n_log_bytes_hi),
make_uint64(event.BackupStatus.n_log_records_lo,
event.BackupStatus.n_log_records_hi));
break;
case NDB_LE_BackupCompleted:
printf("Node %d: BackupCompleted\n", event.source_nodeid);
printf("Backup ID: %d\n", event.BackupStarted.backup_id);
printf("Data written: %llu bytes (%llu records)\n",
make_uint64(event.BackupCompleted.n_bytes,
event.BackupCompleted.n_bytes_hi),
make_uint64(event.BackupCompleted.n_records,
event.BackupCompleted.n_records_hi));
printf("Log written: %llu bytes (%llu records)\n",
make_uint64(event.BackupCompleted.n_log_bytes,
event.BackupCompleted.n_log_bytes_hi),
make_uint64(event.BackupCompleted.n_log_records,
event.BackupCompleted.n_log_records_hi));
break;
case NDB_LE_BackupAborted:
printf("Node %d: BackupAborted\n", event.source_nodeid);
break;
case NDB_LE_BackupFailedToStart:
printf("Node %d: BackupFailedToStart\n", event.source_nodeid);
break;
case NDB_LE_NodeFailCompleted:
printf("Node %d: NodeFailCompleted\n", event.source_nodeid);
break;
case NDB_LE_ArbitResult:
printf("Node %d: ArbitResult\n", event.source_nodeid);
printf("code %d, arbit_node %d\n",
event.ArbitResult.code & 0xffff,
event.ArbitResult.arbit_node);
break;
case NDB_LE_DeadDueToHeartbeat:
printf("Node %d: DeadDueToHeartbeat\n", event.source_nodeid);
printf("node %d\n", event.DeadDueToHeartbeat.node);
break;
case NDB_LE_Connected:
printf("Node %d: Connected\n", event.source_nodeid);
printf("node %d\n", event.Connected.node);
break;
case NDB_LE_Disconnected:
printf("Node %d: Disconnected\n", event.source_nodeid);
printf("node %d\n", event.Disconnected.node);
break;
case NDB_LE_NDBStartCompleted:
printf("Node %d: StartCompleted\n", event.source_nodeid);
printf("version %d.%d.%d\n",
event.NDBStartCompleted.version >> 16 & 0xff,
event.NDBStartCompleted.version >> 8 & 0xff,
event.NDBStartCompleted.version >> 0 & 0xff);
break;
case NDB_LE_ArbitState:
printf("Node %d: ArbitState\n", event.source_nodeid);
printf("code %d, arbit_node %d\n",
event.ArbitState.code & 0xffff,
event.ArbitResult.arbit_node);
break;
default:
break;
}
}
}
ndb_mgm_destroy_logevent_handle(&le);
ndb_mgm_destroy_handle(&h);
ndb_end(0);
return 0;
}
3.6.2. Обработка событий MGM API с многократными кластерами
storage/ndb/ndbapi-examples/mgmapi_logevent2/main.cpp
.mgmapi_logevent2.cpp
.
#include <mysql.h>
#include <ndbapi/NdbApi.hpp>
#include <mgmapi.h>
#include <stdio.h>
#include <stdlib.h>
/*
* export LD_LIBRARY_PATH=../../../libmysql_r/.libs:../../../ndb/src/.libs
*/
#define MGMERROR(h) \
{ \
fprintf(stderr, "code: %d msg: %s\n", \
ndb_mgm_get_latest_error(h), \
ndb_mgm_get_latest_error_msg(h)); \
exit(-1); \
}
#define LOGEVENTERROR(h) \
{ \
fprintf(stderr, "code: %d msg: %s\n", \
ndb_logevent_get_latest_error(h), \
ndb_logevent_get_latest_error_msg(h)); \
exit(-1); \
}
int main(int argc, char** argv)
{
NdbMgmHandle h1,h2;
NdbLogEventHandle le1,le2;
int filter[] = {15, NDB_MGM_EVENT_CATEGORY_BACKUP,
15, NDB_MGM_EVENT_CATEGORY_CONNECTION,
15, NDB_MGM_EVENT_CATEGORY_NODE_RESTART,
15, NDB_MGM_EVENT_CATEGORY_STARTUP,
15, NDB_MGM_EVENT_CATEGORY_ERROR, 0};
struct ndb_logevent event1, event2;
if (argc < 3)
{
printf("Arguments are <connect_string cluster 1>",
"<connect_string cluster 2> [<iterations>].\n");
exit(-1);
}
const char *connectstring1 = argv[1];
const char *connectstring2 = argv[2];
int iterations = -1;
if (argc > 3) iterations = atoi(argv[3]);
ndb_init();
h1= ndb_mgm_create_handle();
h2= ndb_mgm_create_handle();
if (h1 == 0 || h2 == 0)
{
printf("Unable to create handle\n");
exit(-1);
}
if (ndb_mgm_set_connectstring(h1, connectstring1) == -1 ||
ndb_mgm_set_connectstring(h2, connectstring1))
{
printf("Unable to set connection string\n");
exit(-1);
}
if (ndb_mgm_connect(h1,0,0,0)) MGMERROR(h1);
if (ndb_mgm_connect(h2,0,0,0)) MGMERROR(h2);
if ((le1= ndb_mgm_create_logevent_handle(h1, filter)) == 0) MGMERROR(h1);
if ((le2= ndb_mgm_create_logevent_handle(h1, filter)) == 0) MGMERROR(h2);
while (iterations-- != 0)
{
int timeout= 1000;
int r1= ndb_logevent_get_next(le1,&event1,timeout);
if (r1 == 0) printf("No event within %d milliseconds\n", timeout);
else if (r1 < 0) LOGEVENTERROR(le1)
else
{
switch (event1.type) {
case NDB_LE_BackupStarted:
printf("Node %d: BackupStarted\n", event1.source_nodeid);
printf("Starting node ID: %d\n", event1.BackupStarted.starting_node);
printf("Backup ID: %d\n", event1.BackupStarted.backup_id);
break;
case NDB_LE_BackupCompleted:
printf("Node %d: BackupCompleted\n", event1.source_nodeid);
printf("Backup ID: %d\n", event1.BackupStarted.backup_id);
break;
case NDB_LE_BackupAborted:
printf("Node %d: BackupAborted\n", event1.source_nodeid);
break;
case NDB_LE_BackupFailedToStart:
printf("Node %d: BackupFailedToStart\n", event1.source_nodeid);
break;
case NDB_LE_NodeFailCompleted:
printf("Node %d: NodeFailCompleted\n", event1.source_nodeid);
break;
case NDB_LE_ArbitResult:
printf("Node %d: ArbitResult\n", event1.source_nodeid);
printf("code %d, arbit_node %d\n",
event1.ArbitResult.code & 0xffff,
event1.ArbitResult.arbit_node);
break;
case NDB_LE_DeadDueToHeartbeat:
printf("Node %d: DeadDueToHeartbeat\n", event1.source_nodeid);
printf("node %d\n", event1.DeadDueToHeartbeat.node);
break;
case NDB_LE_Connected:
printf("Node %d: Connected\n", event1.source_nodeid);
printf("node %d\n", event1.Connected.node);
break;
case NDB_LE_Disconnected:
printf("Node %d: Disconnected\n", event1.source_nodeid);
printf("node %d\n", event1.Disconnected.node);
break;
case NDB_LE_NDBStartCompleted:
printf("Node %d: StartCompleted\n", event1.source_nodeid);
printf("version %d.%d.%d\n",
event1.NDBStartCompleted.version >> 16 & 0xff,
event1.NDBStartCompleted.version >> 8 & 0xff,
event1.NDBStartCompleted.version >> 0 & 0xff);
break;
case NDB_LE_ArbitState:
printf("Node %d: ArbitState\n", event1.source_nodeid);
printf("code %d, arbit_node %d\n",
event1.ArbitState.code & 0xffff,
event1.ArbitResult.arbit_node);
break;
default:
break;
}
}
int r2= ndb_logevent_get_next(le1,&event2,timeout);
if (r2 == 0) printf("No event within %d milliseconds\n", timeout);
else if (r2 < 0) LOGEVENTERROR(le2)
else
{
switch (event2.type) {
case NDB_LE_BackupStarted:
printf("Node %d: BackupStarted\n", event2.source_nodeid);
printf("Starting node ID: %d\n", event2.BackupStarted.starting_node);
printf("Backup ID: %d\n", event2.BackupStarted.backup_id);
break;
case NDB_LE_BackupCompleted:
printf("Node %d: BackupCompleted\n", event2.source_nodeid);
printf("Backup ID: %d\n", event2.BackupStarted.backup_id);
break;
case NDB_LE_BackupAborted:
printf("Node %d: BackupAborted\n", event2.source_nodeid);
break;
case NDB_LE_BackupFailedToStart:
printf("Node %d: BackupFailedToStart\n", event2.source_nodeid);
break;
case NDB_LE_NodeFailCompleted:
printf("Node %d: NodeFailCompleted\n", event2.source_nodeid);
break;
case NDB_LE_ArbitResult:
printf("Node %d: ArbitResult\n", event2.source_nodeid);
printf("code %d, arbit_node %d\n",
event2.ArbitResult.code & 0xffff,
event2.ArbitResult.arbit_node);
break;
case NDB_LE_DeadDueToHeartbeat:
printf("Node %d: DeadDueToHeartbeat\n", event2.source_nodeid);
printf("node %d\n", event2.DeadDueToHeartbeat.node);
break;
case NDB_LE_Connected:
printf("Node %d: Connected\n", event2.source_nodeid);
printf("node %d\n", event2.Connected.node);
break;
case NDB_LE_Disconnected:
printf("Node %d: Disconnected\n", event2.source_nodeid);
printf("node %d\n", event2.Disconnected.node);
break;
case NDB_LE_NDBStartCompleted:
printf("Node %d: StartCompleted\n", event2.source_nodeid);
printf("version %d.%d.%d\n",
event2.NDBStartCompleted.version >> 16 & 0xff,
event2.NDBStartCompleted.version >> 8 & 0xff,
event2.NDBStartCompleted.version >> 0 & 0xff);
break;
case NDB_LE_ArbitState:
printf("Node %d: ArbitState\n", event2.source_nodeid);
printf("code %d, arbit_node %d\n",
event2.ArbitState.code & 0xffff,
event2.ArbitResult.arbit_node);
break;
default:
break;
}
}
}
ndb_mgm_destroy_logevent_handle(&le1);
ndb_mgm_destroy_logevent_handle(&le2);
ndb_mgm_destroy_handle(&h1);
ndb_mgm_destroy_handle(&h2);
ndb_end(0);
return 0;
}
Найди своих коллег! |
Вы можете направить письмо администратору этой странички, Алексею Паутову.