21.5.24 ndb_restore — Восстановление резервной копии кластера NDB
Программа восстановления кластера NDB реализована как отдельная утилита командной строки ndb_restore, которую обычно можно найти в каталоге MySQL bin. Эта программа считывает файлы, созданные в результате резервного копирования, и вставляет сохранённую информацию в базу данных.
Начиная с NDB 7.5.15 и 7.6.11, эта программа больше не выводит NDBT_ProgramExit: ... при завершении выполнения. Приложения, зависящие от этого поведения, должны быть соответствующим образом изменены при обновлении с более ранних версий.
ndb_restore необходимо выполнить один раз для каждого файла резервной копии, созданного командой START BACKUP (см. Раздел 21.6.8.2, «Использование клиента управления кластером NDB для создания резервной копии»). Это соответствует количеству узлов данных в кластере на момент создания резервной копии.
Перед использованием ndb_restore рекомендуется запустить кластер в режиме одного пользователя, если вы не восстанавливаете несколько узлов данных параллельно. Дополнительную информацию см. в Разделе 21.6.6, «Режим одного пользователя для кластера NDB».
Параметры, которые можно использовать с ndb_restore, показаны в следующей таблице. Дополнительные описания приведены после таблицы.
Таблица 21.38 Параметры командной строки, используемые с программой ndb_restore
| Формат | Описание | Добавлен, устарел или удален |
|---|---|---|
| Разрешить изменения набора столбцов, образующих первичный ключ таблицы | ДОБАВЛЕН: NDB 7.6.14 | |
| Добавить данные в файл с табуляцией | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Путь к каталогу резервных файлов | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Восстановление из резервной копии с этим идентификатором | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Каталог, содержащий наборы символов | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Псевдоним для --connectstring | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Количество попыток повторного подключения перед отказом | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Количество секунд ожидания между попытками связаться с сервером управления | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| То же, что и --ndb-connectstring | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Создать файл core при ошибке; используется при отладке | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Прочитать указанный файл после чтения глобальных файлов | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Прочитать параметры по умолчанию только из указанного файла | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Также читать группы с concat(group, suffix) | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Игнорировать индексы из резервной копии; может сократить время, необходимое для восстановления данных | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Не игнорировать системную таблицу во время восстановления; только экспериментально; не для использования в производстве | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Список одной или нескольких баз данных для исключения (включает те, которые не указаны) | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Не восстанавливать промежуточные таблицы (имеющие имена, начинающиеся с '#sql-'), оставшиеся от копирования операций ALTER TABLE; укажите FALSE для восстановления таких таблиц | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Игнорировать столбцы из резервной копии версии таблицы, отсутствующие в версии таблицы в базе данных | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Игнорировать таблицы из резервной копии, отсутствующие в базе данных | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Список одной или нескольких таблиц для исключения (включает те, которые находятся в той же базе данных и не указаны); каждое имя таблицы должно включать имя базы данных | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Поля заключены в этот символ | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Поля необязательно заключены в этот символ | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Поля завершаются этим символом | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Отобразить текст справки и выйти | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Выводить двоичные типы в шестнадцатеричном формате | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Игнорировать записи журнала, содержащие обновления столбцов, теперь включенных в расширенный первичный ключ | ДОБАВЛЕН: NDB 7.6.14 | |
| Список одной или нескольких баз данных для восстановления (исключает те, которые не указаны) | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Список одной или нескольких таблиц для восстановления (исключает те, которые находятся в той же базе данных и не указаны); каждое имя таблицы должно включать имя базы данных | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Строки завершаются этим символом | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Прочитать указанный путь из файла входа | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Разрешить убывающие преобразования значений столбцов (приведение типов или изменения знака) при восстановлении данных из резервной копии | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Если mysqld подключен и использует двоичное протоколирование, не записывать восстановленные данные | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Не читать параметры по умолчанию из любого файла параметров, кроме файла входа | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Не восстанавливать объекты, относящиеся к данным диска | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Не обновлять тип массива для атрибутов varsize, которые не изменяют размер данных VAR, и не изменять атрибуты столбцов | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Установить строку подключения для подключения к ndb_mgmd. Синтаксис: "[nodeid=id;][host=]hostname[:port]". Перезаписывает записи в NDB_CONNECTSTRING и my.cnf | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| То же, что и --ndb-connectstring | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Указать карту сопоставления групп узлов; не используется, не поддерживается | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Установить идентификатор узла для этого узла, переопределяя любой ID, заданный --ndb-connectstring | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Включить оптимизации для выбора узлов для транзакций. Включено по умолчанию; используйте --skip-ndb-optimized-node-selection для отключения | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Идентификатор узла, на котором была сделана резервная копия | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Количество срезов для применения при восстановлении по срезам | ДОБАВЛЕН: NDB 7.6.13 | |
| Количество параллельных транзакций, используемых при восстановлении данных | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Разрешить сохранение хвостовых пробелов (включая заполнение) при продвижении типов строк с фиксированной шириной к типам переменной ширины | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Вывести метаданные, данные и журнал в стандартный вывод (эквивалентно --print-meta --print-data --print-log) | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Вывести данные в стандартный вывод | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Вывести список аргументов программы и выйти | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Вывести журнал в стандартный вывод | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) | |
| Вывести метаданные в стандартный вывод | (Поддерживается во всех выпусках NDB, основанных на MySQL 5.7) |
| Запись SQL журнала в стандартный вывод | ДОБАВЛЕНО: NDB 7.5.4 | |
| Печать статуса восстановления через заданное количество секунд | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Разрешить продвижение атрибутов при восстановлении данных из резервной копии | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Вызывает многопоточное восстановление упорядоченных индексов, найденных в резервной копии; количество потоков определяется настройкой BuildIndexThreads | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Применить смещение к значению указанного столбца с использованием указанной функции и аргументов. Формат [db].[tbl].[col]:[fn]:[args]; см. документацию для получения подробностей | ДОБАВЛЕНО: NDB 7.6.14 | |
| Восстановление данных таблицы и журналов в NDB Cluster с использованием NDB API | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Восстановление информации о времени эпохи в таблицу состояния; полезно в кластере реплик для запуска репликации; обновляет или вставляет строку в mysql.ndb_apply_status с идентификатором 0 | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Восстановление метаданных в NDB Cluster с использованием NDB API | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Восстановление таблиц привилегий MySQL, которые были ранее перемещены в NDB | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Восстановление в базу данных с другим именем; формат olddb,newdb | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Игнорирование отсутствующих таблиц BLOB в файле резервной копии | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Пропуск проверки структуры таблицы во время восстановления | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Объекты схемы, не распознаваемые ndb_restore, будут пропущены при восстановлении резервной копии, созданной из более новой версии NDB в более старую версию | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Идентификатор раздела при восстановлении по разделам | ДОБАВЛЕНО: NDB 7.6.13 | |
| Создание текстового файла с разделителем табуляция для каждой таблицы в предоставленном пути | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Добавление временных меток ко всем сообщениям журнала информации, ошибок и отладки | ДОБАВЛЕНО: NDB 7.5.30, 5.7.41-ndb-7.6.26 | |
| Отображение справки и выход; аналогично --help | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Уровень подробности вывода | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) | |
| Отображение информации о версии и выход | (Поддерживается во всех выпусках NDB на основе MySQL 5.7) |
-
--allow-pk-changesФормат командной строки --allow-pk-changes[=0|1]Введено 5.7.29-ndb-7.6.14 Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 1При установке этого параметра в
1, ndb_restore разрешает различие первичных ключей в определении таблицы от первичных ключей той же таблицы в резервной копии. Это может быть желательно при резервном копировании и восстановлении между различными версиями схем с изменениями первичных ключей в одной или нескольких таблицах, и, похоже, выполнение операции восстановления с помощью ndb_restore проще или эффективнее, чем выполнение многихALTER TABLEинструкций после восстановления схем и данных таблиц.Следующие изменения в определениях первичных ключей поддерживаются
--allow-pk-changes:-
Расширение первичного ключа: Столбец без значения NULL, который существует в схеме таблицы в резервной копии, становится частью первичного ключа таблицы в базе данных.
ВажноПри расширении первичного ключа таблицы, все столбцы, которые становятся частью первичного ключа, не должны обновляться во время создания резервной копии; любые такие обновления, обнаруженные ndb_restore, приводят к сбою операции восстановления, даже если изменение значения не происходит. В некоторых случаях, возможно, можно переопределить это поведение, используя параметр
--ignore-extended-pk-updates; см. описание этого параметра для получения дополнительной информации. Сокращение первичного ключа (1): Столбец, который уже является частью первичного ключа таблицы в схеме резервной копии, больше не является частью первичного ключа, но остается в таблице.
Сокращение первичного ключа (2): Столбец, который уже является частью первичного ключа таблицы в схеме резервной копии, полностью удаляется из таблицы.
Эти различия могут быть объединены с другими различиями схемы, поддерживаемыми ndb_restore, включая изменения столбцов blob и text, требующие использования таблиц промежуточного хранения.
Основные шаги в типичном сценарии с изменениями схемы первичного ключа перечислены здесь:
Восстановить схемы таблиц с помощью ndb_restore
--restore-metaИзменить схему до желаемой или создать её
Создать резервную копию желаемой схемы
Запустить ndb_restore
--disable-indexesс резервной копией из предыдущего шага, чтобы удалить индексы и ограниченияЗапустить ndb_restore
--allow-pk-changes(возможно, вместе с--ignore-extended-pk-updates,--disable-indexes, и, возможно, другими необходимыми параметрами) для восстановления всех данныхЗапустить ndb_restore
--rebuild-indexesс резервной копией, созданной с желаемой схемой, чтобы перестроить индексы и ограничения
При расширении первичного ключа ndb_restore может использовать временный уникальный вторичный индекс во время операции восстановления для сопоставления старого первичного ключа с новым. Такой индекс создается только при необходимости для применения событий из журнала резервной копии к таблице, у которой расширен первичный ключ. Этот индекс называется
NDB$RESTORE_PK_MAPPINGи создается для каждой требующей этого таблицы; он может быть, при необходимости, совмещен несколькими экземплярами ndb_restore, работающими параллельно. (Запуск ndb_restore--rebuild-indexesв конце процесса восстановления приводит к удалению этого индекса.) -
-
--appendФормат командной строки --appendПри использовании с параметрами
--tabи--print-data, это приводит к добавлению данных в любые существующие файлы с теми же именами.
-
--backup-path=dir_nameФормат командной строки --backup-path=pathТип Имя каталога Значение по умолчанию ./Путь к каталогу резервной копии обязателен; он передается в ndb_restore с помощью параметра
--backup-pathи должен включать подкаталог, соответствующий идентификатору резервной копии, которую необходимо восстановить. Например, еслиDataDirузла данных равен/var/lib/mysql-cluster, то каталог резервной копии —/var/lib/mysql-cluster/BACKUP, а файлы резервной копии с идентификатором 3 находятся в/var/lib/mysql-cluster/BACKUP/BACKUP-3. Путь может быть абсолютным или относительным к каталогу, в котором находится исполняемый файл ndb_restore, и может дополнительно начинаться сbackup-path=.Можно восстановить резервную копию в базе данных с конфигурацией, отличной от той, из которой она была создана. Например, предположим, что резервная копия с идентификатором
12, созданная в кластере с двумя узлами хранения данных с идентификаторами узлов2и3, должна быть восстановлена в кластере с четырьмя узлами. Тогда ndb_restore необходимо запустить дважды — один раз для каждого узла хранения данных в кластере, где была создана резервная копия. Однако ndb_restore не всегда может восстанавливать резервные копии, созданные в кластере, работающем на одной версии MySQL, в кластере, работающем на другой версии MySQL. Дополнительные сведения см. в разделе 21.3.7, «Обновление и понижение версии кластера NDB».ВажноНевозможно восстановить резервную копию, созданную с использованием более новой версии кластера NDB, с помощью более старой версии ndb_restore. Вы можете восстановить резервную копию, созданную с использованием более новой версии MySQL, в более старый кластер, но для этого необходимо использовать копию ndb_restore из более новой версии кластера NDB.
Например, чтобы восстановить резервную копию кластера, созданную в кластере, работающем под управлением NDB Cluster 7.5.36, в кластере, работающем под управлением NDB Cluster 7.4.39, необходимо использовать ndb_restore, который поставляется с дистрибутивом NDB Cluster 7.5.36.
Для более быстрого восстановления данные могут восстанавливаться параллельно, при условии, что доступно достаточное количество подключений к кластеру. То есть при восстановлении на нескольких узлах параллельно, для каждого параллельного процесса ndb_restore должен быть доступен раздел
[api]или[mysqld]в файле конфигурации кластераconfig.ini. Однако файлы данных всегда должны применяться до журналов. -
--backupid=#,-bФормат командной строки --backupid=#Тип Числовой Значение по умолчанию noneЭтот параметр используется для указания идентификатора или порядкового номера резервной копии и совпадает с номером, отображаемым клиентом управления в сообщении
Backup, отображаемом по завершении резервного копирования. (См. раздел 21.6.8.2, «Использование клиента управления кластером NDB для создания резервной копии».)backup_idcompletedВажноПри восстановлении резервных копий кластера необходимо убедиться, что все узлы данных восстанавливаются из резервных копий с одним и тем же идентификатором резервной копии. Использование файлов из разных резервных копий может, в лучшем случае, привести к восстановлению кластера в несогласованном состоянии и может полностью завершиться неудачей.
В NDB 7.5.13 и более поздних версиях, а также в NDB 7.6.9 и более поздних версиях этот параметр является обязательным.
-
--character-sets-dirФормат командной строки --character-sets-dir=pathКаталог, содержащий кодировки символов.
-
--connect,-cФормат командной строки --connect=connection_stringТип Строка Значение по умолчанию localhost:1186Псевдоним для
--ndb-connectstring. -
--connect-retriesФормат командной строки --connect-retries=#Тип Целое число Значение по умолчанию 12Минимальное значение 0Максимальное значение 12Количество попыток повторного подключения перед отказом.
-
--connect-retry-delayФормат командной строки --connect-retry-delay=#Тип Целое число Значение по умолчанию 5Минимальное значение 0Максимальное значение 5Количество секунд ожидания между попытками связаться с сервером управления.
-
--connect-stringФормат командной строки --connect-string=connection_stringТип Строка Значение по умолчанию [none]То же, что и
--ndb-connectstring. -
--core-fileФормат командной строки --core-fileЗаписать файл дампа памяти при ошибке; используется при отладке.
-
--defaults-extra-fileФормат командной строки --defaults-extra-file=pathТип Строка Значение по умолчанию [none]Прочитать данный файл после того, как будут прочитаны глобальные файлы.
-
--defaults-fileФормат командной строки --defaults-file=pathТип Строка Значение по умолчанию [none]Прочитать параметры по умолчанию только из данного файла.
-
--defaults-group-suffixФормат командной строки --defaults-group-suffix=stringТип Строка Значение по умолчанию [none]Также читать группы с concat(group, suffix).
-
--disable-indexesФормат командной строки --disable-indexesОтключить восстановление индексов во время восстановления данных из собственной резервной копии
NDB. После этого вы можете восстановить индексы для всех таблиц одновременно с многопоточной сборкой индексов с помощью--rebuild-indexes, что должно быть быстрее, чем одновременная пересборка индексов для очень больших таблиц.Начиная с NDB 7.5.24 и NDB 7.6.20, этот параметр также удаляет все внешние ключи, указанные в резервной копии.
-
--dont-ignore-systab-0,-fКомандная строка --dont-ignore-systab-0Обычно, при восстановлении данных и метаданных таблицы, ndb_restore игнорирует копию системной таблицы
NDB, которая присутствует в резервной копии. Параметр--dont-ignore-systab-0заставляет восстановить системную таблицу. Этот параметр предназначен только для экспериментального и исследовательского использования и не рекомендуется в рабочей среде. -
--exclude-databases=db-listКомандная строка --exclude-databases=listТип Строка Значение по умолчанию Список баз данных, разделенных запятыми, которые не должны быть восстановлены.
Этот параметр часто используется в сочетании с
--exclude-tables; для получения дополнительной информации и примеров см. описание этого параметра. -
--exclude-intermediate-sql-tables[=TRUE|FALSE]Командная строка --exclude-intermediate-sql-tables[=TRUE|FALSE]Тип Булево Значение по умолчанию TRUEПри выполнении операций копирования
ALTER TABLE, mysqld создаёт промежуточные таблицы (с именами, начинающимися с#sql-). При установкеTRUEпараметр--exclude-intermediate-sql-tablesпредотвращает ndb_restore от восстановления таких таблиц, которые могли остаться после этих операций. По умолчанию этот параметрTRUE. -
--exclude-missing-columnsКомандная строка --exclude-missing-columnsИспользуя этот параметр, можно восстановить только выбранные столбцы таблицы, что заставляет ndb_restore игнорировать любые отсутствующие столбцы в восстанавливаемых таблицах по сравнению с версиями этих таблиц в резервной копии. Этот параметр применяется ко всем восстанавливаемым таблицам. Если вы хотите применить этот параметр только к выбранным таблицам или базам данных, вы можете использовать его в сочетании с одним или несколькими параметрами
--include-*или--exclude-*, описанными в другом месте этого раздела, для этого, а затем восстановить данные в оставшихся таблицах с помощью дополнительного набора этих параметров. -
--exclude-missing-tablesКомандная строка --exclude-missing-tablesИспользуя этот параметр, можно восстановить только выбранные таблицы, что заставляет ndb_restore игнорировать любые таблицы из резервной копии, которые не найдены в целевой базе данных.
-
--exclude-tables=table-listКомандная строка --exclude-tables=listТип Строка Значение по умолчанию Список одной или нескольких таблиц для исключения; каждая ссылка на таблицу должна включать имя базы данных. Часто используется вместе с
--exclude-databases.Когда используются
--exclude-databasesили--exclude-tables, исключаются только те базы данных или таблицы, которые указаны в параметре; все остальные базы данных и таблицы восстанавливаются командой ndb_restore.Эта таблица показывает несколько вызовов ndb_restore с использованием параметров
--exclude-*(другие необходимые параметры опущены для ясности), и как эти параметры влияют на восстановление из резервной копии NDB Cluster:Таблица 21.39 Несколько вызовов ndb_restore с использованием параметров --exclude-*, и их влияние на восстановление из резервной копии NDB Cluster.
Таблица 21.39 Несколько вызовов ndb_restore с использованием параметров --exclude-* и их влияние на восстановление из резервной копии NDB Cluster. Параметр Результат --exclude-databases=db1Восстанавливаются все таблицы во всех базах данных, кроме db1; никакие таблицы вdb1не восстанавливаются--exclude-databases=db1,db2(или--exclude-databases=db1--exclude-databases=db2)Восстанавливаются все таблицы во всех базах данных, кроме db1иdb2; никакие таблицы вdb1илиdb2не восстанавливаются--exclude-tables=db1.t1Восстанавливаются все таблицы, кроме t1в базе данныхdb1; все остальные таблицы вdb1восстанавливаются; все таблицы во всех остальных базах данных восстанавливаются--exclude-tables=db1.t2,db2.t1(или--exclude-tables=db1.t2--exclude-tables=db2.t1)Восстанавливаются все таблицы в базе данных db1, кромеt2, и все таблицы в базе данныхdb2, кроме таблицыt1; никакие другие таблицы вdb1илиdb2не восстанавливаются; все таблицы во всех остальных базах данных восстанавливаютсяВы можете использовать эти два параметра вместе. Например, следующее приводит к восстановлению всех таблиц во всех базах данных кроме баз данных
db1иdb2, и таблицt1иt2в базе данныхdb3:$>
ndb_restore [...] --exclude-databases=db1,db2 --exclude-tables=db3.t1,db3.t2(Опять же, мы опустили другие, возможно, необходимые параметры для ясности и краткости в приведенном примере.)
Вы можете использовать параметры
--include-*и--exclude-*вместе, соблюдая следующие правила:Действия всех параметров
--include-*и--exclude-*накапливаются.Все параметры
--include-*и--exclude-*оцениваются в порядке, переданном в ndb_restore, справа налево.В случае конфликтующих параметров, приоритет имеет первый (самый правый) параметр. Иными словами, первый параметр (справа налево), который соответствует заданной базе данных или таблице, «побеждает».
Например, следующий набор параметров заставляет ndb_restore восстановить все таблицы из базы данных
db1, за исключениемdb1.t1, а также не восстанавливать другие таблицы из других баз данных:--include-databases=db1 --exclude-tables=db1.t1
Однако, изменение порядка этих параметров просто заставит восстановить все таблицы из базы данных
db1(включаяdb1.t1), но не таблицы из других баз данных, потому что параметр--include-databases, будучи самым правым, является первым совпадением с базой данныхdb1и, таким образом, имеет приоритет над любым другим параметром, который соответствуетdb1или любым таблицам вdb1:--exclude-tables=db1.t1 --include-databases=db1
-
--fields-enclosed-by=charКомандная строка --fields-enclosed-by=charТип Строка Значение по умолчанию Каждое значение столбца заключено в строку, переданную в этот параметр (независимо от типа данных; см. описание
--fields-optionally-enclosed-by).
-
--fields-optionally-enclosed-byФормат командной строки --fields-optionally-enclosed-byТип String Значение по умолчанию Строка, переданная этому параметру, используется для заключения значений столбцов, содержащих символьные данные (такие как
CHAR,VARCHAR,BINARY,TEXTилиENUM). -
--fields-terminated-by=charФормат командной строки --fields-terminated-by=charТип String Значение по умолчанию \t (tab)Строка, переданная этому параметру, используется для разделения значений столбцов. Значение по умолчанию — символ табуляции (
\t). -
--helpФормат командной строки --helpОтобразить справку и выйти.
-
--hexФормат командной строки --hexЕсли используется этот параметр, все двоичные значения выводятся в шестнадцатеричном формате.
-
--ignore-extended-pk-updatesФормат командной строки --ignore-extended-pk-updates[=0|1]Введено 5.7.29-ndb-7.6.14 Тип Integer Значение по умолчанию 0Минимальное значение 0Максимальное значение 1При использовании параметра
--allow-pk-changesстолбцы, которые становятся частью первичного ключа таблицы, не должны обновляться во время создания резервной копии; такие столбцы должны сохранять те же значения с момента вставки значений в них до тех пор, пока строки, содержащие эти значения, не будут удалены. Если ndb_restore обнаруживает обновления этих столбцов при восстановлении резервной копии, восстановление завершается неудачей. Поскольку некоторые приложения могут устанавливать значения для всех столбцов при обновлении строки, даже если некоторые значения столбцов не изменяются, резервная копия может содержать события журнала, которые, как представляется, обновляют столбцы, которые на самом деле не изменяются. В таких случаях можно установить--ignore-extended-pk-updatesв1, заставив ndb_restore игнорировать такие обновления.ВажноПри игнорировании этих обновлений пользователь отвечает за обеспечение отсутствия обновлений значений любых столбцов, которые становятся частью первичного ключа.
Для получения дополнительной информации см. описание
--allow-pk-changes. -
--include-databases=db-listФормат командной строки --include-databases=listТип String Значение по умолчанию Список баз данных, разделенных запятыми, для восстановления. Часто используется вместе с
--include-tables; см. описание этого параметра для получения дополнительной информации и примеров. -
--include-tables=table-listФормат командной строки --include-tables=listТип String Значение по умолчанию Список таблиц, разделенных запятыми, для восстановления; каждая ссылка на таблицу должна содержать имя базы данных.
При использовании
--include-databasesили--include-tablesвосстанавливаются только те базы данных или таблицы, которые указаны в параметре; все остальные базы данных и таблицы исключаются ndb_restore и не восстанавливаются.В следующей таблице показаны несколько вызовов ndb_restore с использованием параметров
--include-*(другие параметры, которые могут потребоваться, опущены для ясности), и их влияние на восстановление из резервной копии кластера NDB:Таблица 21.40 Несколько вызовов ndb_restore с использованием параметров --include-*, и их влияние на восстановление из резервной копии кластера NDB.
Таблица 21.40 Несколько вызовов ndb_restore с использованием параметров --include-*, и их влияние на восстановление из резервной копии кластера NDB. Параметр Результат --include-databases=db1Восстанавливаются только таблицы в базе данных db1; все таблицы во всех остальных базах данных игнорируются--include-databases=db1,db2(или--include-databases=db1--include-databases=db2)Восстанавливаются только таблицы в базах данных db1иdb2; все таблицы во всех остальных базах данных игнорируются--include-tables=db1.t1Восстанавливается только таблица t1в базе данныхdb1; другие таблицы вdb1или в любой другой базе данных не восстанавливаются--include-tables=db1.t2,db2.t1(или--include-tables=db1.t2--include-tables=db2.t1)Восстанавливаются только таблица t2в базе данныхdb1и таблицаt1в базе данныхdb2; другие таблицы вdb1,db2или в любой другой базе данных не восстанавливаютсяЭти два параметра также можно использовать вместе. Например, следующий вызов приводит к восстановлению всех таблиц в базах данных
db1иdb2, а также таблицt1иt2в базе данныхdb3(и никаких других баз данных или таблиц):$>
ndb_restore [...] --include-databases=db1,db2 --include-tables=db3.t1,db3.t2(Опять же, мы опустили другие, возможно, необходимые параметры в приведенном выше примере.)
Также можно восстановить только выбранные базы данных или выбранные таблицы из одной базы данных без каких-либо параметров
--include-*(или--exclude-*), используя синтаксис, показанный здесь:ndb_restore
other_optionsdb_name,[db_name[,...] |tbl_name[,tbl_name][,...]]Другими словами, можно указать для восстановления следующее:
Все таблицы из одной или нескольких баз данных
Одна или несколько таблиц из одной базы данных
-
--lines-terminated-by=charФормат командной строки --lines-terminated-by=charТип String Значение по умолчанию \n (linebreak)Указывает строку, используемую для завершения каждой строки вывода. Значение по умолчанию — символ перевода строки (
\n). -
--login-pathФормат командной строки --login-path=pathТип String Значение по умолчанию [none]Прочитать заданный путь из файла входа.
-
--lossy-conversions,-LФормат командной строки --lossy-conversionsЭтот параметр предназначен для дополнения параметра
--promote-attributes. Использование--lossy-conversionsпозволяет выполнять потери при преобразованиях значений столбцов (снижение типа или изменения знака) при восстановлении данных из резервной копии. В некоторых исключениях правила, определяющие понижение, такие же, как для репликации MySQL; см. Раздел 16.4.1.10.2, «Репликация столбцов с различными типами данных» для получения информации о конкретных преобразованиях типов, в настоящее время поддерживаемых понижением атрибутов.Начиная с NDB 7.5.23 и NDB 7.6.19, этот параметр также позволяет восстановить столбец
NULLв качествеNOT NULL. Столбец не должен содержать никакихNULLзаписей; в противном случае ndb_restore завершится с ошибкой.ndb_restore сообщает об обрезке данных, выполняемой во время потери преобразований один раз на атрибут и столбец.
-
--ndb-connectstringФормат командной строки --ndb-connectstring=connection_stringТип Строка Значение по умолчанию [none]Установите строку подключения для подключения к ndb_mgmd. Синтаксис: "[nodeid=id;][host=]hostname[:port]". Перезаписывает записи в NDB_CONNECTSTRING и my.cnf.
-
--ndb-mgmd-hostФормат командной строки --ndb-mgmd-host=connection_stringТип Строка Значение по умолчанию [none]То же самое, что и
--ndb-connectstring. -
--ndb-nodegroup-map=map,-zФормат командной строки --ndb-nodegroup-map=mapПредназначен для восстановления резервной копии, взятой из одной группы узлов в другую группу узлов, но никогда полностью не реализован; не поддерживается.
-
--ndb-nodeidФормат командной строки --ndb-nodeid=#Тип Целое число Значение по умолчанию [none]Установите идентификатор узла для этого узла, переопределяя любой идентификатор, установленный с помощью
--ndb-connectstring. -
--ndb-optimized-node-selectionФормат командной строки --ndb-optimized-node-selectionВключить оптимизации для выбора узлов для транзакций. Включено по умолчанию; используйте
--skip-ndb-optimized-node-selectionдля отключения. -
--no-binlogФормат командной строки --no-binlogЭтот параметр предотвращает запись подключенных узлов SQL восстановленных данных ndb_restore в их двоичные журналы.
-
--no-defaultsФормат командной строки --no-defaultsНе читать параметры по умолчанию из любого файла параметров, кроме файла входа.
-
--no-restore-disk-objects,-dФормат командной строки --no-restore-disk-objectsЭтот параметр останавливает ndb_restore от восстановления каких-либо объектов данных NDB Cluster Disk, таких как табличные пространства и группы файлов журнала; см. Раздел 21.6.11, «Таблицы данных NDB Cluster Disk» для получения дополнительной информации об этих объектах.
-
--no-upgrade,-uФормат командной строки --no-upgradeПри использовании ndb_restore для восстановления резервной копии,
VARCHARстолбцы, созданные с использованием старого фиксированного формата, изменяются в размерах и пересоздаются с использованием теперь используемого переменного формата. Это поведение можно переопределить, указав--no-upgrade. -
--nodeid=#,-nФормат командной строки --nodeid=#Тип Числовой Значение по умолчанию noneУкажите идентификатор узла узла данных, на котором была взята резервная копия.
При восстановлении в кластере с другим количеством узлов данных, чем тот, на котором была взята резервная копия, эта информация помогает определить правильный набор или наборы файлов, которые нужно восстановить на данный узел. (В таких случаях обычно необходимо восстановить несколько файлов на один узел данных.) См. Раздел 21.5.24.2, «Восстановление в разном количестве узлов данных» для получения дополнительной информации и примеров.
В NDB 7.5.13 и более поздних версиях, а также в NDB 7.6.9 и более поздних версиях, этот параметр требуется.
-
--num-slices=#Формат командной строки --num-slices=#Введено 5.7.29-ndb-7.6.13 Тип Целое число Значение по умолчанию 1Минимальное значение 1Максимальное значение 1024При восстановлении резервной копии по частям этот параметр задает количество частей, на которые следует разделить резервную копию. Это позволяет нескольким экземплярам ndb_restore восстанавливать непересекающиеся подмножества параллельно, потенциально сокращая время, необходимое для выполнения операции восстановления.
Часть — это подмножество данных в данной резервной копии; другими словами, это набор фрагментов с одинаковым идентификатором части, указанным с помощью параметра
--slice-id. Оба параметра всегда должны использоваться вместе, и значение, заданное--slice-id, всегда должно быть меньше количества частей.ndb_restore сталкивается с фрагментами и присваивает каждому из них счётчик фрагментов. При восстановлении по частям каждому фрагменту присваивается идентификатор части; этот идентификатор находится в диапазоне от 0 до значения, на единицу меньшего, чем количество частей. Для таблицы, которая не является таблицей
BLOB, часть, к которой принадлежит данный фрагмент, определяется с помощью показанной здесь формулы:[
slice_ID] = [fragment_counter] % [number_of_slices]Для таблицы
BLOB, счётчик фрагментов не используется; вместо него используется номер фрагмента вместе с идентификатором основной таблицы для таблицыBLOB(вспомните, чтоNDBхранит значенияBLOBво внутренней отдельной таблице). В этом случае идентификатор части для данного фрагмента вычисляется следующим образом:[
slice_ID] = ([main_table_ID] + [fragment_ID]) % [number_of_slices]Таким образом, восстановление по
Nчастям означает запускNэкземпляров ndb_restore, все с--num-slices=(вместе со всеми другими необходимыми параметрами) и по одному каждому сN--slice-id=1,--slice-id=2,--slice-id=3и так далее доslice-id=.N-1 -
--parallelism=#,-pФормат командной строки --parallelism=#Тип Числовой Значение по умолчанию 128Минимальное значение 1Максимальное значение 1024ndb_restore использует транзакции с одной строкой для одновременного применения многих строк. Этот параметр определяет количество параллельных транзакций (одновременных строк), которые экземпляр ndb_restore пытается использовать. По умолчанию это 128; минимум — 1, максимум — 1024.
Работа по выполнению вставок параллелизуется по потокам в узлах данных, которые участвуют. Этот механизм используется для восстановления объёмных данных из файла
.Data— то есть, размытого моментального снимка данных; он не используется для создания или перестройки индексов. Журнал изменений применяется последовательно; операции удаления и создания индексов (DDL) обрабатываются отдельно. На стороне клиента при восстановлении нет параллелизма на уровне потоков. -
--preserve-trailing-spaces,-PФормат командной строки --preserve-trailing-spacesПриводить к сохранению пробелов в конце при продвижении типа данных с фиксированной шириной к его типу переменной ширины — то есть, при продвижении значения столбца
CHARкVARCHARили значения столбцаBINARYкVARBINARY. В противном случае любые пробелы в конце таких значений столбцов удаляются при их вставке в новые столбцы. -
--printФормат командной строки --printПриводит к тому, что ndb_restore выводит все данные, метаданные и журналы в
stdout. Эквивалентно одновременное использование параметров--print-data,--print-metaи--print-log.ПримечаниеИспользование
--printили любого из--print_*параметров фактически выполняет пробную операцию. Включение одного или нескольких из этих параметров приводит к перенаправлению всего вывода вstdout; в таких случаях ndb_restore не пытается восстановить данные или метаданные в кластере NDB.
-
print-sql-logФормат командной строки --print-sql-logВведено 5.7.16-ndb-7.5.4 Ведёт протокол SQL-запросов в
stdout. Используйте этот параметр для включения; обычно данное поведение отключено. Параметр проверяет, прежде чем пытаться выполнить протоколирование, все ли таблицы, которые восстанавливаются, имеют явно определённые первичные ключи; запросы к таблице, имеющей только скрытый первичный ключ, реализованныйNDB, не могут быть преобразованы в допустимые SQL-запросы.Этот параметр не работает с таблицами, содержащими колонки
BLOB.Параметр
--print-sql-logбыл добавлен в NDB 7.5.4. (Ошибка #13511949) -
--progress-frequency=NФормат командной строки --progress-frequency=#Тип Числовой Значение по умолчанию 0Минимальное значение 0Максимальное значение 65535Выводит отчёт о статусе каждые
Nсекунд во время проведения резервного копирования. 0 (значение по умолчанию) приводит к отсутствию отчётов о статусе. Максимальное значение равно 65535. -
--promote-attributes,-AФормат командной строки --promote-attributesndb_restore поддерживает ограниченное повышение атрибутов аналогично поддержке MySQL replication; другими словами, данные, резервную копию которых выполнили из колонки заданного типа, в целом можно восстановить в колонку, используя тип “больше, схожий”. Например, данные из колонки
CHAR(20)можно восстановить в колонку, объявленную какVARCHAR(20),VARCHAR(30)илиCHAR(30); данные из колонкиMEDIUMINTможно восстановить в колонку типаINTилиBIGINT. Смотрите Раздел 16.4.1.10.2, «Репликация колонок с различными типами данных» для таблицы преобразований типов, которые в настоящее время поддерживаются повышением атрибутов.Начиная с NDB 7.5.23 и NDB 7.6.19, этот параметр также позволяет восстановить колонку
NOT NULLкакNULL.Повышение атрибутов с помощью ndb_restore необходимо явно включить, следующим образом:
Подготовьте таблицу, в которую будет произведено восстановление резервной копии. ndb_restore нельзя использовать для повторного создания таблицы с другим определением, чем исходное; это означает, что вам необходимо либо создать таблицу вручную, либо изменить колонки, которые требуется повысить, используя
ALTER TABLEпосле восстановления метаданных таблицы, но до восстановления данных.Вызовите ndb_restore с параметром
--promote-attributes(короткая форма-A) при восстановлении данных таблицы. Повышение атрибутов не происходит, если этот параметр не используется; вместо этого операция восстановления завершается с ошибкой.
При преобразовании между типами символьных данных и
TEXTилиBLOB, можно выполнять только преобразования между типами символов (CHARиVARCHAR) и двоичных типов (BINARYиVARBINARY) одновременно. Например, нельзя повысить колонкуINTдоBIGINT, одновременно повышая колонкуVARCHARдоTEXTв одном вызове ndb_restore.Преобразование между колонками
TEXTс использованием различных кодировок символов не поддерживается и прямо запрещено.При выполнении преобразований типов символов или двоичных типов в
TEXTилиBLOBс помощью ndb_restore, вы можете заметить, что она создаёт и использует одну или несколько таблиц подготовки с именами. Эти таблицы не нужны после этого и обычно удаляются ndb_restore после успешного восстановления.table_name$STnode_id -
--rebuild-indexesФормат командной строки --rebuild-indexesВключить многопоточное перестроение упорядоченных индексов при восстановлении резервной копии
NDB. Количество потоков, используемых для построения упорядоченных индексов ndb_restore с этим параметром, контролируется параметром конфигурации узла данныхBuildIndexThreadsи количеством LDMs.Этот параметр необходимо использовать только для первого запуска ndb_restore; это приводит к перестроению всех упорядоченных индексов без использования
--rebuild-indexesпри восстановлении последующих узлов. Вы должны использовать этот параметр перед вставкой новых строк в базу данных; в противном случае возможно вставка строки, которая впоследствии приводит к нарушению уникального ограничения при попытке перестроить индексы.По умолчанию построение упорядоченных индексов распараллеливается с количеством LDMs. Время построения оффлайн индексов при перезагрузках узла и системы можно ускорить, используя параметр конфигурации узла данных
BuildIndexThreads; этот параметр не влияет на удаление и перестройку индексов ndb_restore, которое выполняется онлайн.Перестройка уникальных индексов использует пропускную способность записи на диск для ведения журнала redo и локального контрольного пункта. Недостаточное количество этой пропускной способности может привести к переполнению буфера redo или ошибкам переполнения журнала. В таких случаях можно повторно запустить ndb_restore
--rebuild-indexes; процесс возобновляется в точке, где произошла ошибка. Вы также можете сделать это, когда у вас возникли временные ошибки. Вы можете повторять выполнение ndb_restore--rebuild-indexesнеограниченное количество раз; вы можете остановить такие ошибки, уменьшив значение--parallelism. Если проблема заключается в недостатке места, вы можете увеличить размер журнала redo (FragmentLogFileSizeпараметр конфигурации узла), или вы можете увеличить скорость выполнения LCP (MaxDiskWriteSpeedи связанные параметры), чтобы освободить место быстрее.
-
--remap-column=db.tbl.col:fn:argsФормат командной строки --remap-column=stringВведено 5.7.29-ndb-7.6.14 Тип Строка Значение по умолчанию [none]При совместном использовании с
--restore-data, этот параметр применяет функцию к значению указанного столбца. Значения в строке аргументов перечислены здесь:db: Имя базы данных после всех переименований, выполненных с помощью--rewrite-database.tbl: Имя таблицы.col: Имя столбца, который нужно обновить. Этот столбец должен иметь типINTилиBIGINT. Столбец также может, но не обязательно, бытьUNSIGNED.fn: Имя функции; в настоящее время поддерживается только имяoffset.-
args: Аргументы, передаваемые функции. В настоящее время поддерживается только один аргумент — размер смещения, которое необходимо добавить функциейoffset. Поддерживаются отрицательные значения. Размер аргумента не может превышать размер знакового варианта типа столбца; например, еслиcol— столбец типаINT, то допустимый диапазон аргумента, передаваемого функцииoffset, составляет-2147483648до2147483647(см. Раздел 11.1.2, «Целочисленные типы (точное значение) — INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT»).Если применение смещения к столбцу приведет к переполнению или недополнению, операция восстановления завершится ошибкой. Это может произойти, например, если столбец является
BIGINT, а параметр пытается применить смещение 8 к строке, в которой значение столбца равно 4294967291, так как4294967291 + 8 = 4294967299 > 4294967295.
Этот параметр может быть полезен, когда вы хотите объединить данные, хранящиеся в нескольких источниках NDB Cluster (все с использованием одной и той же схемы) в один целевой NDB Cluster, используя резервное копирование NDB (см. Раздел 21.6.8.2, «Использование клиента управления NDB Cluster для создания резервной копии») и ndb_restore для объединения данных, где первичные и уникальные ключи перекрываются между источниками кластеров, и в процессе необходимо переназначить эти значения в диапазоны, которые не перекрываются. Возможно, также потребуется сохранить другие отношения между таблицами. Для выполнения таких требований можно использовать параметр несколько раз в одном вызове ndb_restore для переназначения столбцов разных таблиц, как показано здесь:
$>
ndb_restore --restore-data --remap-column=hr.employee.id:offset:1000 \ --remap-column=hr.manager.id:offset:1000 --remap-column=hr.firstaiders.id:offset:1000(Здесь могут использоваться и другие параметры.)
--remap-columnтакже можно использовать для обновления нескольких столбцов одной и той же таблицы. Возможны комбинации нескольких таблиц и столбцов. Для разных столбцов одной и той же таблицы также можно использовать разные значения смещения, например, так:$>
ndb_restore --restore-data --remap-column=hr.employee.salary:offset:10000 \ --remap-column=hr.employee.hours:offset:-10Если исходные резервные копии содержат дублируемые таблицы, которые не следует объединять, вы можете обработать это с помощью
--exclude-tables,--exclude-databasesили другими средствами вашего приложения.Информацию о структуре и других характеристиках таблиц, которые будут объединяться, можно получить с помощью
SHOW CREATE TABLE; инструмента ndb_desc; иMAX(),MIN(),LAST_INSERT_ID()и других функций MySQL.Репликация изменений из объединенных в не объединенные таблицы или из не объединенных в объединенные таблицы в отдельных экземплярах NDB Cluster не поддерживается.
-
--restore-data,-rФормат командной строки --restore-dataВывод данных и журналов таблицы
NDB. -
--restore-epoch,-eФормат командной строки --restore-epochДобавление (или восстановление) информации об эпохе в таблицу состояния репликации кластера. Это полезно для запуска репликации в кластере репликации NDB. При использовании этого параметра строка в таблице
mysql.ndb_apply_status, содержащая0в столбцеid, обновляется, если она уже существует; такая строка вставляется, если она еще не существует. (См. Раздел 21.7.9, «Резервные копии NDB Cluster с репликацией NDB Cluster».) -
--restore-meta,-mФормат командной строки --restore-metaЭтот параметр заставляет ndb_restore выводить метаданные таблицы
NDB.При первом запуске программы восстановления ndb_restore, необходимо также восстановить метаданные. Другими словами, необходимо повторно создать таблицы базы данных — это можно сделать, запустив ее с параметром
--restore-meta(-m). Восстановление метаданных нужно выполнить только на одном узле данных; этого достаточно для восстановления их в весь кластер.В более старых версиях NDB Cluster таблицы, схемы которых были восстановлены с помощью этого параметра, использовали то же количество разделов, что и в исходном кластере, даже если у него было разное количество узлов данных по сравнению с новым кластером. В NDB 7.5.2 и более поздних версиях при восстановлении метаданных эта проблема больше не возникает; ndb_restore теперь использует стандартное количество разделов для целевого кластера, если только количество локальных потоков диспетчера данных также не изменено по сравнению с тем, что было для узлов данных в исходном кластере.
ПримечаниеКластер должен быть пустым при запуске восстановления резервной копии. (Другими словами, вы должны запустить узлы данных с помощью
--initialперед выполнением восстановления.) -
--restore-privilege-tablesФормат командной строки --restore-privilege-tablesndb_restore по умолчанию не восстанавливает распределённые таблицы привилегий MySQL. Этот параметр заставляет ndb_restore восстановить таблицы привилегий.
Это работает только в том случае, если таблицы привилегий были преобразованы в
NDBперед созданием резервной копии. Дополнительную информацию см. в Разделе 21.6.13, «Распределённые привилегии с помощью общих таблиц предоставления».
-
--rewrite-database=olddb,newdbФормат командной строки --rewrite-database=stringТип String Значение по умолчанию noneЭта опция позволяет восстановить базу данных с именем, отличным от имени, использованного в резервной копии. Например, если резервная копия создана для базы данных с именем
products, можно восстановить содержащиеся в ней данные в базу данных с именемinventory, используя эту опцию, как показано здесь (опуская любые другие необходимые опции):$> ndb_restore --rewrite-database=product,inventory
Опция может использоваться несколько раз в одном вызове ndb_restore. Таким образом, можно одновременно восстановить из базы данных с именем
db1в базу данных с именемdb2и из базы данных с именемdb3в базу данных с именемdb4, используя--rewrite-database=db1,db2 --rewrite-database=db3,db4. Другие опции ndb_restore могут использоваться между несколькими вхождениями--rewrite-database.В случае конфликтов между несколькими опциями
--rewrite-database, последняя использованная опция--rewrite-database(считывание слева направо) является той, которая вступает в силу. Например, если используется--rewrite-database=db1,db2 --rewrite-database=db1,db3, учитывается только--rewrite-database=db1,db3, а--rewrite-database=db1,db2игнорируется. Также можно восстановить из нескольких баз данных в одну базу данных, так что--rewrite-database=db1,db3 --rewrite-database=db2,db3восстанавливает все таблицы и данные из баз данныхdb1иdb2в базу данныхdb3.ВажноПри восстановлении из нескольких резервных баз данных в одну целевую базу данных с помощью
--rewrite-databaseне выполняется проверка на коллизии между именами таблиц или других объектов, и порядок восстановления строк не гарантируется. Это означает, что в таких случаях возможно перезапись строк и потеря обновлений. -
--skip-broken-objectsФормат командной строки --skip-broken-objectsЭта опция заставляет ndb_restore игнорировать поврежденные таблицы при чтении собственной резервной копии
NDBи продолжать восстановление любых оставшихся таблиц (которые также не повреждены). В настоящее время опция--skip-broken-objectsработает только в случае отсутствия таблиц частей blob. -
--skip-table-check,-sФормат командной строки --skip-table-checkМожно восстановить данные без восстановления метаданных таблицы. По умолчанию при этом ndb_restore завершается с ошибкой, если обнаружено несоответствие между данными таблицы и схемой таблицы; эта опция переопределяет это поведение.
Некоторые ограничения на несоответствия в определениях столбцов при восстановлении данных с помощью ndb_restore ослаблены; когда встречается один из таких типов несоответствий, ndb_restore не останавливается с ошибкой, как это было раньше, а скорее принимает данные и вставляет их в целевую таблицу, вынося предупреждение пользователю о том, что это делается. Это поведение происходит независимо от того, используется ли какая-либо из опций
--skip-table-checkили--promote-attributes. Эти различия в определениях столбцов относятся к следующим типам:Различные параметры
COLUMN_FORMAT(FIXED,DYNAMIC,DEFAULT)Различные параметры
STORAGE(MEMORY,DISK)Различные значения по умолчанию
Различные настройки ключа распределения
-
--skip-unknown-objectsФормат командной строки --skip-unknown-objectsЭта опция заставляет ndb_restore игнорировать любые объекты схемы, которые он не распознает при чтении собственной резервной копии
NDB. Это можно использовать для восстановления резервной копии, созданной из кластера, работающего (например) под управлением NDB 7.6, в кластер, работающий под управлением NDB Cluster 7.5. -
--slice-id=#Формат командной строки --slice-id=#Введено 5.7.29-ndb-7.6.13 Тип Integer Значение по умолчанию 0Минимальное значение 0Максимальное значение 1023При восстановлении по фрагментам, это ID фрагмента для восстановления. Эта опция всегда используется вместе с
--num-slices, и её значение должно быть всегда меньше, чем значение--num-slices.Для получения дополнительной информации см. описание
--num-slicesв другом месте этого раздела. -
--tab=dir_name,-Tdir_nameФормат командной строки --tab=pathТип Directory name Заставляет
--print-dataсоздавать файлы дампа, по одному на таблицу, каждый с именем. В качестве аргумента требуется путь к каталогу, куда следует сохранить файлы; используйтеtbl_name.txt.для текущего каталога. -
--timestamp-printoutsФормат командной строки --timestamp-printouts{=true|false}Введено 5.7.41-ndb-7.5.30, 5.7.41-ndb-7.6.26 Тип Boolean Значение по умолчанию falseЗаставляет сообщения журнала информации, ошибок и отладки начинаться с меток времени.
Эта опция отключена по умолчанию в NDB 7.5 и NDB 7.6. Установите её явно в
true, чтобы включить. -
--usageФормат командной строки --usageОтобразить справку и завершить работу; то же самое, что и
--help. -
--verbose=#Формат командной строки --verbose=#Тип Numeric Значение по умолчанию 1Минимальное значение 0Максимальное значение 255Устанавливает уровень подробности вывода. Минимальное значение — 0; максимальное — 255. Значение по умолчанию — 1.
-
--versionФормат командной строки --versionОтобразить информацию о версии и завершить работу.
Типичные параметры для этой утилиты показаны здесь:
ndb_restore [-c connection_string] -n node_id -b backup_id \
[-m] -r --backup-path=/path/to/backup/files
Обычно, при восстановлении из резервной копии кластера NDB, ndb_restore требует как минимум опции --nodeid (короткая форма: -n), --backupid (короткая форма: -b) и --backup-path. Кроме того, при использовании ndb_restore для восстановления таблиц с уникальными индексами, необходимо включить опцию --disable-indexes или --rebuild-indexes. (Ошибка #57782, Ошибка #11764893)
Опция -c используется для указания строки подключения, которая сообщает ndb_restore, где находится сервер управления кластером (см. Раздел 21.4.3.3, «Строки подключения к кластеру NDB»). Если эта опция не используется, ndb_restore пытается подключиться к серверу управления на localhost:1186. Эта утилита действует как узел API кластера, поэтому требует свободного подключения “слота” для подключения к серверу управления кластером. Это означает, что в файле config.ini должен быть хотя бы один раздел [api] или [mysqld]. По этой причине рекомендуется оставлять по крайней мере один пустой раздел [api] или [mysqld] в файле config.ini, который не используется сервером MySQL или другим приложением (см. Раздел 21.4.3.7, «Определение узлов SQL и других узлов API в кластере NDB»).
Вы можете проверить, подключен ли ndb_restore к кластеру, используя команду SHOW в клиенте управления ndb_mgm. Это также можно сделать из системной оболочки, как показано ниже:
$> ndb_mgm -e "SHOW"
Отчёт об ошибках. ndb_restore сообщает об ошибках временного и постоянного характера. В случае временных ошибок, он может восстановиться от них, и в таких случаях сообщает Restore successful,
but encountered temporary error, please look at
configuration.
После использования ndb_restore для инициализации кластера NDB для использования в циклической репликации, бинарные логи на узле SQL, действующем как репликация, не создаются автоматически, и их необходимо создать вручную. Для создания бинарных логов выполните оператор SHOW TABLES на этом узле SQL перед запуском START
SLAVE. Это известная проблема в NDB Cluster.
© 2025 Oracle
Licensed under the GPLv2 License.