Глава 6. Программы NDB Cluster

Использование и управление NDB Cluster требует нескольких специализированных программ, которые мы описываем в этой главе. Мы обсуждаем цели этих программ в NDB Cluster, как использовать программы, и какие опции запуска доступны для каждой из них.

Эти программы включают данные о NDB Cluster data, управление и процессы узла SQL ( ndbd, ndbmtd, ndb_mgmd и mysqld) и клиент управления ( ndb_mgm).

Информация о программе ndb_setup.py, используемой, чтобы начать NDB Cluster Auto-Installer, также включена в эту секцию. Необходимо знать, что раздел 6.27 содержит информацию только о клиенте командной строки, для получения информации об использовании инсталлятора GUI, порожденного этой программой, чтобы формировать и развернуть NDB Cluster, см. раздел 4.1.

Для получения информации об использовании mysqld как NDB Cluster см. раздел 7.4.

Другие утилиты NDB, диагностические и примеры программы включены в дистрибутив NDB Cluster. Они включают ndb_restore, ndb_show_tables и ndb_config. Эти программы также покрыты этой секцией.

Заключительная часть этой секции содержит таблицы опций, которые характерны для всех различных программ NDB Cluster.

6.1. ndbd NDB Cluster Data Node Daemon

ndbd это процесс, который используется, чтобы обработать все данные в таблицах, используя механизм хранения NDB Cluster. Это процесс, который уполномочивает узел данных достигать обработки распределенной транзакции, восстановления узла, сбросу контрольных точек на диск, резервной копии онлайн и связанным задачам.

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

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

Таблица 6.1. Параметры командной строки для ndbd

ndbd, которым управляют, на переднем плане, предусмотрел отладку (подразумевает --nodaemon)
ФорматОписание Добавлено, устарело или удалено

--bind-address=name

Местный адрес

Все выпуски на основе MySQL 5.7

--connect-delay=#

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

Все выпуски на основе MySQL 5.7

--connect-retries=#

Установите сколько раз повторять связь перед отказом. 0 значит только 1 попытка (и никаких повторений)

Все выпуски на основе MySQL 5.7

--connect-retry-delay=#

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

Все выпуски на основе MySQL 5.7

--daemon,

-d

Начните ndbd как демона (по умолчанию). Перекрывается --nodaemon

Все выпуски на основе MySQL 5.7

--foreground

Все выпуски на основе MySQL 5.7

--initial

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

Все выпуски на основе MySQL 5.7

--initial-start

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

Все выпуски на основе MySQL 5.7

--install[=name]

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

Все выпуски на основе MySQL 5.7

--logbuffer-size=#

Размер элемента управления буфера регистрации. Для использования отлаживая со многими производимыми сообщениями регистрации. Умолчание достаточно для нормального функционирования.

Добавлено в NDB 7.6.6

--nostart,

-n

Не начинайте ndbd немедленно. ndbd ждет команды, чтобы начаться с ndb_mgmd

Все выпуски на основе MySQL 5.7

--nodaemon

Не начинайте ndbd как демона, предусмотрено для тестирования

Все выпуски на основе MySQL 5.7

--nowait-nodes=list

Не ждите этих узлов данных, чтобы начаться (берет список разделенных запятой значений ID узла). Также требует --ndb-nodeid.

Все выпуски на основе MySQL 5.7

--remove[=name]

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

Все выпуски на основе MySQL 5.7

--verbose,

-v

Заставляет регистрацию данных писать дополнительную отладочную информацию узла.

Все выпуски на основе MySQL 5.7

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

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

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

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

Чтобы начать ndbd, может также быть необходимо определить имя хоста сервера управления и порт, на котором это слушает. Произвольно, можно также определить ID узла, который должен использовать процесс.

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

См. раздел 5.3.3 для получения дополнительной информации об этой проблеме. Раздел 6.32 описывает другие параметры командной строки, которые могут использоваться с ndbd. Для получения информации о параметрах конфигурации узла данных посмотрите раздел 5.3.6.

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

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

Для машины со многими CPU возможно использовать несколько процессов ndbd, которые принадлежат различным группам узлов, однако, такую конфигурацию все еще считают экспериментальной и не поддерживают для MySQL 5.7 в производственном режиме. Посмотрите раздел 3.7.

6.2. ndbinfo_select_all выбор из таблиц ndbinfo

ndbinfo_select_all это программа клиента, которая выбирает все строки и колонки от одной или более таблиц в БД ndbinfo.

Не все таблицы ndbinfo, доступные в клиенте mysql, могут быть прочитаны этой программой. Кроме того, ndbinfo_select_all может показать информацию о некоторых таблицах, внутренних для ndbinfo, к которым нельзя получить доступ, используя SQL, включая таблицы метаданных tables и columns.

Чтобы выбрать от одной или больше таблиц ndbinfo, используя ndbinfo_select_all, необходимо поставлять названия таблиц, вызывая программу, как показано здесь:

shell> ndbinfo_select_all table_name1[table_name2] [...]

Например:

shell> ndbinfo_select_all logbuffers logspaces
== logbuffers ==
node_id log_type        log_id  log_part        total   used    high
5       0       0       0       33554432        262144  0
6       0       0       0       33554432        262144  0
7       0       0       0       33554432        262144  0
8       0       0       0       33554432        262144  0

== logspaces ==
node_id log_type        log_id  log_part        total   used    high
5       0       0       0       268435456       0       0
5       0       0       1       268435456       0       0
5       0       0       2       268435456       0       0
5       0       0       3       268435456       0       0
6       0       0       0       268435456       0       0
6       0       0       1       268435456       0       0
6       0       0       2       268435456       0       0
6       0       0       3       268435456       0       0
7       0       0       0       268435456       0       0
7       0       0       1       268435456       0       0
7       0       0       2       268435456       0       0
7       0       0       3       268435456       0       0
8       0       0       0       268435456       0       0
8       0       0       1       268435456       0       0
8       0       0       2       268435456       0       0
8       0       0       3       268435456       0       0
shell>

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

Таблица 6.2. Параметры командной строки для ndbinfo_select_all

ФорматОписание Добавлено, устарело или удалено

--delay=#

Установите задержку в секундах между циклами, умолчание 5.

Все выпуски на основе MySQL 5.7

--loops=# ,

-l

Установите сколько раз выполнять выборку, по умолчанию 1.

Все выпуски на основе MySQL 5.7

--database=db_name ,

-d

Название базы данных, где таблица расположена.

Все выпуски на основе MySQL 5.7

--parallelism=# ,

-p

Установите степень параллелизма.

Все выпуски на основе MySQL 5.7

6.3. ndbmtd NDB Cluster Data Node Daemon (Multi-Threaded)

ndbmtd это многопоточная версия ndbd, процесса, который используется, чтобы обработать все данные в таблицах, используя NDBCLUSTER. ndbmtd предназначается для использования на компьютерах, имеющих многократные ядра процессора. Если не отмечено иное, ndbmtd функционирует таким же образом, как ndbd, поэтому, в этой секции, мы концентрируемся на моментах, которыми ndbmtd отличается от ndbd, необходимо консультироваться с разделом 6.1 для получения дополнительной информации об управлении узлами данных NDB Cluster, которые относятся к однопоточным и многопоточным версиям процесса узла данных.

Параметры командной строки и параметры конфигурации, используемые с ndbd, также относятся к ndbmtd. Для получения дополнительной информации об этих опциях и параметрах посмотрите разделы 6.1 и 5.3.6.

ndbmtd также совместим с файловой системой ndbd. Другими словами, узел данных, работающий с ndbd, может быть остановлен, заменен на ndbmtd, а затем перезапущен без любой потери данных. Однако, делая это, необходимо удостовериться, что MaxNoOfExecutionThreads установлен в правильное значение прежде, чем перезапустить узел, если вы хотите, чтобы ndbmtd работал многопоточным способом. Точно так же ndbmtd можно заменить на ndbd просто остановив узел и затем начав ndbd вместо многопоточного. Нет необходимости в опции --initial.

Отличия в применении ndbmtd от ndbd:

  1. Так как ndbmtd работает по умолчанию в виде единственного дерева сообщений (то есть, это ведет себя как ndbd), необходимо формировать его, чтобы использовать многократные потоки. Это может быть сделано, установив соответствующее значение в config.ini для MaxNoOfExecutionThreads или ThreadConfig. Использование MaxNoOfExecutionThreads проще, но ThreadConfig имеет больше гибкости. Для получения дополнительной информации об этих параметрах конфигурации и их использовании, посмотрите Multi-Threading Configuration Parameters (ndbmtd).

  2. Файлы трассировки произведены критическими ошибками в ndbmtd несколько отличным способом от того, как они произведены в ndbd.

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

В случае критической ошибки ndbmtd производит файлы трассировки, описывающие, что произошло только до возникновения ошибки. Эти файлы, которые могут быть найдены в каталоге DataDir узла данных, полезны для анализа проблем развития NDB Cluster и группы поддержки. Один файл трассировки произведен для каждого потока ndbmtd. У названий этих файлов есть следующий образец:

ndb_node_id_trace.log.trace_id_tthread_id,

В этом образце node_id указывает уникальный ID узла данных в группе, trace_id порядковый номер и thread_id номер ID потока. Например, в случае неудачи процесса ndbmtd, работающего как узел данных NDB Cluster, имеющий узел ID 3 и с MaxNoOfExecutionThreads = 4, четыре файла трассировки произведены в каталоге данных узла данных. Если это первый раз, когда этот узел потерпел неудачу, то эти файлы называют ndb_3_trace.log.1_t1, ndb_3_trace.log.1_t2, ndb_3_trace.log.1_t3 и ndb_3_trace.log.1_t4. Внутренне, эти файлы трассировки следуют за тем же самым форматом, как файлы трассировки ndbd.

Коды выхода ndbd и сообщения, которые произведены, когда процесс узла данных закрывается преждевременно, также используются ndbmtd. См. Data Node Error Messages.

Возможно использовать ndbd и ndbmtd одновременно на различных узлах данных в том же самом NDB Cluster. Однако, такие конфигурации не были проверены экстенсивно, таким образом мы не можем рекомендовать делать так в производственном режиме в это время.

6.4. ndb_mgmd NDB Cluster Management Server Daemon

Сервер управления это процесс, который читает файл кластерной конфигурации и распределяет эту информацию всем узлам в группе, которые просят его. Это также ведет журнал действий группы. Клиенты управления могут соединиться с сервером управления и проверить статус группы.

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

Таблица 6.3. Параметры командной строки для ndb_mgmd

ФорматОписание Добавлено, устарело или удалено

--bind-address=host

Локальный адрес.

Все выпуски на основе MySQL 5.7

--config-cache[=TRUE|FALSE]

Позвольте кэш конфигурации сервера управления, TRUE по умолчанию.

Все выпуски на основе MySQL 5.7

--config-file=file (>=),

-f(>=)

Определите файл кластерной конфигурации, в NDB 6.4.0 и позже нужна опция --reload или --initial, чтобы отвергнуть кэш конфигурации, если он существует.

Все выпуски на основе MySQL 5.7

--configdir=directory,

--config-dir=directory(>=7.0.8)

Определите каталог кэша конфигурации сервера управления.

Все выпуски на основе MySQL 5.7

--daemon,

-d

Выполнить ndb_mgmd как демон (по умолчанию)

Все выпуски на основе MySQL 5.7

--initial

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

Все выпуски на основе MySQL 5.7

--install[=name]

Используется, чтобы установить процесс сервера управления как службу Windows. Не применяется на платформах не-Windows.

Все выпуски на основе MySQL 5.7

--interactive

Выполнить ndb_mgmd в интерактивном режиме (официально не поддержано в производстве, только для целей тестирования)

Все выпуски на основе MySQL 5.7

--log-name=name

Имя, чтобы использовать, создавая сообщения, относящиеся к этому узлу в регистрации группы.

Все выпуски на основе MySQL 5.7

--mycnf

Прочитать данные о кластерной конфигурации из файла my.cnf.

Все выпуски на основе MySQL 5.7

--no-nodeid-checks

Не предоставлять идентификационные проверки узла.

Все выпуски на основе MySQL 5.7

--nodaemon

Не выполнять ndb_mgmd как демон

Все выпуски на основе MySQL 5.7

--nowait-nodes=list

Не ждать этих узлов управления, начиная этот сервер управления. Также требует --ndb-nodeid.

Все выпуски на основе MySQL 5.7

--print-full-config ,

-P

Напечатать полную конфигурацию и завершить работу.

Все выпуски на основе MySQL 5.7

--reload

Заставляет сервер управления сравнивать конфигурационный файл со своим кэшем конфигурации

Все выпуски на основе MySQL 5.7

--remove[=name]

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

Все выпуски на основе MySQL 5.7

--verbose,

-v

Напишите дополнительную информацию в журнал.

Все выпуски на основе MySQL 5.7

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

См. раздел 5.3.3 для получения информации об использовании строк подключения. Раздел 6.4 описывает другие возможности для ndb_mgmd.

Следующие файлы создаются или используются ndb_mgmd в его начальном каталоге и помещаются в DataDir как определено в в config.ini. В списке ниже node_id это уникальный идентификатор узла.

6.5. ndb_mgm NDB Cluster Management Client

ndb_mgm клиентский процесс управления на самом деле не так уж необходим, чтобы управлять кластером. Его значение находится в обеспечении ряда команд для проверки статуса, старта резервных копий и выполнения других административных функций. Клиент управления получает доступ к серверу управления, используя API C. Опытные пользователи могут также использовать этот API для программирования специальных процессов управления, чтобы выполнить задачи, подобные выполненным ndb_mgm.

Чтобы начать клиента управления, необходимо поставлять имя хоста и номер порта сервера управления:

shell> ndb_mgm [host_name [port_num]]

Например вот так:

shell> ndb_mgm ndb_mgmd.mysql.com 1186

Имя хоста по умолчанию и номер порта localhost и 1186.

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

Таблица 6.4. Параметры командной строки для ndb_mgm

ФорматОписание Добавлено, устарело или удалено

--try-reconnect=#,

-t

Установите сколько раз повторять связь перед отказом, синоним для --connect-retries.

Все выпуски на основе MySQL 5.7

--execute=name,

-e

Выполнить команду и выйти.

Все выпуски на основе MySQL 5.7

Дополнительная информация об использовании ndb_mgm может быть найдена в разделе 7.2.

6.6. ndb_blob_tool Проверка и ремонт столбцов BLOB и TEXT в NDB Cluster

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

Базовый синтаксис для ndb_blob_tool:

ndb_blob_tool [options]
              table
              [column, ...]

Если вы не используете опцию --help, необходимо определить действие, которое будет выполнено включением опций --check-orphans, --delete-orphans или --dump-file. Эти опции заставляют ndb_blob_tool проверять на потерянные части BLOB, удалять любые потерянные части BLOB и производить файл дампа, перечисляющий потерянные части BLOB, соответственно, и описаны более подробно позже в этой секции.

Необходимо также определить название таблицы, вызывая ndb_blob_tool. Кроме того, можно произвольно следовать за именем таблицы с (отделенными запятой) названиями одного или больше столбцов BLOB или TEXT. Если никакие колонки не перечисляются, инструмент работает со всеми столбцами BLOB и TEXT в таблице. Если необходимо определить базу данных, используйте опцию --database (-d).

Опция --verbose выбор предоставляет дополнительную информацию в выводе о прогрессе инструмента.

Следующая таблица включает опции, которые являются определенными для ndb_blob_tool.

Таблица 6.5. Параметры командной строки для ndb_blob_tool

ФорматОписание Добавлено, устарело или удалено

--add-missing

Напишите фиктивные части, чтобы заменить те, которые отсутствуют.

Добавлено в NDB 7.5.18, NDB 7.6.14.

--check-missing

Проверьте на объекты, имеющие действующие части, но пропускающие одну или более частей таблицы.

Добавлено в NDB 7.5.18, NDB 7.6.14.

--check-orphans

Проверьте на части, имеющие соответствующие действующие части.

Все выпуски на основе MySQL 5.7

--database=db_name ,

-d

База данных, чтобы найти таблицу.

Все выпуски на основе MySQL 5.7

--delete-orphans

Удалите части, имеющие соответствующие действующие части.

Все выпуски на основе MySQL 5.7

--dump-file=file

Напишите потерянные ключи к указанному файлу.

Все выпуски на основе MySQL 5.7

--verbose,

-v

Подробный отчет в выводе.

Все выпуски на основе MySQL 5.7

Примеры

Сначала мы создаем таблицу NDB в БД test, используя CREATE TABLE:

USE test;
CREATE TABLE btest (c0 BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
                    c1 TEXT, c2 BLOB) ENGINE=NDB;

Тогда мы вставляем несколько строк в эту таблицу, используя ряд запросов, подобных этому:

INSERT INTO btest VALUES (NULL, 'x', REPEAT('x', 1000));

При работе с --check-orphans для этой таблицы ndb_blob_tool производит следующий вывод:

shell> ndb_blob_tool --check-orphans --verbose -d test btest
connected
processing 2 blobs
processing blob #0 c1 NDB$BLOB_19_1
NDB$BLOB_19_1: nextResult: res=1
total parts: 0
orphan parts: 0
processing blob #1 c2 NDB$BLOB_19_2
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=0
NDB$BLOB_19_2: nextResult: res=1
total parts: 10
orphan parts: 0
disconnected
NDBT_ProgramExit: 0 - OK

Инструмент сообщает, что нет частей колонки BLOB, связанных с колонкой c1 даже при том, что c1 это TEXT. Это вследствие того, что в таблице NDB только первые 256 байтов BLOB или TEXT сохранены напрямую, а избыток, если есть, сохранен отдельно, таким образом, при отсутствии значений, использующих больше 256 байтов в данной колонке одного из этих типов, нет частей BLOB, создаваемых NDB для этой колонки. См. Data Type Storage Requirements.

6.7. ndb_config Распаковка информации конфигурации NDB Cluster

Этот инструмент извлекает текущую конфигурационную информацию для узлов данных, узлов SQL и узлов API из одного из многих источников: узел управления NDB Cluster или файл config.ini (или my.cnf). По умолчанию узел управления это источник для данных конфигурации, чтобы отвергнуть умолчание, используйте опцию --config-file или --mycnf . Также возможно использовать узел данных в качестве источника, определяя его ID с --config_from_node= node_id.

ndb_config может также обеспечить офлайновый дамп всех параметров конфигурации, которые могут использоваться, наряду с их умолчанием, максимумом и минимумом, а также другой информацией. Дамп может быть произведен в тексте или в формате XML, для получения дополнительной информации посмотрите обсуждение --configinfo и --xml.

Можно отфильтровать результаты секцией (DB, SYSTEM или CONNECTIONS) использованием одной из опций --nodes, --system или --connections.

Следующая таблица включает опции, которые являются определенными для ndb_config.

Таблица 6.6. Параметры командной строки для ndb_config

ФорматОписание Добавлено, устарело или удалено

--config-file=file_name

Установите путь к файлу config.ini

Все выпуски на основе MySQL 5.7

--config_from_node=#

Получите данные конфигурации из узла, имеющего этот ID (это должен быть узел данных).

Все выпуски на основе MySQL 5.7

--configinfo

Дамп информации обо всех параметрах конфигурации NDB в текстовом формате с умолчанием, максимумом и минимумом. Используйте с --xml, чтобы получить вывод XML.

Все выпуски на основе MySQL 5.7

--connections

Информация только о связях (разделы [tcp], [tcp default], [shm] или [shm default] файла кластерной конфигурации). Не может использоваться с --system или --nodes.

Все выпуски на основе MySQL 5.7

--diff-default

Только параметры конфигурации, у которых есть значения не по умолчанию.

Добавлено в NDB 7.5.7, NDB 7.6.3

--fields=string ,

-f

Разделитель полей.

Все выпуски на основе MySQL 5.7

--host=name

Указать хост.

Все выпуски на основе MySQL 5.7

--mycnf

Прочитайте данные конфигурации из my.cnf

Все выпуски на основе MySQL 5.7

--nodeid,

--id

Получите конфигурацию узла с этим ID.

Все выпуски на основе MySQL 5.7

--nodes

Информация только об узле (разделы [ndbd] или [ndbd default]). Не может использоваться с --system или --connections.

Все выпуски на основе MySQL 5.7

-c

Краткая форма --ndb-connectstring

Все выпуски на основе MySQL 5.7

--query=string,

-q

Одна или более опций запроса (признаки)

Все выпуски на основе MySQL 5.7

--query-all ,

-a

Дамп всех параметров и значений к единственной разграниченной запятой последовательности.

Добавлено в NDB 7.4.16, NDB 7.5.7

--rows=string,

-r

Разделитель строк

Все выпуски на основе MySQL 5.7

--system

Напечатайте информацию только о секции SYSTEM (см. вывод ndb_config --configinfo). Не может использоваться с --nodes или --connections.

Все выпуски на основе MySQL 5.7

--type=name

Определите тип узла

Все выпуски на основе MySQL 5.7

--configinfo --xml

Используйте --xml с --configinfo, чтобы получить дамп всех параметров конфигурации NDB в формате XML с умолчанием, максимумом и минимальными значениями.

Все выпуски на основе MySQL 5.7

Объединение других опций ndb_config (например, --query или --type) с --configinfo (безотносительно --xml не поддерживается. В настоящее время при попытке сделать так, обычный результат состоит в том, что все другие опции, кроме --configinfo или --xml проигнорированы. Однако, это поведение не гарантируется и подвержено изменениям в любое время. Кроме того, с тех пор, как ndb_config используется с --configinfo не получает доступ к NDB Cluster или прочитать любые файлы, пытаясь определить дополнительные опции, например --ndb-connectstring или --config-file, --configinfo не служит никакой цели.

Примеры

  1. Получить ID узла и тип каждого узла в группе:

    shell> ./ndb_config --query=nodeid,type --fields=':' --rows='\n'
    1:ndbd
    2:ndbd
    3:ndbd
    4:ndbd
    5:ndb_mgmd
    6:mysqld
    7:mysqld
    8:mysqld
    9:mysqld
    

    В этом примере мы использовали --fields, чтобы отделить ID и тип каждого узла символом двоеточия (:) и --rows, чтобы поместить значения для каждого узла на новой строке в выводе.

  2. Произвести строку подключения, которая может использоваться узлами данных, SQL и API, чтобы соединиться с сервером управления:

    shell> ./ndb_config --config-file=usr/local/mysql/cluster-data/config.ini \
                           --query=hostname,portnumber --fields=: --rows=, \
                           --type=ndb_mgmd
    198.51.100.179:1186
    
  3. Этот вызов ndb_config проверяет только узлы данных (используя --type) и показывает значения для ID каждого узла и имени хоста, а также набор значений для их DataMemory и DataDir:

    shell> ./ndb_config --type=ndbd --query=nodeid,host,datamemory,datadir \
                           -f ' : ' -r '\n'
    1 : 198.51.100.193 : 83886080 : /usr/local/mysql/cluster-data
    2 : 198.51.100.112 : 83886080 : /usr/local/mysql/cluster-data
    3 : 198.51.100.176 : 83886080 : /usr/local/mysql/cluster-data
    4 : 198.51.100.119 : 83886080 : /usr/local/mysql/cluster-data
    

    В этом примере мы использовали короткие опции -f и -r для урегулирования разделителя полей и сепаратора строк соответственно, а также короткую опцию -q, чтобы передать список параметров, которые будут получены.

  4. Чтобы исключить результаты любого хоста кроме одного, используйте --host:

    shell> ./ndb_config --host=198.51.100.176 -f : -r '\n' -q id,type
    3:ndbd
    5:ndb_mgmd
    

    В этом примере мы также использовали краткую форму -q, чтобы определить признаки, которые будут показаны.

    Точно так же можно ограничить результаты узлом с определенным ID, используя --nodeid.

6.8. ndb_cpcd автотест для разработки NDB

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

6.9. ndb_delete_all Удаляет все строки из таблицы NDB

ndb_delete_all удаляет все строки из таблицы NDB. В некоторых случаях это может быть намного быстрее, чем DELETE или TRUNCATE TABLE.

Применение

ndb_delete_all -c connection_string tbl_name -d db_name

Это удаляет все строки из таблицы tbl_name в БД db_name. Это точно эквивалентно выполнению TRUNCATE db_name. tbl_name в MySQL.

Следующая таблица включает опции, которые являются определенными для ndb_delete_all.

Таблица 6.7. Параметры командной строки для ndb_delete_all

ФорматОписание Добавлено, устарело или удалено

--database=dbname,

-d

Название базы данных, в которой найдена таблица

Все выпуски на основе MySQL 5.7

--transactional ,

-t

Выполнить удаление в единственной транзакции (может исчерпать операции)

Все выпуски на основе MySQL 5.7

--tupscan

Выполнить просмотр кортежа

Все выпуски на основе MySQL 5.7

--diskscan

Выполнить дисковый просмотр

Все выпуски на основе MySQL 5.7

6.10. ndb_desc Описание таблиц NDB

ndb_desc предоставляет подробное описание одной или больше таблиц NDB.

Применение

ndb_desc -c connection_string tbl_name -d db_name [options]
ndb_desc -c connection_string index_name -d db_name -t tbl_name

Дополнительные опции, которые могут использоваться с ndb_desc, перечисляются позже в этой секции.

Образец вывода

Создание таблицы MySQL и наполнение:

USE test;
CREATE TABLE fish (id INT(11) NOT NULL AUTO_INCREMENT,
                   name VARCHAR(20) NOT NULL, length_mm INT(11) NOT NULL,
                   weight_gm INT(11) NOT NULL, PRIMARY KEY pk (id),
                   UNIQUE KEY uk (name)) ENGINE=NDB;
INSERT INTO fish VALUES
  (NULL, 'guppy', 35, 2), (NULL, 'tuna', 2500, 150000),
  (NULL, 'shark', 3000, 110000), (NULL, 'manta ray', 1500, 50000),
  (NULL, 'grouper', 900, 125000), (NULL ,'puffer', 250, 2500);

Вывод ndb_desc:

shell> ./ndb_desc -c localhost fish -d test -p
-- fish --
Version: 2
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 1
Length of frm data: 337
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 2
FragmentCount: 2
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:
HashMap: DEFAULT-HASHMAP-3840-2
-- Attributes --
id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY DYNAMIC
length_mm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC
weight_gm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC
-- Indexes --
PRIMARY KEY(id) - UniqueHashIndex
PRIMARY(id) - OrderedIndex
uk(name) - OrderedIndex
uk$unique(name) - UniqueHashIndex
-- Per partition info --
Partition Row count Commit countFrag fixed memory Frag varsized memoryExtent_spaceFree extent_space
0 2 2 32768 32768 0 0
1 4 4 32768 32768 0 0
NDBT_ProgramExit: 0 - OK

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

Можно получить дополнительную информацию об определенном индексе, используя --table (краткая форма: -t) и название индекса как первый аргумент ndb_desc:

shell> ./ndb_desc uk -d test -t fish
-- uk --
Version: 2
Base table: fish
Number of attributes: 1
Logging: 0
Index type: OrderedIndex
Index status: Retrieved
-- Attributes --
name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY
-- IndexTable 10/uk --
Version: 2
Fragment type: FragUndefined
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: yes
Number of attributes: 2
Number of primary keys: 1
Length of frm data: 0
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 2
ForceVarPart: 0
PartitionCount: 2
FragmentCount: 2
FragmentCountType: ONE_PER_LDM_PER_NODE
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:
-- Attributes --
name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY
NDB$TNODE Unsigned [64] PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY
-- Indexes --
PRIMARY KEY(NDB$TNODE) - UniqueHashIndex
NDBT_ProgramExit: 0 - OK

Когда индекс определяется таким образом, --extra-partition-info и --extra-node-info не работают.

Столбец Version в выводе содержит версию объекта схемы таблицы. Для получения информации об интерпретации этого значения см. NDB Schema Object Versions.

Три из свойств таблицы, которые могут быть установлены, используя комментарий NDB_TABLE в CREATE TABLE и ALTER TABLE, также видимы в выводе ndb_desc. FRAGMENT_COUNT_TYPE таблицы всегда показывается в столбце FragmentCountType. READ_ONLY и FULLY_REPLICATED, если 1, показаны в столбце Table options. Вы видите это после выполнения следующего ALTER TABLE в клиенте mysql:

mysql> ALTER TABLE fish COMMENT='NDB_TABLE=READ_ONLY=1,FULLY_REPLICATED=1';
1 row in set, 1 warning (0.00 sec)
mysql> SHOW WARNINGS\G
+---------+------+---------------------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                                 |
+---------+------+---------------------------------------------------------------------------------------------------------+
| Warning | 1296 | Got error 4503 'Table property is FRAGMENT_COUNT_TYPE=ONE_PER_LDM_PER_NODE but not in comment' from NDB |
+---------+------+---------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

Предупреждение выпущено потому, что READ_ONLY=1 требует, чтобы тип количества фрагментов таблицы был (или был установлен в) ONE_PER_LDM_PER_NODE_GROUP, NDB установит это автоматически в таких случаях. Можно проверить, что ALTER TABLE имеет желаемое использование эффекта SHOW CREATE TABLE:

mysql> SHOW CREATE TABLE fish\G
*************************** 1. row ***************************
 Table: fish
Create Table: CREATE TABLE `fish` (`id` int(11) NOT NULL AUTO_INCREMENT,
                                   `name` varchar(20) NOT NULL,
                                   `length_mm` int(11) NOT NULL,
                                   `weight_gm` int(11) NOT NULL,
                                   PRIMARY KEY (`id`),
                                   UNIQUE KEY `uk` (`name`))
                                   ENGINE=ndbcluster DEFAULT CHARSET=latin1
                                   COMMENT='NDB_TABLE=READ_BACKUP=1,
                                   FULLY_REPLICATED=1'
1 row in set (0.01 sec)

Так как FRAGMENT_COUNT_TYPE не был установлен явно, его значение не показывают в тексте комментария, напечатанном SHOW CREATE TABLE. ndb_desc, однако, показывает обновленное значение для этого признака. Столбец Table options показывает, что двоичные свойства просто включены. Вы видите это в выводе, показанном здесь (подчеркнутый текст):

shell> ./ndb_desc -c localhost fish -d test -p
-- fish --
Version: 4
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 1
Length of frm data: 380
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 1
FragmentCount: 1
FragmentCountType: ONE_PER_LDM_PER_NODE_GROUP
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options: readbackup, fullyreplicated
HashMap: DEFAULT-HASHMAP-3840-1
-- Attributes --
id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY DYNAMIC
length_mm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC
weight_gm Int NOT NULL AT=FIXED ST=MEMORY DYNAMIC
-- Indexes --
PRIMARY KEY(id) - UniqueHashIndex
PRIMARY(id) - OrderedIndex
uk(name) - OrderedIndex
uk$unique(name) - UniqueHashIndex
-- Per partition info --
Partition Row count Commit count Frag fixed memory Frag var sized memory Extent_space Free extent_space
NDBT_ProgramExit: 0 - OK

Для получения дополнительной информации об этих свойствах таблицы, посмотрите Setting NDB_TABLE Options.

Столбцы Extent_space и Free extent_space применимы только к таблицам, имеющие колонки на диске. Для таблиц, имеющих колонки только в памяти, эти колонки всегда содержат значение 0.

Чтобы иллюстрировать их использование, мы изменяем предыдущий пример. Во-первых, мы должны создать необходимые дисковые объекты данных, как показано здесь:

CREATE LOGFILE GROUP lg_1 ADD UNDOFILE 'undo_1.log' INITIAL_SIZE 16M
       UNDO_BUFFER_SIZE 2M ENGINE NDB;
ALTER LOGFILE GROUP lg_1 ADD UNDOFILE 'undo_2.log'
      INITIAL_SIZE 12M ENGINE NDB;
CREATE TABLESPACE ts_1 ADD DATAFILE 'data_1.dat' USE LOGFILE GROUP lg_1
       INITIAL_SIZE 32M ENGINE NDB;
ALTER TABLESPACE ts_1 ADD DATAFILE 'data_2.dat'
      INITIAL_SIZE 48M ENGINE NDB;

Для получения дополнительной информации о показанных запросах и объектах, созданных ими, посмотрите раздел 7.13.1, а также CREATE LOGFILE GROUP Statement и CREATE TABLESPACE Statement.

Теперь мы можем создать и наполнить версию таблицу fish, которая хранит 2 из ее колонок на диске (удаляя предыдущую версию таблицы сначала, если это еще существует):

CREATE TABLE fish (id INT(11) NOT NULL AUTO_INCREMENT,
                   name VARCHAR(20) NOT NULL, length_mm INT(11) NOT NULL,
                   weight_gm INT(11) NOT NULL, PRIMARY KEY pk (id),
                   UNIQUE KEY uk (name)) TABLESPACE ts_1
                   STORAGE DISK ENGINE=NDB;
INSERT INTO fish VALUES
  (NULL, 'guppy', 35, 2), (NULL, 'tuna', 2500, 150000),
  (NULL, 'shark', 3000, 110000), (NULL, 'manta ray', 1500, 50000),
  (NULL, 'grouper', 900, 125000), (NULL ,'puffer', 250, 2500);

Теперь ndb_desc показывает следующий вывод:

shell> ./ndb_desc -c localhost fish -d test -p
-- fish --
Version: 1
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 1
Length of frm data: 346
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 2
FragmentCount: 2
FragmentCountType: ONE_PER_LDM_PER_NODE
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:
HashMap: DEFAULT-HASHMAP-3840-2
-- Attributes --
id Int PRIMARY KEY DISTRIBUTION KEY AT=FIXED ST=MEMORY AUTO_INCR
name Varchar(20;latin1_swedish_ci) NOT NULL AT=SHORT_VAR ST=MEMORY
length_mm Int NOT NULL AT=FIXED ST=DISK
weight_gm Int NOT NULL AT=FIXED ST=DISK
-- Indexes --
PRIMARY KEY(id) - UniqueHashIndex
PRIMARY(id) - OrderedIndex
uk(name) - OrderedIndex
uk$unique(name) - UniqueHashIndex
-- Per partition info --
Partition Row count Commit count Frag fixed memory Frag varsized memory Extent_space Free extent_space
0 2 2 32768 32768 1048576 1044440
1 4 4 32768 32768 1048576 1044400
NDBT_ProgramExit: 0 - OK

Это означает, что 1048576 байтов ассигнуются от табличного пространства для этой таблицы на каждом разделении, от которых 1044440 байтов остаются свободными для дополнительного хранения. Другими словами, 1048576 - 1044440 = 4136 байтов на разделение в настоящее время используется, чтобы хранить данные из находящихся на диске колонок этой таблицы. Число байтов, показанное как Free extent_space, доступно для того, чтобы хранить данные о колонке на диске только от таблицы fish, поэтому, это невидимо, выбирая из таблицы INFORMATION_SCHEMA.FILES.

Для полностью копируемых таблиц ndb_desc показывает только узлы, содержащие точные копии фрагмента основного раздела, узлы с точными копиями фрагмента копии (только) проигнорированы. Начиная с NDB 7.5.4, можно получить такую информацию, используя клиент mysql, из таблиц table_distribution_status, table_fragments, table_info и table_replicas в БД ndbinfo.

Таблица 6.8. Параметры командной строки для ndb_desc

ФорматОписание Добавлено, устарело или удалено

--blob-info,

-b

Включайте информацию о разделении для таблиц BLOB в вывод. Требует, чтобы -p также использовалась

Все выпуски на основе MySQL 5.7

--database=dbname ,

-d

Название базы данных, содержащей таблицу

Все выпуски на основе MySQL 5.7

--extra-node-info ,

-n

Включайте разделение в отображения узла данных в вывод. Требует, чтобы использовалась опция -p

Все выпуски на основе MySQL 5.7

--extra-partition-info,

-p

Показать информацию о разделении

Все выпуски на основе MySQL 5.7

--retries=#,

-r

Сколько раз повторить связь (однажды в секунду)

Все выпуски на основе MySQL 5.7

--table=tbl_name,

-t

Определите таблицу, в которой можно найти индекс. Когда этот выбор используется, -p и -n не имеют никакого эффекта и проигнорированы.

Все выпуски на основе MySQL 5.7

--unqualified ,

-u

Используйте неквалифицированные имена таблиц

Все выпуски на основе MySQL 5.7

В NDB 7.5.3 и позже индексы таблицы, перечисленные в выводе, упорядочены по ID. Ранее, это не было детерминировано и могло измениться между платформами (Bug #81763, Bug #23547742).

6.11. ndb_drop_index Удаление индекса из таблицы NDB

ndb_drop_index исключает указанный индекс из таблицы NDB table. Рекомендуется, чтобы вы использовали эту утилиту только в качестве примера для написания приложения NDB API.

Применение

ndb_drop_index -c connection_string table_name index -d db_name

Это удаляет индекс index из таблицы table в БД database.

Таблица 6.9. Параметры командной строки для ndb_drop_index

ФорматОписание Добавлено, устарело или удалено

--database=dbname,

-d

Название базы данных, в которой найдена таблица

Все выпуски на основе MySQL 5.7

Операции, выполненные на индексах таблиц Cluster, используя API NDB, невидимы MySQL и делают таблицу непригодной для сервера MySQL. При использовании этой программы, чтобы удалить индекс с последующей попыткой получить доступ к таблице от узла SQL, будет ошибка, как показано здесь:

shell> ./ndb_drop_index -c localhost dogs ix -d ctest1
Dropping index dogs/idx...OK
NDBT_ProgramExit: 0 - OK

shell> ./mysql -u jon -p ctest1
Enter password: *******
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor.Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 5.7.29-ndb-7.5.17
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SHOW TABLES;
+------------------+
| Tables_in_ctest1 |
+------------------+
| a                |
| bt1              |
| bt2              |
| dogs             |
| employees        |
| fish             |
+------------------+
6 rows in set (0.00 sec)

mysql> SELECT * FROM dogs;
ERROR 1296 (HY000): Got error 4243
'Index not found' from NDBCLUSTER

В таком случае ваш единственный выбор для предоставления доступа к таблице для MySQL снова состоит в том, чтобы пересоздать таблицу. Можно использовать любой SQL-оператор DROP TABLE или утилиту ndb_drop_table (см. раздел 6.12).

6.12. ndb_drop_table Удаление таблицы NDB

ndb_drop_table удаляет указанную таблицу NDB. При попытке использовать это на таблице, составленной с механизмом хранения кроме NDB, попытка терпит неудачу с ошибкой 723: No such table exists. Эта операция чрезвычайно быстра, в некоторых случаях это может быть на порядок быстрее, чем использование MySQL DROP TABLE для NDB.

Применение

ndb_drop_table -c connection_string tbl_name -d db_name

Таблица 6.10. Параметры командной строки для ndb_drop_table

ФорматОписание Добавлено, устарело или удалено

--database=dbname,

-d

Название базы данных, в которой найдена таблица

Все выпуски на основе MySQL 5.7

6.13. ndb_error_reporter утилита сообщения об ошибке NDB

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

Таблица 6.11. Параметры командной строки для ndb_error_reporter

ФорматОписание Добавлено, устарело или удалено

--connection-timeout=timeout

Число секунд, чтобы ждать, соединяясь с узлами до тайм-аута.

Все выпуски на основе MySQL 5.7

--dry-scp

Отключите scp с отдаленными хостами, только для тестирования.

Все выпуски на основе MySQL 5.7

--fs

Включайте данные о файловой системе в сообщение об ошибке, может использовать большой объем дискового пространства

Все выпуски на основе MySQL 5.7

--skip-nodegroup=nodegroup_id

Пропустите все узлы в группе узла, имеющей этот ID.

Все выпуски на основе MySQL 5.7

Применение

ndb_error_reporter path/to/config-file [username] [options]

Эта утилита предназначается для использования на хосте узла управления и требует пути к конфигурационному файлу хоста управления (обычно config.ini). Произвольно, можно поставлять имя пользователя, который в состоянии получить доступ к узлам данных, используя SSH, скопировать файлы журнала узла данных. ndb_error_reporter тогда включает все эти файлы в архив, который создается в том же самом каталоге, в котором утилита вызвана. Архив называют ndb_error_report_ YYYYMMDDhhmmss.tar.bz2, где YYYYMMDDhhmmss последовательность даты и времени.

ndb_error_reporter также принимает опции, перечисленные здесь:

6.14. ndb_import Импорт данных CSV в NDB

ndb_import Импорт данных CSV, такие как произведенные mysqldump --tab, непосредственно в NDB через NDB API. ndb_import требует, чтобы связь с сервером управления NDB ( ndb_mgmd) работала, это не требует связи с MySQL Server.

Применение

ndb_import db_name file_name options

ndb_import требует двух аргументов. db_name это название базы данных, где таблица, в которую можно импортировать данные, найдена. file_name это название файла CSV, из которого можно прочитать данные. Это должно включать путь к этому файлу, если это не находится в текущем каталоге. Название файла должно соответствовать названию таблицы, расширение файла, если таковое имеется, не учтено. Опции, поддержанные ndb_import, включают параметры для определения разделителей полей, экранирования и терминаторов строк. Описаны позже в этой секции. ndb_import должен быть в состоянии соединиться с сервером управления NDB Cluster, поэтому должен быть неиспользованный слот [api] в config.ini.

Чтобы дублировать существующую таблица, которая использует различный механизм хранения, такой как InnoDB, в таблицу NDB, используйте клиент mysql, чтобы выполнить SELECT INTO OUTFILE, чтобы экспортировать существующую таблицу в файл CSV, затем выполните CREATE TABLE LIKE, чтобы составить новую таблицу, имеющую ту же самую структуру, как существующая таблица, затем выполните ALTER TABLE ... ENGINE=NDB на новой таблице, после этого от системной оболочки вызовите ndb_import, чтобы загрузить данные в новую таблицу NDB. Например, существующая таблица InnoDB myinnodb_table в БД myinnodb может быть экспортирована в таблицу myndb_table в БД myndb, предполагая, что вы уже вошли как пользователь MySQL с соответствующими привилегиями:

  1. В клиенте mysql:

    mysql> USE myinnodb;
    mysql> SELECT * INTO OUTFILE '/tmp/myndb_table.csv' \
                       FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' \
                       ESCAPED BY '\\' LINES TERMINATED BY '\n' FROM myinnodbtable;
    mysql> CREATE DATABASE myndb;
    mysql> USE myndb;
    mysql> CREATE TABLE myndb_table LIKE myinnodb.myinnodb_table;
    mysql> ALTER TABLE myndb_table ENGINE=NDB;
    mysql> EXIT;
    Bye
    shell>
    

    Как только целевая база данных и таблица были созданы, mysqld больше не требуется. Можно остановить его, используя mysqladmin shutdown или другой метод, если вы желаете.

  2. В системной оболочке:

    # if you are not already in the MySQL bin directory:
    shell> cd path-to-mysql-bin-dir
    shell> ndb_import myndb /tmp/myndb_table.csv --fields-optionally-enclosed-by='"' \
              --fields-terminated-by="," --fields-escaped-by='\\'
    

    Вывод примерно такой:

    job-1 import myndb.myndb_table from /tmp/myndb_table.csv
    job-1 [running] import myndb.myndb_table from /tmp/myndb_table.csv
    job-1 [success] import myndb.myndb_table from /tmp/myndb_table.csv
    job-1 imported 19984 rows in 0h0m9s at 2277 rows/s
    jobs summary: defined: 1 run: 1 with success: 1 with failure: 0
    shell>
    

Таблица 6.12. Параметры командной строки для ndb_import

ФорматОписание Добавлено, устарело или удалено

--abort-on-error

Дамп ядра на любой фатальной ошибке, используется для отладки

Добавлено в NDB 7.6.2

--ai-increment=#

Для таблицы со скрытым PK определите шаг автоприращения. См. mysqld

Добавлено в NDB 7.6.2

--ai-offset=#

Для таблицы со скрытым PK определите смещение автоприращения. См. mysqld

Добавлено в NDB 7.6.2

--ai-prefetch-sz=#

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

Добавлено в NDB 7.6.2

--connections=#

Количество создаваемых связей кластера

Добавлено в NDB 7.6.2

--continue

Когда работа потерпит неудачу, продолжить следующую работу

Добавлено в NDB 7.6.2

--db-workers=#

Количество потоков на узел данных, выполняя операции по базе данных

Добавлено в NDB 7.6.2

--errins-type=name

Тип ошибки вставки для целей тестирования, используйте "list", чтобы получить все возможные значения

Добавлено в NDB 7.6.2

--errins-delay=#

Ошибочная вставка задерживается на это время в миллисекундах, случайное изменение добавляется

Добавлено в NDB 7.6.2

--fields-enclosed-by=char

Аналог FIELDS ENCLOSED BY в LOAD DATA. Для ввода CSV это аналог --fields-optionally-enclosed-by

Добавлено в NDB 7.6.2

--fields-escaped-by=name

Аналог FIELDS ESCAPED BY в LOAD DATA

Добавлено в NDB 7.6.2

--fields-optionally-enclosed-by=char

Аналог FIELDS OPTIONALLY ENCLOSED BY в LOAD DATA

Добавлено в NDB 7.6.2

--fields-terminated-by=char

Аналог FIELDS TERMINATED BY в LOAD DATA.

Добавлено в NDB 7.6.2

--idlesleep=#

Количество миллисекунд, чтобы спать, ожидая

Добавлено в NDB 7.6.2

--idlespin=#

Число раз, чтобы повторить прежде, чем уснуть в ожидании

Добавлено в NDB 7.6.2

--ignore-lines=#

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

Добавлено в NDB 7.6.2

--input-type=name

Входной тип: случайный или csv

Добавлено в NDB 7.6.2

--input-workers=#

Количество обработки потоков ввода. Должно быть 2 или больше, если --input-type = csv.

Добавлено в NDB 7.6.2

--keep-state

Сохранить состояния файлов

Добавлено в NDB 7.6.4

--lines-terminated-by=name

Аналог LINES TERMINATED BY в LOAD DATA

Добавлено в NDB 7.6.2

--log-level=#

Установите внутренний уровень регистрации для отладки

Добавлено в NDB 7.6.4

--max-rows=#

Импортируйте только это количество входных строк данных, умолчание 0 импортирует все строки

Добавлено в NDB 7.6.2

--monitor=#

Периодически печатать статус, если что-то изменилось. Значение 0 отключает. Значение 1 печатает любое замеченное изменение. Более высокие значения уменьшают статус по экспоненте до некоторого предопределенного предела.

Добавлено в NDB 7.6.2

--no-asynch

Операции по базе данных, которыми управляют как пакетами в одной транзакции

Добавлено в NDB 7.6.2

--no-hint

Не используйте подсказку ключа распределения, чтобы выбрать узел данных (TC)

Добавлено в NDB 7.6.2

--opbatch=#

Пакет выполнения db это ряд транзакций и операций, посланных в ядро NDB. Этот выбор ограничивает операции NDB (включая операции по blob) в пакете выполнения. Поэтому это также ограничивает количество асинхронных транзакций.

Добавлено в NDB 7.6.2

--opbytes=#

Предел байт в пакете выполнения (умолчание 0 = никакого предела)

Добавлено в NDB 7.6.2

--output-type=name

Тип вывода: ndb умолчание, null используется для тестирования

Добавлено в NDB 7.6.2

--output-workers=#

Количество потоков обработки вывода или передачи операций по базе данных

Добавлено в NDB 7.6.2

--pagesize=#

Выровняйте буфера I/O к данному размеру

Добавлено в NDB 7.6.2

--pagecnt=#

Размер I/O буфера как произведение размера страницы. Обработчик ввода CSV ассигнует буфер двойного размера

Добавлено в NDB 7.6.2

--polltimeout=#

Перерыв на опрос для законченных асинхронных транзакций. Опрос продолжается, пока все опросы не закончены, или ошибка не происходит

Добавлено в NDB 7.6.2

--rejects=#

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

Добавлено в NDB 7.6.2

--resume

Если работа прервалась (нерегулярная ошибка, пользовательское прерывание), возобновить со строками, еще не обработанными

Добавлено в NDB 7.6.2

--rowbatch=#

Предел строк в очередях (умолчание 0 = никакого предела), должно быть 1 или больше, если --input-type = random

Добавлено в NDB 7.6.2

--rowbytes=#

Предел байтов в очередях строк (0 = никакого предела)

Добавлено в NDB 7.6.2

--state-dir=name

Куда писать файлы состояния, по умолчанию в текущий каталог

Добавлено в NDB 7.6.2

--stats

Сохранить работу и информацию о статистике в файлы *.sto и *.stt

Добавлено в NDB 7.6.4

--tempdelay=#

Количество миллисекунд, которое спать между нерегулярными ошибками

Добавлено в NDB 7.6.2

--temperrors=#

Число раз, которое транзакция может потерпеть неудачу из-за нерегулярной ошибки на пакет выполнения. 0 указывает, что любая нерегулярная ошибка фатальна. Такие ошибки не заставляют писать строки в файл .rej.

Добавлено в NDB 7.6.2

--verbose=#,

-v

Позвольте многословный вывод

Добавлено в NDB 7.6.2

Как с LOAD DATA, для форматирования области и строки нет никакого эквивалента STARTING WITH для LOAD DATA.

ndb_import добавлена в NDB 7.6.2.

6.15. ndb_index_stat Утилита статистики индекса NDB

ndb_index_stat предоставляет статистическую информацию на фрагмент об индексах на таблицах NDB. Это включает версию кэша и возраст, количество элементов индекса на раздел и потребление памяти индексами.

Применение

Чтобы получить базовую статистику индекса о данной таблице NDB, вызовите ndb_index_stat с названием таблицы как первый аргумент и названием базы данных, содержащей эту таблицу, определенным немедленно после него, используя опцию --database (-d):

ndb_index_stat table -d database

В этом примере мы используем ndb_index_stat, чтобы получить такую информацию о таблице NDB mytable в БД test:

shell> ndb_index_stat -d test mytable
table:City index:PRIMARY fragCount:2
sampleVersion:3 loadTime:1399585986 sampleCount:1994 keyBytes:7976
query cache: valid:1 sampleCount:1994 totalBytes:27916
times in ms: save: 7.133 sort: 1.974 sort per sample: 0.000
NDBT_ProgramExit: 0 - OK

sampleVersion номер версии кэша, из которого взяты данные о статистике. ndb_index_stat с опцией --update увеличивает sampleVersion.

loadTime покажет, когда кэш обновился. Это выражается как секунды с Unix Epoch.

sampleCount это количество элементов индекса, найденных на раздел. Можно оценить общее количество записей, умножив это на количество фрагментов (показанных как fragCount).

sampleCount можно сравнить с количеством элементов в SHOW INDEX или INFORMATION_SCHEMA.STATISTICS, хотя последние два обеспечивают представление о таблице в целом в то время, как ndb_index_stat обеспечивает среднее число на фрагмент.

keyBytes это число байтов, используемых индексом. В этом примере первичный ключ это целое число, которое требует четырех байтов для каждого индекса, таким образом, keyBytes может быть вычислен в этом случае как показано здесь:

keyBytes = sampleCount * (4 байт на индекс) = 1994*4 = 7976

Эта информация может также быть получена, используя соответствующие определения столбца из INFORMATION_SCHEMA.COLUMNS (требует MySQL Server и клиентского приложения MySQL).

totalBytes это общая память, потребляемая всеми индексами таблицы, в байтах.

Время, показанное в предыдущих примерах, определено для каждого вызова ndb_index_stat.

Опция --verbose обеспечивает некоторый дополнительный вывод, как показано здесь:

shell> ndb_index_stat -d test mytable --verbose
random seed 1337010518
connected
loop 1 of 1
table:mytable index:PRIMARY fragCount:4
sampleVersion:2 loadTime:1336751773 sampleCount:0 keyBytes:0
read stats
query cache created
query cache: valid:1 sampleCount:0 totalBytes:0
times in ms: save: 20.766 sort: 0.001
disconnected
NDBT_ProgramExit: 0 - OK
shell>

Если единственный вывод программы NDBT_ProgramExit: 0 - OK, это может указать, что никакие статистические данные не существуют. Чтобы вынудить их быть созданными (или обновленными, если они уже существуют), вызовите ndb_index_stat с опцией --update или выполните ANALYZE TABLE на таблице в клиенте mysql.

Опции

Следующая таблица включает опции, которые являются определенными для NDB Cluster ndb_index_stat.

Таблица 6.13. Параметры командной строки для ndb_index_stat

ФорматОписание Добавлено, устарело или удалено

--database=name,

-d

Название базы данных, содержащей таблицу.

Все выпуски на основе MySQL 5.7

--delete

Удалите статистику индекса для данной таблицы, остановив любое автоматическое обновление, ранее формируемое.

Все выпуски на основе MySQL 5.7

--update

Статистика индекса обновления для данной таблицы, перезапуская любое автоматическое обновление.

Все выпуски на основе MySQL 5.7

--dump

Напечатайте кэш запроса.

Все выпуски на основе MySQL 5.7

--query=#

Выполнить много случайных запросов диапазона на первом ключе attr (должен быть int unsigned).

Все выпуски на основе MySQL 5.7

--sys-drop

Удалить любые таблицы статистики, и события в ядре NDB (все статистические данные будут потеряны)

Все выпуски на основе MySQL 5.7

--sys-create

Составьте все таблицы статистики и события в ядре NDB, если ни один из них не существует

Все выпуски на основе MySQL 5.7

--sys-create-if-not-exist

Составьте любые таблицы статистики и события в ядре NDB, которые еще не существуют.

Все выпуски на основе MySQL 5.7

--sys-create-if-not-valid

Составьте любые таблицы статистики или события, которые еще не существуют в ядре NDB, после удаления любых, которые недействительны.

Все выпуски на основе MySQL 5.7

--sys-check

Проверьте, что системная статистика индекса NDB и таблицы событий существуют.

Все выпуски на основе MySQL 5.7

--sys-skip-tables

Не применяйте опции sys-* к таблицам.

Все выпуски на основе MySQL 5.7

--sys-skip-events

Не применяйте опции sys-* к событиям.

Все выпуски на основе MySQL 5.7

--verbose,

-v

Включите многословный вывод.

Все выпуски на основе MySQL 5.7

--loops=#

Установите сколько раз выполнять данную команду. Умолчание 0.

Все выпуски на основе MySQL 5.7

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

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

6.16. ndb_move_data Утилита копирования данных NDB

ndb_move_data копирует данные между таблицами NDB.

Применение

Программа вызвана с названиями входной и выходной таблиц, обе из них могут быть квалифицированы произвольно с именем базы данных. Обе таблицы должны использовать механизм хранения NDB.

ndb_move_data options source target

Таблица 6.14. Параметры командной строки для ndb_move_data

ФорматОписание Добавлено, устарело или удалено

--abort-on-error

Дамп ядра на систематической ошибке (параметр отладки).

Все выпуски на основе MySQL 5.7

--character-sets-dir=name

Каталог, где искать наборы символов

Все выпуски на основе MySQL 5.7

--database=dbname,

-d

Название базы данных, в которой таблица

Все выпуски на основе MySQL 5.7

--drop-source

Удалить исходную таблицу после копирования всех строк

Все выпуски на основе MySQL 5.7

--error-insert

Вставьте случайные нерегулярные ошибки (для отладки)

Все выпуски на основе MySQL 5.7

--exclude-missing-columns

Проигнорируйте дополнительные столбцы в источнике или целевой таблице

Все выпуски на основе MySQL 5.7

--lossy-conversions,

-l

Позволить усечь данные о признаке, когда преобразовано в меньший тип

Все выпуски на основе MySQL 5.7

--promote-attributes,

-A

Позволить данным о признаке быть преобразованными в больший тип

Все выпуски на основе MySQL 5.7

--staging-tries=x[,y[,z]]

Определите нерегулярные ошибки. Формат: x[,y[,z]], где x=max попыток (0=no limit), y=min задержки (ms), z=max задержки (ms)

Все выпуски на основе MySQL 5.7

--verbose

Включить подробные отчеты

Все выпуски на основе MySQL 5.7

6.17. ndb_perror получить информацию о сообщении об ошибке NDB

ndb_perror показывает информацию об ошибке NDB, учитывая ее код ошибки. Это включает сообщение об ошибке, тип ошибки и постоянная ли ошибка или временная. Добавлено в NDB 7.6.4, это предназначается как общедоступная замена для perror --ndb.

Применение

ndb_perror [options] error_code

ndb_perror не должен получать доступ к работающему NDB Cluster (включая узлы SQL). Чтобы рассмотреть информацию о данной ошибке NDB, вызовите программу, используя код ошибки в качестве аргумента:

shell> ndb_perror 323
NDB error code 323: Invalid nodegroup id, nodegroup already existing:
Permanent error: Application error

Чтобы показать только сообщение об ошибке, вызовите ndb_perror с опцией --silent (краткая форма -s):

shell> ndb_perror -s 323
Invalid nodegroup id, nodegroup already existing:
Permanent error: Application error

Аналогично perror, ndb_perror принимает многократные коды ошибок:

shell> ndb_perror 321 1001
NDB error code 321: Invalid nodegroup id: Permanent error: Application error
NDB error code 1001: Illegal connect string

Дополнительные возможности программы для ndb_perror описаны позже в этой секции.

ndb_perror заменяет perror --ndb, которая устарела в NDB 7.6.4. Чтобы сделать замену легче в скриптах и других приложениях, которые могли бы зависеть от perror для получения информации об ошибке NDB, ndb_perror поддерживает свою собственную опцию --ndb, которая ничего не делает.

Следующая таблица включает все опции, которые являются определенными для программы NDB Cluster ndb_perror.

Таблица 6.15. Параметры командной строки для ndb_perror

ФорматОписание Добавлено, устарело или удалено

--help,

-?

Отобразить краткую справку

Добавлено в NDB 7.6.4

--ndb

Для совместимости с приложениями в зависимости от старых версий perror, ничего не делает

Добавлено в NDB 7.6.4

--silent,

-s

Покажите только сообщение об ошибке

Добавлено в NDB 7.6.4

--version,

-V

Напечатайте информацию о версии программы

Добавлено в NDB 7.6.4

--verbose,

-v

Подробный вывод, отключите с помощью --silent

Добавлено в NDB 7.6.4

Дополнительные параметры

6.18. ndb_print_backup_file печатает содержимое файла NDB Backup

ndb_print_backup_file получает диагностическую информацию из резервного файла кластера.

Применение

ndb_print_backup_file file_name

file_name это название резервного файла группы. Это может быть любым из файлов (.Data, .ctl или .log) в каталоге резервирования кластера. Эти файлы найдены в резервном каталоге узла данных под каталогом BACKUP-#, где # это порядковый номер для резервной копии. Для получения дополнительной информации о резервных файлах группы и их содержании, посмотрите раздел 7.3.1.

Как ndb_print_schema_file и ndb_print_sys_file (и в отличие от большей части утилит NDB, которые предназначаются, чтобы работать на хосте сервера управления или соединиться с сервером управления), ndb_print_backup_file нужно управлять на узле данных, так как он получает доступ к файловой системе узла данных непосредственно. Поскольку это не использует сервер управления, эта утилита может использоваться, когда сервер управления не работает и даже когда кластер был полностью закрыт.

Дополнительные параметры

Отсутствуют.

6.19. ndb_print_file печатает содержание файла данных NDB Disk Data

ndb_print_file получает информацию из файла данных NDB Cluster Disk Data.

Применение

ndb_print_file [-v] [-q] file_name

file_name это название файла данных NDB Cluster Disk Data. Многократные имена файлов приняты, отделяя пробелами.

Как ndb_print_schema_file и ndb_print_sys_file (и в отличие от большей части утилит NDB, которые предназначаются, чтобы работать на хосте сервера управления или соединиться с сервером управления) ndb_print_file нужно управлять на узле данных, так как он получает доступ к файловой системе узла данных непосредственно. Поскольку это не использует сервер управления, эта утилита может использоваться, когда сервер управления не работает и даже когда кластер был полностью закрыт.

Дополнительные параметры

ndb_print_file понимает такие опции:

См. раздел 7.13.

6.20. ndb_print_frag_file Печатает содержание файла списка фрагментов NDB

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

Применение

ndb_print_frag_file file_name

file_name это название файла списка фрагмента, который соответствует образцу SX.FragList, гдк X это цифра в диапазоне 2-9 в файловой системе узла данных, имеющего ID узла nodeid, в каталоге ndb_nodeid_fs/DN/DBDIH/ , где N это 1 или 2. Каждый файл фрагментов содержит записи фрагментов, принадлежащих каждой таблице NDB. Для получения дополнительной информации о файлах фрагментов см. NDB Cluster Data Node File System Directory Files.

Как ndb_print_backup_file, ndb_print_sys_file и ndb_print_schema_file (и в отличие от большей части утилит NDB, которые предназначаются, чтобы работать на хосте сервера управления или соединиться с сервером управления), ndb_print_frag_file нужно управлять на узле данных, так как она получает доступ к файловой системе узла данных непосредственно. Поскольку это не использует сервер управления, эта утилита может использоваться, когда сервер управления не работает, и даже когда кластер был полностью закрыт.

Дополнительные параметры

Отсутствуют.

Образец вывода

shell> ndb_print_frag_file /usr/local/mysqld/data/ndb_3_fs/D1/DBDIH/S2.FragList
Filename: /usr/local/mysqld/data/ndb_3_fs/D1/DBDIH/S2.FragList with size 8192
noOfPages = 1 noOfWords = 182
Table Data
----------
Num Frags: 2 NoOfReplicas: 2 hashpointer: 4294967040
kvalue: 6 mask: 0x00000000 method: HashMap
Storage is on Logged and checkpointed, survives SR
------ Fragment with FragId: 0 --------
Preferred Primary: 2 numStoredReplicas: 2 numOldStoredReplicas: 0 distKey: 0 LogPartId: 0
-------Stored Replica----------
Replica node is: 2 initialGci: 2 numCrashedReplicas = 0 nextLcpNo = 1
LcpNo[0]: maxGciCompleted: 1 maxGciStarted: 2 lcpId: 1 lcpStatus: valid
LcpNo[1]: maxGciCompleted: 0 maxGciStarted: 0 lcpId: 0 lcpStatus: invalid
-------Stored Replica----------
Replica node is: 3 initialGci: 2 numCrashedReplicas = 0 nextLcpNo = 1
LcpNo[0]: maxGciCompleted: 1 maxGciStarted: 2 lcpId: 1 lcpStatus: valid
LcpNo[1]: maxGciCompleted: 0 maxGciStarted: 0 lcpId: 0 lcpStatus: invalid
------ Fragment with FragId: 1 --------
Preferred Primary: 3 numStoredReplicas: 2 numOldStoredReplicas: 0 distKey: 0 LogPartId: 1
-------Stored Replica----------
Replica node is: 3 initialGci: 2 numCrashedReplicas = 0 nextLcpNo = 1
LcpNo[0]: maxGciCompleted: 1 maxGciStarted: 2 lcpId: 1 lcpStatus: valid
LcpNo[1]: maxGciCompleted: 0 maxGciStarted: 0 lcpId: 0 lcpStatus: invalid
-------Stored Replica----------
Replica node is: 2 initialGci: 2 numCrashedReplicas = 0 nextLcpNo = 1
LcpNo[0]: maxGciCompleted: 1 maxGciStarted: 2 lcpId: 1 lcpStatus: valid
LcpNo[1]: maxGciCompleted: 0 maxGciStarted: 0 lcpId: 0 lcpStatus: invalid

6.21. ndb_print_schema_file Печатает содержание файла схемы NDB

ndb_print_schema_file получает диагностическую информацию из файла схемы.

Применение

ndb_print_schema_file file_name

file_name это название файла схемы. См. NDB Cluster Data Node File System Directory Files.

Как ndb_print_backup_file и ndb_print_sys_file (и в отличие от большей части утилит NDB, которые предназначаются, чтобы работать на хосте сервера управления или соединиться с сервером управления), ndb_print_schema_file нужно управлять на узле данных, так как она получает доступ к файловой системе узла данных непосредственно. Поскольку это не использует сервер управления, эта утилита может использоваться, когда сервер управления не работает, и даже когда кластер полностью закрыт.

Дополнительные параметры

Отсутствуют.

6.22. ndb_print_sys_file Печатает содержание системного файла NDB

ndb_print_sys_file получает диагностическую информацию из файла системного файла NDB Cluster.

Применение

ndb_print_sys_file file_name

file_name это название файла кластерной системы (sysfile). Файлы кластерной системы расположены в каталоге данных узла данных ( DataDir), путь в соответствии с этим каталогом к системным файлам соответствует образцу ndb_#_fs/D#/DBDIH/P #.sysfile. Здесь # представляет число (не обязательно то же самое число). Для получения дополнительной информации см. NDB Cluster Data Node File System Directory Files.

Как ndb_print_backup_file и ndb_print_schema_file (и в отличие от большей части утилит other NDB, которые предназначаются, чтобы управляться на хосте сервера управления или соединиться с сервером управления), ndb_print_backup_file нужно управлять на узле данных, так как она получает доступ к файловой системе узла данных непосредственно. Поскольку это не использует сервер управления, эта утилита может использоваться, когда сервер управления не работает, и даже когда кластер полностью закрыт.

Дополнительные параметры

Отсутствуют.

6.23. ndb_redo_log_reader проверяет и печатает содержимое журнала отката кластера

Читает файл журнала отката, проверяет его, печатает его содержание в человекочитаемом формате. ndb_redo_log_reader предназначается для использования, прежде всего, разработчиками и поддержкой NDB Cluster при отладке и диагностировании проблем.

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

До NDB 7.2 утилита называлась ndbd_redo_log_reader.

Исходные файлы C++ для ndb_redo_log_reader лежат в каталоге /storage/ndb/src/kernel/blocks/dblqh/redoLogReader.

Следующая таблица включает опции, которые являются определенными для программы ndb_redo_log_reader.

Таблица 6.16. Параметры командной строки для ndb_redo_log_reader

ФорматОписание Добавлено, устарело или удалено

-dump

Печатаь информацию дампа

Все выпуски на основе MySQL 5.7

-filedescriptors

Напечатайте только дескрипторы файлов

Все выпуски на основе MySQL 5.7

--help

Вывести краткую справку

Все выпуски на основе MySQL 5.7

-lap

Обеспечьте информацию с максимальным начатым и законченным GCI

Все выпуски на основе MySQL 5.7

-mbyte #

Стартовый мегабайт

Все выпуски на основе MySQL 5.7

-mbyteheaders

Покажите только первый заголовок страницы каждого мегабайта в файле

Все выпуски на основе MySQL 5.7

-nocheck

Не проверяйте записи на ошибки

Все выпуски на основе MySQL 5.7

-noprint

Не печатайте записи

Все выпуски на основе MySQL 5.7

-page #

Начните с этой страницы

Все выпуски на основе MySQL 5.7

-pageheaders

Покажите только заголовки страницы

Все выпуски на основе MySQL 5.7

-pageindex #

Начните с этого индекса страницы

Все выпуски на основе MySQL 5.7

-twiddle

Сдвинутый побитно дамп

Все выпуски на основе MySQL 5.7

Применение

ndb_redo_log_reader file_name [options]

file_name это название файла журнала отката. Файлы журнала отката расположены в пронумерованных каталогах в соответствии со каталогом данных узла данных ( DataDir), путь в соответствии с этим каталогом к файлам журнала отката соответствует образцу ndb_nodeid _fs/D#/DBLQH/S#.FragLog. nodeid это ID узла данных. Два экземпляра # каждый представляют число (не обязательно то же самое число), число после D находится в диапазоне 8-39 включительно, диапазон числа после S варьируется согласно значению параметра NoOfFragmentLogFiles, значение по умолчанию которого 16, таким образом диапазон умолчаний числа в имени файла 0-15 включительно. Для получения дополнительной информации см. NDB Cluster Data Node File System Directory Files.

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

Как ndb_print_backup_file и ndb_print_schema_file (и в отличие от большей части утилит NDB, которые предназначаются, чтобы управляться на хосте сервера управления или соединиться с сервером управления) ndb_redo_log_reader нужно управлять на узле данных, так как она получает доступ к файловой системе узла данных непосредственно. Поскольку это не использует сервер управления, эта утилита может использоваться, когда сервер управления не работает, и даже когда кластер полностью закрыт.

6.24. ndb_restore восстанавливает резервную копию NDB Cluster

Программа восстановления NDB Cluster осуществляется как отдельная утилита командной строки ndb_restore, которая может обычно находится в каталоге bin. Эта программа читает файлы, созданные в результате создания резервной копии, и вставляет информацию в базу данных.

Начиная с NDB 7.5.15 и 7.6.11, эта программа больше не печатает NDBT_ProgramExit: ..., когда заканчивает. Приложения в зависимости от этого поведения должны быть изменены соответственно, модернизируя от более ранних выпусков.

ndb_restore должна быть выполнена однажды на каждый из резервных файлов, которые были созданы START BACKUP для создания резервной копии (см. раздел 7.3.2). Это равно количеству узлов данных в кластере в то время, когда резервная копия была создана.

До применения ndb_restore рекомендуется, чтобы кластер был в однопользовательском режиме, если вы не восстанавливаете много узлов данных параллельно. Посмотрите раздел 7.8.

Таблица 6.17. Параметры командной строки для ndb_restore

ФорматОписание Добавлено, устарело или удалено

--append

Добавить данные к файлу с разделением табуляцией

Все выпуски на основе MySQL 5.7

--backup-path=dir_name

Путь к каталогу резервных файлов

Все выпуски на основе MySQL 5.7

--backupid=# ,

-b

Восстановите из резервной копии с данным ID

Все выпуски на основе MySQL 5.7

--connect,

-c

Псевдоним для --connectstring.

Все выпуски на основе MySQL 5.7

--disable-indexes

Игнорировать индексы из резервной копии, может уменьшить время, чтобы восстановить данные.

Все выпуски на основе MySQL 5.7

--dont-ignore-systab-0,

-f

Не игнорируйте системную таблицу во время восстановления, не для производственного использования

Все выпуски на основе MySQL 5.7

--exclude-databases=db-list

Список баз данных, чтобы исключить

Все выпуски на основе MySQL 5.7

--exclude-intermediate-sql-tables[=TRUE|FALSE]

Если TRUE (умолчание), не восстанавливать промежуточные таблицы (имена с префиксом '#sql-'), которые были перенесены от копирования операций ALTER TABLE.

Все выпуски на основе MySQL 5.7

--exclude-missing-columns

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

Все выпуски на основе MySQL 5.7

--exclude-missing-tables

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

Все выпуски на основе MySQL 5.7

--exclude-tables=table-list

Список таблиц, чтобы исключить, каждая ссылка на таблицу должна включать имя базы данных

Все выпуски на основе MySQL 5.7

--fields-enclosed-by=char

Области добавлены к обозначенному символу

Все выпуски на основе MySQL 5.7

--fields-optionally-enclosed-by

Области произвольно добавлены к обозначенному символу

Все выпуски на основе MySQL 5.7

--fields-terminated-by=char

Области закончены обозначенным символом

Все выпуски на основе MySQL 5.7

--hex

Напечатайте двоичные типы в шестнадцатеричном формате

Все выпуски на основе MySQL 5.7

--include-databases=db-list

Список баз данных, чтобы восстановить

Все выпуски на основе MySQL 5.7

--include-tables=table-list

Список таблиц, чтобы восстановить, каждая ссылка на таблицу должна включать имя базы данных

Все выпуски на основе MySQL 5.7

--lines-terminated-by=char

Строки закончены обозначенным символом

Все выпуски на основе MySQL 5.7

--lossy-conversions,

-L

Позвольте преобразования с потерями значений столбцов (например, изменения в знаке), восстанавливая данные из резервной копии

Все выпуски на основе MySQL 5.7

--no-binlog

Если mysqld связан и идет использование двоичной регистрации, не регистрируйте восстановленные данные

Все выпуски на основе MySQL 5.7

--no-restore-disk-objects,

-d

Не восстанавливайте объекты, касающиеся Disk Data

Все выпуски на основе MySQL 5.7

--no-upgrade ,

-u

Не модернизируйте тип массива для признаков varsize, которые уже не изменяют размеры данных VAR и не изменяют признаки колонки

Все выпуски на основе MySQL 5.7

--ndb-nodegroup-map=map,

-z

Отобразить группы узлов для NDBCLUSTER. Синтаксис: список (source_nodegroup, destination_nodegroup)

Все выпуски на основе MySQL 5.7

--num-slices=#,

Количество частей, чтобы восстановить

Добавлено в NDB 7.6.13

--nodeid=#,

-n

ID узла, где резервная копия была взята

Все выпуски на основе MySQL 5.7

--parallelism=#,

-p

Количество параллельных транзакций, чтобы использовать, восстанавливая данные

Все выпуски на основе MySQL 5.7

--preserve-trailing-spaces,

-P

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

Все выпуски на основе MySQL 5.7

--print

Вывести метаданные, данные и регистрацию в stdout (аналог --print-meta --print-data --print-log)

Все выпуски на основе MySQL 5.7

--print-data

Вывод данных в stdout

Все выпуски на основе MySQL 5.7

--print-log

Вывод в stdout

Все выпуски на основе MySQL 5.7

--print-meta

Вывод метаданных в stdout

Все выпуски на основе MySQL 5.7

print-sql-log

Напишите регистрацию SQL в stdout, по умолчанию FALSE

Добавлено в NDB 7.5.4

--progress-frequency=#

Статус восстановления каждое заданное число секунд

Все выпуски на основе MySQL 5.7

--promote-attributes,

-A

Позвольте признакам меняться, восстанавливая данные из резервной копии

Все выпуски на основе MySQL 5.7

--rebuild-indexes

Вызывает многопоточное восстановление упорядоченных индексов, найденных в резервной копии. Количество используемых потоков определяется, устанавливая параметр BuildIndexThreads.

Все выпуски на основе MySQL 5.7

--restore-data ,

-r

Восстановите данные таблицы и регистрации в NDB Cluster через NDB API

Все выпуски на основе MySQL 5.7

--restore-epoch ,

-e

Восстановите информацию об эпохе в таблице статуса. Удобно на ведомом репликации MySQL Cluster для старта репликации. Строка в replication slave for starting replication. The row in mysql.ndb_apply_status с id 0 должна быть обновлена/вставлена.

Все выпуски на основе MySQL 5.7

--restore-meta,

-m

Верните метаданные NDB Cluster через NDB API

Все выпуски на основе MySQL 5.7

--restore-privilege-tables

Восстановите таблицы привилегий MySQL, которые были ранее перемещены в NDB.

Все выпуски на основе MySQL 5.7

--rewrite-database=olddb,newdb

Вернуть базе данных с другим именем, чем оригинал

Все выпуски на основе MySQL 5.7

--skip-broken-objects

Недостающие таблицы blob в резервном файле проигнорировать.

Все выпуски на основе MySQL 5.7

--skip-table-check,

-s

Пропустите проверку структуры таблицы во время восстановления данных

Все выпуски на основе MySQL 5.7

--skip-unknown-objects

Объекты схемы, не признанные ndb_restore, проигнорировать, восстанавливая резервную копию, сделанную от более новой версии MySQL Cluster в более старой версии.

Все выпуски на основе MySQL 5.7

--slice-id=# ,

ID части, чтобы восстановить

Добавлено в NDB 7.6.13

--tab=dir_name,

-T dir_name

Создает отделенный табуляциями .txt-файл для каждой таблицы в данном пути

Все выпуски на основе MySQL 5.7

--verbose=#

Уровень многословия в выводе

Все выпуски на основе MySQL 5.7

Типичные опции для этой утилиты:

ndb_restore [-c connection_string] -n node_id -b backup_id \
            [-m] -r --backup-path=/path/to/backup/files

Обычно, восстанавливая из резервной копии NDB Cluster, ndb_restore требует как минимум опций --nodeid (краткая форма: -n), --backupid (краткая форма: -b) и --backup-path. Кроме того, когда ndb_restore используется, чтобы восстановить любые таблицы, содержащие уникальные индексы, необходимо включать --disable-indexes или --rebuild-indexes (Bug #57782, Bug #11764893).

Опция -c используется, чтобы определить строку подключения, которая говорит ndb_restore где определить местонахождение сервера управления (см. раздел 5.3.3). Если этот выбор не используется, то ndb_restore пытается соединиться с сервером управления на localhost:1186. Эта утилита действует как узел API и требует свободный слот для связи с сервером управления. Это означает, что должен быть по крайней мере один раздел [api] или [mysqld], который может использоваться в config.ini. Хорошая идея сохранять по крайней мере один раздел [api] или [mysqld] пустым в config.ini (см. раздел 5.3.7).

Можно проверить, что ndb_restore связан с кластером при помощи команды SHOW в ndb_mgm. Можно также достигнуть этого от системной оболочки:

shell> ndb_mgm -e "SHOW"

Более подробная информация обо всех опциях, используемых ndb_restore, может быть найдена в следующем списке:

Сообщение об ошибке. ndb_restore сообщает о нерегулярных и систематических ошибках. В случае нерегулярных ошибок это может прийти в себя от них и сообщить Restore successful, but encountered temporary error, please look at configuration.

При использовании ndb_restore, чтобы инициализировать NDB Cluster для использования в кольцевой репликации автоматически не создается двоичный журнал в системе узла SQL, действующего как ведомый и необходимо их создать вручную. Выполните SHOW TABLES на узле SQL перед START SLAVE. Это известная проблема в NDB Cluster.

Восстановление резервной копии к предыдущей версии NDB Cluster. Можно столкнуться с проблемами, восстанавливая резервную копию, взятую от более поздней версии NDB Cluster к предыдущей, из-за использования особенностей, которые не существуют в более ранней версии. Например, таблицы, составленные в NDB 8.0, по умолчанию используют набор символов utf8mb4_ai_ci, который недоступен в NDB 7.6 и ранее и тне может быть прочитан ndb_restore.

6.24.1. Восстановление к отличному количеству узлов данных

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

6.24.1.1. Восстановление к меньшему количеству узлов, чем оригинал

Можно вернуть к кластеру, имеющему меньше узлов данных, чем оригинал, при условии, что большее число узлов ровно кратно меньшему числу. В следующем примере мы используем резервную копию, взятую с кластера, имеющго четыре узла данных, к кластеру, имеющему два узла данных.

  1. Сервер управления для оригинального кластера находится на хосте host10. У оригинального кластера есть четыре узла данных с ID узла и именем хоста, показанные в следующем извлечении из config.ini сервера управления:

    [ndbd]
    NodeId=2
    HostName=host2
    [ndbd]
    NodeId=4
    HostName=host4
    [ndbd]
    NodeId=6
    HostName=host6
    [ndbd]
    NodeId=8
    HostName=host8
    

    Мы предполагаем, что каждый узел данных был первоначально начат с ndbmtd --ndb-connectstring=host10 или эквивалентом.

  2. Выполните резервную копию нормальным способом. Посмотрите раздел 7.3.2.

  3. Файлы, созданные резервной копией на каждом узле данных, перечисляются здесь, где N это ID узла, а B это резервный ID.

    Эти файлы найдены в BackupDataDir/BACKUP/BACKUP-B на каждом узле данных. Для остальной части этого примера мы предполагаем, что резервный ID равняется 1.

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

  4. Сервер управления для целевой группы находится на хосте host20 и у него есть два узла данных с ID узла и именем хоста в config.ini от сервера управления на host20:

    [ndbd]
    NodeId=3
    hostname=host3
    [ndbd]
    NodeId=5
    hostname=host5
    

    Каждый узел данных на host3 и host5 стартует с ndbmtd -c host20 --initial или эквивалентом, чтобы новая (целевая) группа началась с достоверных данных файловых систем узла.

  5. Скопируйте два различных набора двух резервных файлов к каждому из целевых узлов данных. Для этого примера скопируйте резервные файлы с узлов 2 и 4 от оригинальной группы на узел 3 в целевой группе. Эти файлы перечисляются здесь:

    Скопируйте резервные файлы с узлов 6 и 8 к узлу 5, эти файлы показывают в следующем списке:

    Для примера мы предполагаем, что соответствующие резервные файлы были сохранены в каталоге /BACKUP-1 на каждом из узлов 3 и 5.

  6. На каждом из двух целевых узлов данных необходимо восстановить от обоих наборов резервных копий. Во-первых, восстановите резервные копии от узлов 2 и 4 к узлу 3, вызвав ndb_restore на host3:

    shell> ndb_restore -c host20 --nodeid=2 --backupid=1 --restore-data \
                          --backup-path=/BACKUP-1
    shell> ndb_restore -c host20 --nodeid=4 --backupid=1 --restore-data \
                          --backup-path=/BACKUP-1
    

    Теперь восстановите резервные копии от узлов 6 и 8 к узлу 5, вызвав ndb_restore на host5:

    shell> ndb_restore -c host20 --nodeid=6 --backupid=1 --restore-data \
                          --backup-path=/BACKUP-1
    shell> ndb_restore -c host20 --nodeid=8 --backupid=1 --restore-data \
                          --backup-path=/BACKUP-1
    

6.24.1.2. Восстановление к большему количеству узлов, чем у оригинала

ID узла, указанный в ndb_restore, это ID узла в оригинальной резервной копии, а не ID узла данных, куда надо вернуть данные. Выполняя резервную копию, используя метод, описанный в этой секции ndb_restore соединяется с сервером управления и получает список узлов данных в группе, которой вернулась резервная копия. Восстановленные данные распределяются соответственно, так, чтобы количество узлов в целевой группе должно быть известным или вычисленным, выполняя резервную копию.

Когда изменено общее количество потоков LCP или LQH на группу узла, необходимо воссоздать схему из резервной копии, созданной, используя mysqldump.

  1. Создайте резервную копию данных . Можно сделать это, вызвав ndb_mgm START BACKUP из системной оболочки:

    shell> ndb_mgm -e "START BACKUP 1"
    

    Это предполагает, что желаемый резервный ID 1.

  2. Создайте резервную копию схемы. В NDB 7.5.2 и позже этот шаг необходим, только если общее количество потоков LCP или LQH на группу узлов изменяется.

    shell> mysqldump --no-data --routines --events --triggers \
                        --databases > myschema.sql
    

    После создания резервной копии, используя ndb_mgm, вы не должны вносить изменения схемы прежде, чем создать резервную копию схемы.

  3. Скопируйте резервный каталог к новому кластеру. Например, если у резервной копии, которую вы хотите восстановить, есть ID 1 и BackupDataDir = /backups/node_nodeid, тогда путь к резервной копии на этом узле /backups/node_1/BACKUP/BACKUP-1. В этом каталоге есть три файла, перечисленные здесь:

    Необходимо скопировать весь каталог к новому узлу.

    Если необходимо было создать файл схемы, надо скопировать его к месту на узле SQL, где это может быть прочитано mysqld.

Нет никакого требования для резервной копии, которая будет восстановлена от определенного узла или узлов.

Чтобы восстановить из резервной копии, выполните следующие шаги:

  1. Восстановите схему.

  2. Восстановите данные. Это должно быть сделано однажды для каждого узла данных в оригинальном кластере, каждый раз используя ID узла данных. Предполагая, что было 4 узла данных первоначально, набор требуемых команд будет выглядеть примерно так:

    ndb_restore --nodeid=1 --backupid=1 --restore-data \
                --backup-path=/backups/node_1/BACKUP/BACKUP-1 --disable-indexes
    ndb_restore --nodeid=2 --backupid=1 --restore-data \
                --backup-path=/backups/node_2/BACKUP/BACKUP-1 --disable-indexes
    ndb_restore --nodeid=3 --backupid=1 --restore-data \
                --backup-path=/backups/node_3/BACKUP/BACKUP-1 --disable-indexes
    ndb_restore --nodeid=4 --backupid=1 --restore-data \
                --backup-path=/backups/node_4/BACKUP/BACKUP-1 --disable-indexes
    

    Ими можно управлять параллельно.

    Обязательно добавьте опцию --ndb-connectstring.

  3. Восстановите индексы. Они были отключены --disable-indexes в командах выше. Воссоздание индексов избегает ошибок из-за того, что восстановление непоследовательно во всех пунктах. Восстановление индексов может также улучшить работу в некоторых случаях. Чтобы восстановить индексы, выполните следующую команду однажды на единственном узле:

    shell> ndb_restore --nodeid=1 --backupid=1 \
                          --backup-path=/backups/node_1/BACKUP/BACKUP-1 \
                          --rebuild-indexes
    

    Как упомянуто ранее, вы, возможно, должны добавить --ndb-connectstring, чтобы ndb_restore мог связаться с сервером управления.

6.25. ndb_select_all печатает строки таблицы NDB

ndb_select_all печатает все строки из таблицы NDB в stdout.

Применение

ndb_select_all -c connection_string tbl_name -d db_name [> file_name]

Таблица 6.20. Параметры командной строки для ndb_select_all

ФорматОписание Добавлено, устарело или удалено

--database=dbname,

-d

Название базы данных, в которой найдена таблица

Все выпуски на основе MySQL 5.7

--parallelism=# ,

-p

Степень параллелизма

Все выпуски на основе MySQL 5.7

--lock=#,

-l

Тип блокировки

Все выпуски на основе MySQL 5.7

--order=index,

-o

Набор результатов сортировать согласно индексу, имя которого поставляется

Все выпуски на основе MySQL 5.7

--descending,

-z

Набор результатов сортировать в порядке убывания (требует флага сортировки)

Все выпуски на основе MySQL 5.7

--header,

-h

Печатать заголовок (установите в 0|FALSE, чтобы отключить заголовки в выводе)

Все выпуски на основе MySQL 5.7

--useHexFormat,

-x

Числа выводить в шестнадцатеричном формате

Все выпуски на основе MySQL 5.7

--delimiter=char,

-D

Установите разделитель колонки

Все выпуски на основе MySQL 5.7

--disk

Дисковые ссылки (полезно только для таблиц Disk Data с неиндексированными столбцами)

Все выпуски на основе MySQL 5.7

--rowid

Печать rowid

Все выпуски на основе MySQL 5.7

--gci

Включить в вывод GCI

Все выпуски на основе MySQL 5.7

--gci64

Включить в вывод GCI и эпоху строки

Все выпуски на основе MySQL 5.7

--tupscan,

-t

Просмотр в порядке tup

Все выпуски на основе MySQL 5.7

--nodata

Не печатайте данные о столбце таблицы

Все выпуски на основе MySQL 5.7

Образец вывода

Вывод MySQL SELECT:

mysql> SELECT * FROM ctest1.fish;
+----+-----------+
| id | name      |
+----+-----------+
|  3 | shark     |
|  6 | puffer    |
|  2 | tuna      |
|  4 | manta ray |
|  5 | grouper   |
|  1 | guppy     |
+----+-----------+
6 rows in set (0.04 sec)

Вывод от эквивалентного вызова ndb_select_all:

shell> ./ndb_select_all -c localhost fish -d ctest1
idname
3 [shark]
6 [puffer]
2 [tuna]
4 [manta ray]
5 [grouper]
1 [guppy]
6 rows returned
NDBT_ProgramExit: 0 - OK

Все значения последовательности окружены квадратными скобками ([...]) в выводе ndb_select_all. Для другого примера считайте таблицу созданной как показано здесь:

CREATE TABLE dogs (id INT(11) NOT NULL AUTO_INCREMENT,
                   name VARCHAR(25) NOT NULL, breed VARCHAR(50) NOT NULL,
                   PRIMARY KEY pk (id), KEY ix (name))
                   TABLESPACE ts STORAGE DISK ENGINE=NDBCLUSTER;
INSERT INTO dogs VALUES
  ('', 'Lassie', 'collie'),
  ('', 'Scooby-Doo', 'Great Dane'),
  ('', 'Rin-Tin-Tin', 'Alsatian'),
  ('', 'Rosscoe', 'Mutt');

Это демонстрирует использование нескольких дополнительных опций ndb_select_all:

shell> ./ndb_select_all -d ctest1 dogs -o ix -z --gci --disk
GCI id namebreedDISK_REF
8344612 [Scooby-Doo] [Great Dane] [m_file_no: 0 m_page: 98 m_page_idx: 0]
8348784 [Rosscoe] [Mutt] [m_file_no: 0 m_page: 98 m_page_idx: 16]
8344633 [Rin-Tin-Tin] [Alsatian] [m_file_no: 0 m_page: 34 m_page_idx: 0]
8356571 [Lassie] [Collie] [m_file_no: 0 m_page: 66 m_page_idx: 0]
4 rows returned
NDBT_ProgramExit: 0 - OK

6.26. ndb_select_count печатает счетчики строк для таблиц NDB

ndb_select_count печатает число строк в таблицах NDB. С единственной таблицей результат эквивалентен полученному при помощи SELECT COUNT(*) FROM tbl_name.

Применение

ndb_select_count [-c connection_string] -ddb_name tbl_name[,
                 tbl_name2[, ...]]

Таблица 6.21. Параметры командной строки для ndb_select_count

ФорматОписание Добавлено, устарело или удалено

--database=dbname,

-d

Название базы данных, в которой таблица

Все выпуски на основе MySQL 5.7

--parallelism=#,

-p

Степень параллелизма/td>

Все выпуски на основе MySQL 5.7

--lock=#,

-l

Тип блокировки

Все выпуски на основе MySQL 5.7

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

Образец вывода

shell> ./ndb_select_count -c localhost -d ctest1 fish dogs
6 records in table fish
4 records in table dogs
NDBT_ProgramExit: 0 - OK

6.27. ndb_setup.py запускает Auto-Installer NDB Cluster

ndb_setup.py запускает NDB Cluster Auto-Installer и открывает начальную страницу установщика в веб-браузере по умолчанию.

Эта программа предназначается, чтобы быть вызванной как обычный пользователь, а не с правами mysql, системного root или другого администратора.

Эта секция описывает использование и возможности программы только для инструмента командной строки. Для получения информации об использовании Auto-Installer GUI, который порожден при вызове ndb_setup.py, см. раздел 4.1.

Применение

Все платформы:

ndb_setup.py [options]

Кроме того, только на платформах Windows:

setup.bat [options]

Таблица 6.22. Параметры командной строки для ndb_setup.py

ФорматОписание Добавлено, устарело или удалено

--browser-start-page=filename,

-s

Страница, которую веб-браузер открывает.

Все выпуски на основе MySQL 5.7

--ca-certs-file=filename,

-a

Файл, содержащий список сертификатов клиента, чтобы соединяться с сервером

Все выпуски на основе MySQL 5.7

--cert-file=filename,

-c

Файл, содержащий сертификат X509, который определяет сервер. Умолчание: cfg.pem)

Все выпуски на основе MySQL 5.7

--debug-level=level ,

-d

Уровень отладки модуля. Один из DEBUG, INFO, WARNING (умолчание), ERROR или CRITICAL.

Все выпуски на основе MySQL 5.7

--help,

-h

Вывлж краткой справки

Все выпуски на основе MySQL 5.7

--key-file=file ,

-k

Определите файл, содержащий закрытый ключ (если не включен --cert-file)

Все выпуски на основе MySQL 5.7

--no-browser ,

-n

Не открывать начальную страницу в браузере, просто запустить инструмент

Все выпуски на основе MySQL 5.7

--port=#,

-p

Определите порт, используемый веб-сервером

Все выпуски на основе MySQL 5.7

--server-log-file=file,

o

Вывод журнала к этому файлу. Используйте '-', чтобы вызвать регистрацию в stderr вместо этого.

Все выпуски на основе MySQL 5.7

--server-name=name,

-N

Название сервера, с которым соединиться

Все выпуски на основе MySQL 5.7

--use-http,

-H

Используйте незашифрованную связь клиент-сервер (HTTP)

NDB 7.6 и позже

--use-https ,

-S

Используйте зашифрованную связь клиент-сервер (HTTPS)

Все выпуски на основе MySQL 5.7

6.28. ndb_show_tables показывает список таблиц NDB

ndb_show_tables показывает список таблиц NDB в кластере. По умолчанию это включает не только созданные пользователями таблицы и системные таблицы NDB, но и NDB-индексы, внутренние триггеры и объекты NDB Cluster Disk Data.

Таблица 6.23. Параметры командной строки для ndb_show_tables

ФорматОписание Добавлено, устарело или удалено

--database=string ,

-d

Определяет базу данных, в которой таблица

Все выпуски на основе MySQL 5.7

--loops=#,

-l

Сколько раз повторить вывод

Все выпуски на основе MySQL 5.7

--parsable ,

-p

Возвратить вывод, подходящий для MySQL LOAD DATA INFILE

Все выпуски на основе MySQL 5.7

--show-temp-status

Покажите временный флаг таблицы

Все выпуски на основе MySQL 5.7

--type=#,

-t

Лимит вывода объектов этого типа

Все выпуски на основе MySQL 5.7

--unqualified,

-u

Не квалифицируйте имена таблиц

Все выпуски на основе MySQL 5.7

Применение

ndb_show_tables [-c connection_string]

Только к созданным пользователями таблицам NDB Cluster можно получить доступ из MySQL, системные таблицы, например, SYSTAB_0, невидимы для mysqld. Однако, можно исследовать содержание системных таблиц через NDB API, например, ndb_select_all (см. раздел 6.25).

6.29. ndb_size.pl оценщик требований места NDBCLUSTER

Это скрипт на Perl, который может использоваться, чтобы оценить сумму места, которое требовалось бы базой данных MySQL, если бы это было преобразовано в механизм хранения NDBCLUSTER. В отличие от других утилит, обсужденных в этой секции, это не требует доступа к NDB Cluster. Однако это действительно должно получить доступ к серверу MySQL, на котором находится проверяемая база данных.

Требования

ndb_size.pl есть в исходных текстах MySQL в storage/ndb/tools.

Таблица 6.24. Параметры командной строки для ndb_size.pl

ФорматОписание Добавлено, устарело или удалено

--database=dbname

База данных или базы данных, чтобы исследовать, принимает разграниченный запятой список, умолчание: ALL (используйте все базы данных, найденные на сервере)

Все выпуски на основе MySQL 5.7

--hostname[:port]

Определите хост и дополнительный порт как host[:port]

Все выпуски на основе MySQL 5.7

--socket=file_name

Определите сокет, чтобы соединиться

Все выпуски на основе MySQL 5.7

--user=string

Определите имя пользователя MySQL

Все выпуски на основе MySQL 5.7

--password=string

Определите пароль пользователя MySQL

Все выпуски на основе MySQL 5.7

--format=string

Установите выходной формат (текст или HTML)

Все выпуски на основе MySQL 5.7

--excludetables=tbl_list

Пропустите любые таблицы в списке разделенных запятой значений таблиц

Все выпуски на основе MySQL 5.7

--excludedbs=db_list

Пропустите любые базы данных в списке разделенных запятой значений баз данных

Все выпуски на основе MySQL 5.7

--savequeries=file

Сохраняет все запросы к базе данных в определенный файл

Все выпуски на основе MySQL 5.7

--loadqueries=file

Загружает все запросы из файла, не соединяется с базой данных

Все выпуски на основе MySQL 5.7

--real_table_name=table

Определяет таблицу для вычисления размера уникального индекса

Все выпуски на основе MySQL 5.7

Применение

perl ndb_size.pl [--database={db_name|ALL}] \
                 [--hostname=host[:port]] [--socket=socket] \
                 [--user=user] [--password=password] \
                 [--help|-h] [--format={html|text}] \
                 [--loadqueries=file_name] \
                 [--savequeries=file_name]

По умолчанию эта утилита пытается проанализировать все базы данных на сервере. Можно определить одну базу данных, используя опцию --database, поведение по умолчанию может быть сделано явным при помощи ALL для названия базы данных. Можно также исключить одну или более баз данных при помощи опции --excludedbs со списком разделенных запятой значений названий баз данных, которые будут пропущены. Точно так же можно заставить определенные таблицы быть пропущенными, перечислив их имена, отделенные запятыми, после опции --excludetables. Имя хоста может быть определено, используя --hostname, умолчание localhost. Можно определить порт в дополнение к хосту, используя формат host:port для значения --hostname. Номер порта по умолчанию 3306. Если необходимо, можно также определить сокет, умолчание /var/lib/mysql.sock. Имя пользователя и пароль MySQL может быть определено, указав соответствующие опции. Также возможно управлять форматом вывода, используя опцию --format, это может взять любое из значений html или text, по умолчанию text. Пример текстового вывода:

shell> ndb_size.pl --database=test --socket=/tmp/mysql.sock
ndb_size.pl report for database: 'test' (1 tables)
--------------------------------------------------
Connected to: DBI:mysql:host=localhost;mysql_socket=/tmp/mysql.sock
Including information for versions: 4.1, 5.0, 5.1
test.t1
-------
DataMemory for Columns (* means varsized DataMemory):
 Column NameTypeVarsized Key 4.15.0 5.1
 HIDDEN_NDB_PKEYbigint PRI 88 8
c2 varchar(50) Y 52 524*
c1 int(11) 44 4
 -- ----
Fixed Size Columns DM/Row 64 6412
 Varsize Columns DM/Row 00 4
DataMemory for Indexes:
 Index Name Type 4.15.05.1
PRIMARYBTREE 16 16 16
 -- -- --
 Total Index DM/Row 16 16 16
IndexMemory for Indexes:
 Index Name 4.15.05.1
PRIMARY 33 16 16
-- -- --
 Indexes IM/Row 33 16 16
Summary (for THIS table):
 4.15.05.1
Fixed Overhead DM/Row 12 12 16
 NULL Bytes/Row 444
 DataMemory/Row 96 96 48
(Includes overhead, bitmap and indexes)
Varsize Overhead DM/Row 008
 Varsize NULL Bytes/Row 004
 Avg Varside DM/Row 00 16
 No. Rows 000
Rows/32kb DM Page 340340680
Fixedsize DataMemory (KB) 000
Rows/32kb Varsize DM Page 00 2040
Varsize DataMemory (KB) 000
 Rows/8kb IM Page 248512512
 IndexMemory (KB) 000
Parameter Minimum Requirements
------------------------------
* indicates greater than default
Parameter Default 4.1 5.0 5.1
DataMemory (KB) 819200 0 0
 NoOfOrderedIndexes 1281 1 1
 NoOfTables 1281 1 1
 IndexMemory (KB) 184320 0 0
NoOfUniqueHashIndexes 640 0 0
 NoOfAttributes 10003 3 3
 NoOfTriggers 7685 5 5

Для отладки Perl запросы, которыми управляет этот скрипт, могут быть прочитаны из файла или сохранены в файл, для этого есть опции --loadqueries и --savequeries соответственно. Ни у одной из этих опций нет значения по умолчанию.

Чтобы произвести вывод в формате HTML, используйте опцию --format и перенаправление вывода к файлу, как показано здесь:

shell> ndb_size.pl --database=test --socket=/tmp/mysql.sock \
                      --format=html > ndb_size.html

Без переназначения вывод посылают в stdout.

Вывод из этого скрипта включает следующую информацию:

6.30. ndb_top информация об использовании CPU для потоков NDB

ndb_top показывает в терминале информацию об использовании CPU потоками NDB на узле данных NDB Cluster. Каждый поток представляется двумя строками в вывода, первая показывает системную статистику, вторая показывает измеренную статистику для потока.

ndb_top доступна с MySQL NDB Cluster 7.6.3.

Применение

ndb_top [-h hostname] [-t port] [-u user] [-p pass] [-n node_id]

ndb_top соединяется с MySQL Server на узле SQL кластера. По умолчанию это пытается соединиться с mysqld на localhost, порт 3306 от имени пользователя MySQL root без пароля. Можно отвергнуть хост по умолчанию и порт, соответственно, опциями --host (-h) и --port (-t). Чтобы определить пользователя MySQL и пароль, используйте опции --user (-u) и --passwd (-p). Этот пользователь должен быть в состоянии прочитать таблицы в БД ndbinfo ( ndb_top использует информацию от ndbinfo.cpustat и связанные таблицы).

Для получения дополнительной информации об учетных записях пользователей MySQL и паролях посмотрите Access Control and Account Management.

Вывод доступен как простой текст или граф ASCII, можно определить это использованием опций --text (-x) и --graph (-g), соответственно. Эти два режима отображения предоставляют ту же самую информацию, они могут использоваться одновременно. По крайней мере один режим отображения должен использоваться.

Цветной графа поддержан и позволен по умолчанию (опция --color или -c). С цветной поддержкой граф отображает пользовательское время OS синим, системное время OS в зеленое, время простоя как пустое. Для измеренной нагрузки синий используется в течение времени выполнения, желтый для времени передачи, красный для времени ожидания наполнения буфера передачи и пустота для времени простоя. Процент, показанный в графе, является суммой процентов для всех потоков, которые не простаивают. Цвета в настоящее время не конфигурируемы, можно использовать шкалу полутонов вместо этого при помощи опции --skip-color.

Сортированное представление ( --sort, -r) основано на максимуме измеренной нагрузки и нагрузки, о которой сообщает OS. Показ их может быть позволен и отключен использованием опций --measured-load (-m) и --os-load (-o). Показ по крайней мере одной из этих нагрузок должен быть позволен.

Программа пытается получить статистику из узла данных, имеющего ID узла, заданный опцией --node-id (-n), если не указан, это равняется 1. ndb_top не может предоставить информацию о других типах узлов.

Представление приспосабливается к высоте и ширине окна терминала, минимальная поддержанная ширина 76 знаков.

ndb_top работает непрерывно, пока не завершено явно. Можно остановить использование программы с помощью Ctrl-C. Показ обновляется однажды в секунду, чтобы установить иной интервал задержки, надо использовать опцию --sleep-time (-s).

ndb_top доступен на macOS, Linux и Solaris. Это в настоящее время не поддерживается на платформах Windows.

Следующая таблица включает все опции, которые являются определенными для программы NDB Cluster program ndb_top.

Таблица 6.25. Параметры командной строки для ndb_top

ФорматОписание Добавлено, устарело или удалено

--color ,

-c

Покажите графы ASCII в цвете, используйте --skip-colors, чтобы отключить

Добавлено в NDB 7.6.3

--graph,

-g

Показать данные, используя графы, используйте --skip-graphs, чтобы отключить

Добавлено в NDB 7.6.3

--help,

-?

Показать краткую справку

Добавлено в NDB 7.6.3

--host[=name],

-h

Имя хоста или IP-адрес MySQL Server

Добавлено в NDB 7.6.3

--measured-load,

-m

Покажите измеренную нагрузку потока

Добавлено в NDB 7.6.3

--node-id[=#],

-n

Наблюдайте узел, имеющий этот ID узла

Добавлено в NDB 7.6.3

--os-load,

-o

Покажите нагрузку, измеренную операционной системой

Добавлено в NDB 7.6.3

--passwd[=password] ,

-p

Соединитесь с использованием этого пароля

Добавлено в NDB 7.6.3

Удалено в NDB 7.6.4

--port[=#],

-t (<=7.6.5),

-P (>=7.6.6)

Номер порта, чтобы использовать, соединяясь с MySQL Server

Добавлено в NDB 7.6.3

--sleep-time[=seconds],

-s

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

Добавлено в NDB 7.6.3

--socket,

-S

Файл сокета, чтобы использовать для связи.

Добавлено в NDB 7.6.6

--sort,

-r

Сортировать потоки по использованию, выключается --skip-sort

Добавлено в NDB 7.6.3

--text ,

-x (<=7.6.5),

-t (>=7.6.6)

Показать данные, используя текст

Добавлено в NDB 7.6.3

--user[=name],

-u

Соединитесь как этот пользователь MySQL

Добавлено в NDB 7.6.3

В NDB 7.6.6 и позже ndb_top также понимает общие опции программы NDB --defaults-file, --defaults-extra-file, --print-defaults, --no-defaults и --defaults-group-suffix (Bug #86614, Bug #26236298).

Дополнительные параметры

Пример вывода. Следующие данные показывают ndb_top в окне терминала на системе Linux с узлом данных ndbmtd под умеренной нагрузкой. Здесь программа была вызвана, используя ndb_top -n8 -x, чтобы предоставить текстовый вывод и граф:

Рис. 6.1. ndb_top в терминале

Display from ndb_top, running in a terminal window.
Shows information for each node, including the utilized resources.

6.31. ndb_waiter ждать NDB Cluster, чтобы достигнуть данного статуса

ndb_waiter регулярно (каждые 100 миллисекунд) распечатывает статус всех узлов данных пока группа не достигает данного статуса или лимит --timeout не кончится. По умолчанию это ждет, чтобы кластер достиг статуса STARTED, в котором все узлы начались и соединились с кластером. Это может быть отвергнуто, используя опции --no-contact и --not-started.

Состояния узла, о которых сообщает эта утилита, следующие:

Таблица 6.26. Параметры командной строки для ndb_waiter

Формат ОписаниеДобавлено, устарело или удалено

--no-contact ,

-n

Ждите достижения статуса NO CONTACT

Все выпуски на основе MySQL 5.7

--not-started

Ждите достижения статуса NOT STARTED

Все выпуски на основе MySQL 5.7

--single-user

Ждите, чтобы войти в однопользовательский режим

Все выпуски на основе MySQL 5.7

--timeout=#,

-t

Ждите это число секунд, затем завершите работу безотносительно того, достиг ли кластер требуемого состояния, умолчание составляет 2 минуты (120 секунд)

Все выпуски на основе MySQL 5.7

--nowait-nodes=list

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

Все выпуски на основе MySQL 5.7

--wait-nodes=list ,

-w

Список узлов, для которых надо ждать

Все выпуски на основе MySQL 5.7

Применение

ndb_waiter [-c connection_string]

Дополнительные параметры

Пример вывода. Здесь показан вывод ndb_waiter, когда работает с кластером с 4 узлами, в котором два узла были закрыты и затем начаты снова вручную. Дублированные отчеты (обозначены ...) пропущены.

shell> ./ndb_waiter -c localhost
Connecting to mgmsrv at (localhost)
State node 1 STARTED
State node 2 NO_CONTACT
State node 3 STARTED
State node 4 NO_CONTACT
Waiting for cluster enter state STARTED
...
State node 1 STARTED
State node 2 UNKNOWN
State node 3 STARTED
State node 4 NO_CONTACT
Waiting for cluster enter state STARTED
...
State node 1 STARTED
State node 2 STARTING
State node 3 STARTED
State node 4 NO_CONTACT
Waiting for cluster enter state STARTED
...
State node 1 STARTED
State node 2 STARTING
State node 3 STARTED
State node 4 UNKNOWN
Waiting for cluster enter state STARTED
...
State node 1 STARTED
State node 2 STARTING
State node 3 STARTED
State node 4 STARTING
Waiting for cluster enter state STARTED
...
State node 1 STARTED
State node 2 STARTED
State node 3 STARTED
State node 4 STARTING
Waiting for cluster enter state STARTED
...
State node 1 STARTED
State node 2 STARTED
State node 3 STARTED
State node 4 STARTED
Waiting for cluster enter state STARTED
NDBT_ProgramExit: 0 - OK

Если никакая строка подключения не определяется, то ndb_waiter пытается соединиться с управлением на localhost и сообщает Connecting to mgmsrv at (null).

6.32. Опции, характерные для программ NDB Cluster

Все программы NDB Cluster принимают опции, описанные в этой секции за следующими исключениями:

Пользователи прежних версий NDB Cluster должны отметить, что некоторые из этих опций были изменены, чтобы сделать их последовательными друг с другом, а также с mysqld. Можно использовать --help с любой программой NDB Cluster за исключением ndb_print_backup_file, ndb_print_schema_file и ndb_print_sys_file, чтобы просмотреть список опций, которые поддерживает программа.

Опции в следующей таблице характерны для всех исполняемых файлов NDB Cluster (кроме отмеченных ранее в этой секции).

Таблица 6.27. Параметры командной строки, характерные для всех программ MySQL NDB Cluster

ФорматОписание Добавлено, устарело или удалено

--character-sets-dir=dir_name

Каталог, где наборы символов устанавливаются

Все выпуски на основе MySQL 5.7

--connect-retries=#

Сколько раз повторять связь перед отказом

Все выпуски на основе MySQL 5.7

--connect-retry-delay=#

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

Все выпуски на основе MySQL 5.7

--core-file

Писать ядро при ошибках (умолчание TRUE в отладочных сборках)

Все выпуски на основе MySQL 5.7

--debug=options

Позвольте вывод от вызовов отладки. Может использоваться только для версий, собранных с отладкой

Все выпуски на основе MySQL 5.7

--defaults-extra-file=filename

Прочитайте этот файл после того, как глобальные файлы выбора будут прочитаны

Все выпуски на основе MySQL 5.7

--defaults-file=filename

Прочитайте опции по умолчанию из этого файла

Все выпуски на основе MySQL 5.7

--defaults-group-suffix

Также прочитайте группы с именами, заканчивающимися на этот суффикс

Все выпуски на основе MySQL 5.7

--help,

--usage,

-?

Отобразить краткую справку

Все выпуски на основе MySQL 5.7

--login-path=path

Прочитайте этот путь из файла входа в систему

Все выпуски на основе MySQL 5.7

--ndb-connectstring=connectstring,

--connect-string=connectstring,

-c

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

Все выпуски на основе MySQL 5.7

--ndb-mgmd-host=host[:port]

Установите хост (и порт при желании) для соединения с сервером управления

Все выпуски на основе MySQL 5.7

--ndb-nodeid=#

Id для этого узла

Все выпуски на основе MySQL 5.7

--ndb-optimized-node-selection

Выберите узлы для транзакций более оптимальным способом

Все выпуски на основе MySQL 5.7

--no-defaults

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

Все выпуски на основе MySQL 5.7

--print-defaults

Напечатайте список аргумента программы

Все выпуски на основе MySQL 5.7

--version,

-V

Информация о версии программы

Все выпуски на основе MySQL 5.7

Для опций, определенных для отдельных программ NDB Cluster, см. главу 6.

См. раздел 5.3.9.1 для опций mysqld, касающихся NDB Cluster.