Spec-Zone.ru › MySQL 5.7

4.5.4 mysqldump — Программа резервного копирования базы данных

Утилита клиента mysqldump выполняет , генерируя набор SQL-команд, которые могут быть выполнены для воспроизведения исходных определений объектов базы данных и данных таблиц. Она создаёт дамп одной или нескольких баз данных MySQL для резервного копирования или передачи на другой сервер SQL. Команда mysqldump также может генерировать вывод в формате CSV, других разделительных текстовых форматах или XML.

  • Учёт производительности и масштабируемости

  • Синтаксис вызова

  • Синтаксис параметров — алфавитный сводный список

  • Параметры подключения

  • Параметры файлов параметров

  • Параметры DDL

  • Параметры отладки

  • Параметры справки

  • Параметры интернационализации

  • Параметры репликации

  • Параметры формата

  • Параметры фильтрации

  • Параметры производительности

  • Параметры транзакций

  • Группы параметров

  • Примеры

  • Ограничения

mysqldump требует как минимум привилегия SELECT для дублируемых таблиц, SHOW VIEW для дублируемых представлений, TRIGGER для дублируемых триггеров, LOCK TABLES, если не используется параметр --single-transaction, и (начиная с MySQL 5.7.31) PROCESS, если не используется параметр --no-tablespaces. Некоторые параметры могут потребовать дополнительных привилегий, как указано в описаниях параметров.

Для загрузки файла дампа необходимо обладать привилегиями, необходимыми для выполнения содержащихся в нём команд, например, соответствующими привилегиями CREATE для объектов, созданных этими командами.

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

Примечание

Дамп, созданный с помощью PowerShell на Windows с перенаправлением вывода, создаёт файл с кодировкой UTF-16:

mysqldump [options] > dump.sql

Однако UTF-16 не допускается в качестве кодировки символов соединения (см. Недопустимые наборы символов клиента), поэтому файл дампа не может быть правильно загружен. Для решения этой проблемы используйте параметр --result-file, который создаёт вывод в формате ASCII:

mysqldump [options] --result-file=dump.sql

Не рекомендуется загружать файл дампа, когда на сервере включены GTID (gtid_mode=ON), если ваш файл дампа содержит системные таблицы. mysqldump выдает DML-инструкции для системных таблиц, использующих нетранзакционный движок MyISAM, и это сочетание запрещено при включенных GTID.

Учёт производительности и масштабируемости

mysqldump преимущества включают удобство и гибкость просмотра или даже редактирования вывода перед восстановлением. Вы можете клонировать базы данных для разработки и работы DBA или создавать небольшие вариации существующей базы данных для тестирования. Это не предназначено как быстрое или масштабируемое решение для резервного копирования значительных объёмов данных. При больших размерах данных, даже если резервное копирование занимает разумное время, восстановление данных может быть очень медленным, так как повторное выполнение SQL-команд подразумевает ввод-вывод на диск для вставки, создания индексов и т. д.

Для резервного копирования и восстановления в больших масштабах более подходящим является резервное копирование данных, чтобы скопировать файлы данных в их исходном формате, который может быть быстро восстановлен:

  • Если ваши таблицы в основном InnoDB таблицы, или если у вас есть смесь InnoDB и MyISAM таблиц, рассмотрите возможность использования команды mysqlbackup продукта MySQL Enterprise Backup. (Доступен в рамках подписки Enterprise.) Он обеспечивает наилучшую производительность для InnoDB резервных копий с минимальными нарушениями; он также может резервировать таблицы из MyISAM и других движков хранения; и он предоставляет ряд удобных параметров для адаптации к различным сценариям резервного копирования. См. Раздел 28.1, «Обзор MySQL Enterprise Backup».

mysqldump может извлекать и сохранять содержимое таблицы строка за строкой или извлечь всё содержимое таблицы и буферизировать его в памяти перед сохранением. Буферизация в памяти может быть проблемой при сохранении больших таблиц. Для сохранения таблиц строка за строкой используйте параметр --quick (или --opt, который включает --quick). Параметр --opt (и, следовательно, --quick) включён по умолчанию, поэтому для включения буферизации памяти используйте --skip-quick.

Если вы используете недавнюю версию mysqldump для создания дампа, который будет загружен на очень старый сервер MySQL, используйте параметр --skip-opt вместо параметра --opt или --extended-insert.

Для дополнительной информации о mysqldump см. Раздел 7.4, «Использование mysqldump для резервного копирования».

Синтаксис вызова

В целом, есть три способа использования mysqldump — для создания дампа набора одной или нескольких таблиц, набора одной или нескольких полных баз данных или всего сервера MySQL, как показано здесь:

mysqldump [options] db_name [tbl_name ...]
mysqldump [options] --databases db_name ...
mysqldump [options] --all-databases

Для сохранения целых баз данных не указывайте никаких таблиц после db_name или используйте параметр --databases или --all-databases.

Чтобы увидеть список параметров, поддерживаемых вашей версией mysqldump, выполните команду mysqldump --help.

Синтаксис параметров — алфавитный сводный список

mysqldump поддерживает следующие параметры, которые можно указать в командной строке или в группах параметров [mysqldump] и [client] файла параметров. Сведения о файлах параметров, используемых программами MySQL, см. в Разделе 4.2.2.2, «Использование файлов параметров».

Таблица 4.16 Параметры mysqldump

Таблица 4.16 Параметры mysqldump
Имя параметра Описание Введено Устарело
--add-drop-database Добавить оператор DROP DATABASE перед каждым оператором CREATE DATABASE
--add-drop-table Добавить оператор DROP TABLE перед каждым оператором CREATE TABLE
--add-drop-trigger Добавить оператор DROP TRIGGER перед каждым оператором CREATE TRIGGER
--add-locks Окружить каждый дамп таблицы операторами LOCK TABLES и UNLOCK TABLES
--all-databases Сделать дамп всех таблиц во всех базах данных
--allow-keywords Разрешить создание имён столбцов, являющихся ключевыми словами
--apply-slave-statements Включить STOP SLAVE перед оператором CHANGE MASTER и START SLAVE в конце вывода
--bind-address Использовать указанный сетевой интерфейс для подключения к MySQL Server
--character-sets-dir Директория, где установлены наборы символов
--comments Добавить комментарии в дамп-файл
--compact Создать более компактный вывод
--compatible Создать вывод, более совместимый с другими системами баз данных или более старыми серверами MySQL
--complete-insert Использовать полные операторы INSERT, включающие имена столбцов
--compress Сжимать всю информацию, передаваемую между клиентом и сервером
--create-options Включать все MySQL-специфичные параметры таблицы в операторы CREATE TABLE
--databases Рассматривать все аргументы как имена баз данных
--debug Записать отладочный журнал
--debug-check Вывести отладочную информацию при выходе программы
--debug-info Вывести отладочную информацию, статистику по памяти и ЦП при выходе программы
--default-auth Плагин аутентификации для использования
--default-character-set Указать набор символов по умолчанию
--defaults-extra-file Прочитать файл параметров с именем дополнительно к обычным файлам параметров
--defaults-file Прочитать только указанный файл параметров
--defaults-group-suffix Значение суффикса группы параметров
--delete-master-logs На сервере репликации удалите двоичные логи после выполнения операции дампинга
--disable-keys Для каждой таблицы окружать операторы INSERT операторами для отключения и включения ключей
--dump-date Включить дату дампинга как комментарий "Dump completed on", если задан --comments
--dump-slave Включить оператор CHANGE MASTER, который перечисляет координаты двоичного лога источника репликации
--enable-cleartext-plugin Включить плагин аутентификации в открытом тексте 5.7.10
--events Сделать дамп событий из экспортированных баз данных
--extended-insert Использовать синтаксис INSERT для нескольких строк
--fields-enclosed-by Этот параметр используется с параметром --tab и имеет то же значение, что и соответствующая фраза для LOAD DATA
--fields-escaped-by Этот параметр используется с параметром --tab и имеет то же значение, что и соответствующая фраза для LOAD DATA
--fields-optionally-enclosed-by Этот параметр используется с параметром --tab и имеет то же значение, что и соответствующая фраза для LOAD DATA
--fields-terminated-by Этот параметр используется с параметром --tab и имеет то же значение, что и соответствующая фраза для LOAD DATA
--flush-logs Очистить файлы журналов MySQL-сервера перед началом дампинга
--flush-privileges Вывести оператор FLUSH PRIVILEGES после дампинга базы данных mysql
--force Продолжить, даже если при дампе таблицы произошла ошибка SQL
--get-server-public-key Запросить открытый ключ RSA у сервера 5.7.23
--help Показать сообщение справки и выйти
--hex-blob Дамп бинарных столбцов в шестнадцатеричном формате
--host Хост, на котором расположен MySQL сервер
--ignore-error Игнорировать указанные ошибки
--ignore-table Не выполнять дамп заданной таблицы
--include-master-host-port Включить опции MASTER_HOST/MASTER_PORT в оператор CHANGE MASTER, созданный с помощью --dump-slave
--insert-ignore Записать INSERT IGNORE вместо операторов INSERT
--lines-terminated-by Этот параметр используется с параметром --tab и имеет то же значение, что и соответствующая фраза для LOAD DATA
--lock-all-tables Заблокировать все таблицы во всех базах данных
--lock-tables Заблокировать все таблицы перед их дампом
--log-error Добавлять предупреждения и ошибки в указанный файл
--login-path Прочитать опции пути входа из .mylogin.cnf
--master-data Записать имя и позицию файла двоичного журнала в вывод
--max-allowed-packet Максимальная длина пакета для отправки или получения от сервера
--net-buffer-length Размер буфера для TCP/IP и сокетного обмена
--no-autocommit Окружить операторы INSERT для каждой экспортированной таблицы операторами SET autocommit = 0 и COMMIT
--no-create-db Не писать операторы CREATE DATABASE
--no-create-info Не писать операторы CREATE TABLE, которые повторно создают каждую экспортированную таблицу
--no-data Не выполнять дамп содержимого таблиц
--no-defaults Не читать файлы параметров
--no-set-names То же, что и --skip-set-charset
--no-tablespaces Не записывать в вывод команды CREATE LOGFILE GROUP и CREATE TABLESPACE
--opt Сокращение для --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset
--order-by-primary Выгружать строки каждой таблицы, отсортированные по первичному ключу или по первому уникальному индексу
--password Пароль для подключения к серверу
--pipe Подключение к серверу с использованием именованной трубы (только Windows)
--plugin-dir Директория, где установлены плагины
--port Номер порта TCP/IP для подключения
--print-defaults Вывести значения по умолчанию
--protocol Используемый транспортный протокол
--quick Получать строки для таблицы с сервера по одной строке за раз
--quote-names Приводить идентификаторы в обратных кавычках
--replace Записывать инструкции REPLACE вместо INSERT
--result-file Направить вывод в указанный файл
--routines Выгрузить хранимые процедуры и функции из выгружаемых баз данных
--secure-auth Не отправлять пароли на сервер в старом формате (до 4.1) Да
--server-public-key-path Путь к файлу с открытым ключом RSA 5.7.23
--set-charset Добавить SET NAMES default_character_set в вывод
--set-gtid-purged Добавить SET @@GLOBAL.GTID_PURGED в вывод
--shared-memory-base-name Имя разделяемой памяти для подключений с разделяемой памятью (только Windows)
--single-transaction Выполнить оператор BEGIN SQL перед выгрузкой данных с сервера
--skip-add-drop-table Не добавлять оператор DROP TABLE перед каждой операцией CREATE TABLE
--skip-add-locks Не добавлять блокировки
--skip-comments Не добавлять комментарии в файл выгрузки
--skip-compact Не производить более компактный вывод
--skip-disable-keys Не отключать ключи
--skip-extended-insert Отключить расширенные вставки
--skip-mysql-schema Не удалять схему mysql 5.7.36
--skip-opt Отключить параметры, установленные с помощью --opt
--skip-quick Не получать строки для таблицы с сервера по одной строке за раз
--skip-quote-names Не приводить идентификаторы к кавычкам
--skip-set-charset Не писать инструкцию SET NAMES
--skip-triggers Не выгружать триггеры
--skip-tz-utc Отключить tz-utc
--socket Файл сокета Unix или именованная труба Windows для использования
--ssl Включить шифрование соединения
--ssl-ca Файл, содержащий список доверенных сертификатов ЦС
--ssl-capath Директория, содержащая файлы сертификатов доверенных ЦС
--ssl-cert Файл, содержащий X.509 сертификат
--ssl-cipher Допустимые шифры для шифрования соединения
--ssl-crl Файл, содержащий списки отзыва сертификатов
--ssl-crlpath Директория, содержащая файлы списков отзыва сертификатов
--ssl-key Файл, содержащий X.509 ключ
--ssl-mode Требуемое состояние безопасности подключения к серверу 5.7.11
--ssl-verify-server-cert Проверять имя хоста по имени сертифицированного сервера
--tab Создавать файлы данных с разделителем табуляция
--tables Переопределить --databases или -B опцию
--tls-version Допустимые TLS протоколы для шифрованных подключений 5.7.10
--triggers Выгрузить триггеры для каждой выгружаемой таблицы
--tz-utc Добавить SET TIME_ZONE='+00:00' в файл выгрузки
--user Имя пользователя MySQL для подключения к серверу
--verbose Подробный режим
--version Отобразить информацию о версии и выйти
--where Выгрузить только строки, удовлетворяющие заданному условию WHERE
--xml Создать вывод в формате XML

Параметры подключения

Команда mysqldump подключается к серверу MySQL для извлечения информации. Следующие параметры определяют способ подключения к серверу MySQL, как на локальном, так и на удалённом компьютере.

  • --bind-address=ip_address

    Формат командной строки --bind-address=ip_address

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

  • --compress, -C

    Формат командной строки --compress[={OFF|ON}]
    Тип Булево
    Значение по умолчанию OFF

    Сжать всю информацию, передаваемую между клиентом и сервером, если это возможно. См. Раздел 4.2.6, «Управление сжатием соединения».

  • --default-auth=plugin

    Формат командной строки --default-auth=plugin
    Тип Строка

    Подсказка о том, какой плагин проверки подлинности клиента использовать. См. Раздел 6.2.13, «Подключаемая проверка подлинности».

  • --enable-cleartext-plugin

    Формат командной строки --enable-cleartext-plugin
    Введено 5.7.10
    Тип Булево
    Значение по умолчанию FALSE

    Включить плагин проверки подлинности mysql_clear_password в открытом тексте. (См. Раздел 6.4.1.6, «Проверка подлинности клиента в открытом тексте».)

    Этот параметр был добавлен в MySQL 5.7.10.

  • --get-server-public-key

    Формат командной строки --get-server-public-key
    Введено 5.7.23
    Тип Булево

    Запросить у сервера открытый ключ, необходимый для обмена паролями на основе пары ключей RSA. Этот параметр применяется к клиентам, которые выполняют проверку подлинности с помощью плагина проверки подлинности caching_sha2_password. Для этого плагина сервер не отправляет открытый ключ, если он не запрошен. Этот параметр игнорируется для учетных записей, которые не выполняют проверку подлинности с помощью этого плагина. Он также игнорируется, если обмен паролями на основе RSA не используется, как в случае, когда клиент подключается к серверу с использованием защищенного соединения.

    Если задан --server-public-key-path=file_name и указывает на допустимый файл открытого ключа, он имеет приоритет над --get-server-public-key.

    Сведения о плагине caching_sha2_password см. в Разделе 6.4.1.4, «Подключаемая проверка подлинности кэширования SHA-2».

    Параметр --get-server-public-key был добавлен в MySQL 5.7.23.

  • --host=host_name, -h host_name

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

    Выгрузить данные с сервера MySQL на указанном хосте. Хост по умолчанию — localhost.

  • --login-path=name

    Формат командной строки --login-path=name
    Тип Строка

    Считывать параметры из указанного пути входа в файле пути входа в систему .mylogin.cnf. «Путь входа» — это группа параметров, определяющая, к какому серверу MySQL подключиться и под какой учетной записью выполнить проверку подлинности. Чтобы создать или изменить файл пути входа, используйте утилиту mysql_config_editor. См. Раздел 4.6.6, «mysql_config_editor — утилита настройки MySQL».

    Дополнительную информацию об этом и других параметрах файла параметров см. в Разделе 4.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».

  • --password[=password], -p[password]

    Формат командной строки --password[=password]
    Тип Строка

    Пароль учетной записи MySQL, используемой для подключения к серверу. Значение пароля необязательно. Если оно не задано, mysqldump запросит его. Если задано, между --password= или -p и последующим паролем не должно быть пробелов. Если параметр пароля не указан, по умолчанию пароль не передается.

    Указание пароля в командной строке следует считать небезопасным. Чтобы избежать ввода пароля в командной строке, используйте файл параметров. См. Раздел 6.1.2.1, «Руководство по безопасности паролей для конечных пользователей».

    Чтобы явно указать, что пароль отсутствует и что mysqldump не должен запрашивать его, используйте параметр --skip-password.

  • --pipe, -W

    Формат командной строки --pipe
    Тип Строка

    В Windows подключиться к серверу с помощью именованного канала. Этот параметр применяется только в том случае, если сервер был запущен с включенной системной переменной named_pipe для поддержки подключений с именованными каналами. Кроме того, пользователь, выполняющий подключение, должен входить в группу Windows, указанную в системной переменной named_pipe_full_access_group.

  • --plugin-dir=dir_name

    Формат командной строки --plugin-dir=dir_name
    Тип Имя каталога

    Каталог, в котором следует искать плагины. Укажите этот параметр, если параметр --default-auth используется для указания плагина проверки подлинности, но mysqldump его не находит. См. Раздел 6.2.13, «Подключаемая проверка подлинности».

  • --port=port_num, -P port_num

    Формат командной строки --port=port_num
    Тип Числовое
    Значение по умолчанию 3306

    Номер порта для подключений TCP/IP.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    Формат командной строки --protocol=type
    Тип Строка
    Значение по умолчанию [see text]
    Допустимые значения

    TCP

    SOCKET

    PIPE

    MEMORY

    Протокол передачи для подключения к серверу. Полезно, когда другие параметры подключения обычно приводят к использованию протокола, отличного от желаемого. Подробности о допустимых значениях см. в Разделе 4.2.5, «Протоколы передачи соединений».

  • --secure-auth

    Формат командной строки --secure-auth
    Устарело Да

    Не отправляйте пароли на сервер в старом формате (до 4.1). Это предотвращает подключение, за исключением серверов, использующих новый формат пароля.

    Начиная с MySQL 5.7.5, этот параметр устарел; ожидается его удаление в будущих выпусках MySQL. Он всегда включен, и попытка его отключения (--skip-secure-auth, --secure-auth=0) приводит к ошибке. До MySQL 5.7.5 этот параметр включён по умолчанию, но может быть отключён.

    Примечание

    Пароли, использующие метод хэширования до 4.1, менее безопасны, чем пароли, использующие родной метод хэширования паролей, и следует избегать их использования. Пароли до 4.1 устарели, а поддержка их была удалена в MySQL 5.7.5. Инструкции по обновлению учетной записи см. в Разделе 6.4.1.3, «Переход от хэширования паролей до 4.1 и плагина mysql_old_password».

  • --server-public-key-path=file_name

    Формат командной строки --server-public-key-path=file_name
    Введено 5.7.23
    Тип Имя файла

    Путь к файлу в формате PEM, содержащему копию открытого ключа со стороны клиента, необходимую серверу для обмена паролями на основе пары ключей RSA. Этот параметр применяется к клиентам, которые аутентифицируются с помощью плагина аутентификации sha256_password или caching_sha2_password. Этот параметр игнорируется для учетных записей, которые не аутентифицируются с помощью одного из этих плагинов. Он также игнорируется, если обмен паролями на основе RSA не используется, как в случае, когда клиент подключается к серверу с помощью защищённого соединения.

    Если --server-public-key-path=file_name указан и указывает на действительный файл открытого ключа, он имеет приоритет над --get-server-public-key.

    Для sha256_password этот параметр применяется только в том случае, если MySQL был скомпилирован с использованием OpenSSL.

    Сведения о плагинах sha256_password и caching_sha2_password см. в Разделе 6.4.1.5, «Плагиновая аутентификация SHA-256» и Разделе 6.4.1.4, «Плагиновая аутентификация кэширования SHA-2».

    Параметр --server-public-key-path был добавлен в MySQL 5.7.23.

  • --skip-mysql-schema

    Формат командной строки --skip-mysql-schema
    Введено 5.7.36
    Тип Булево

    Не удалять схему mysql при восстановлении файла дампов. По умолчанию схема удаляется.

    Этот параметр был добавлен в MySQL 5.7.36.

  • --socket=path, -S path

    Формат командной строки --socket={file_name|pipe_name}
    Тип Строка

    Для подключений к localhost, используемый файл Unix-сокет или, в Windows, имя именованной трубы.

    В Windows этот параметр применяется только в том случае, если сервер был запущен с системной переменной named_pipe, поддерживающей подключение через именованные трубы. Кроме того, пользователь, производящий подключение, должен быть членом группы Windows, указанной в системной переменной named_pipe_full_access_group.

  • --ssl*

    Параметры, начинающиеся с --ssl, определяют, подключаться ли к серверу с использованием шифрования, и указывают, где найти ключи и сертификаты SSL. См. Параметры команд для шифрованных подключений.

  • --tls-version=protocol_list

    Формат командной строки --tls-version=protocol_list
    Введено 5.7.10
    Значение по умолчанию (≥ 5.7.28) TLSv1,TLSv1.1,TLSv1.2
    Значение по умолчанию (≤ 5.7.27)

    TLSv1,TLSv1.1,TLSv1.2 (OpenSSL)

    TLSv1,TLSv1.1 (yaSSL)

    Разрешенные протоколы TLS для шифрованных подключений. Значение — список одного или нескольких имён протоколов, разделённых запятыми. Протоколы, которые можно указать для этого параметра, зависят от используемой библиотеки SSL для компиляции MySQL. Подробности см. в Разделе 6.3.2, «Протоколы и шифры TLS шифрованных соединений».

    Этот параметр был добавлен в MySQL 5.7.10.

  • --user=user_name, -u user_name

    Формат командной строки --user=user_name
    Тип Строка

    Имя пользователя учетной записи MySQL для подключения к серверу.

Параметры файлов опций

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

  • --defaults-extra-file=file_name

    Командная строка --defaults-extra-file=file_name
    Тип Имя файла

    Читает этот файл опций после глобального файла опций, но (в Unix) перед файлом опций пользователя. Если файл не существует или недоступен, произойдёт ошибка. Если file_name не является абсолютным именем пути, оно интерпретируется относительно текущей директории.

    Дополнительную информацию об этом и других опциях файлов опций см. в разделе 4.2.2.3, «Командные строки, влияющие на обработку файлов опций».

  • --defaults-file=file_name

    Командная строка --defaults-file=file_name
    Тип Имя файла

    Использует только указанный файл опций. Если файл не существует или недоступен, произойдёт ошибка. Если file_name не является абсолютным именем пути, оно интерпретируется относительно текущей директории.

    Исключение: даже с --defaults-file, клиентские программы читают .mylogin.cnf.

    Дополнительную информацию об этом и других опциях файлов опций см. в разделе 4.2.2.3, «Командные строки, влияющие на обработку файлов опций».

  • --defaults-group-suffix=str

    Командная строка --defaults-group-suffix=str
    Тип Строка

    Читает не только обычные группы опций, но и группы с обычными именами и суффиксом str. Например, mysqldump обычно читает группы [client] и [mysqldump]. Если эта опция задана как --defaults-group-suffix=_other, mysqldump также читает группы [client_other] и [mysqldump_other].

    Дополнительную информацию об этом и других опциях файлов опций см. в разделе 4.2.2.3, «Командные строки, влияющие на обработку файлов опций».

  • --no-defaults

    Командная строка --no-defaults

    Не читать файлы опций. Если запуск программы терпит неудачу из-за чтения неизвестных опций из файла опций, --no-defaults может использоваться для предотвращения их чтения.

    Исключением является файл .mylogin.cnf, который читается во всех случаях, если он существует. Это позволяет задавать пароли более безопасным способом, чем в командной строке, даже когда используется --no-defaults. Для создания .mylogin.cnf используйте утилиту mysql_config_editor. См. раздел 4.6.6, «mysql_config_editor — Утилита конфигурации MySQL».

    Дополнительную информацию об этом и других опциях файлов опций см. в разделе 4.2.2.3, «Командные строки, влияющие на обработку файлов опций».

  • --print-defaults

    Командная строка --print-defaults

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

    Дополнительную информацию об этом и других опциях файлов опций см. в разделе 4.2.2.3, «Командные строки, влияющие на обработку файлов опций».

DDL-опции

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

  • --add-drop-database

    Формат командной строки --add-drop-database

    Напишите оператор DROP DATABASE перед каждым оператором CREATE DATABASE. Этот параметр обычно используется совместно с параметром --all-databases или --databases, поскольку операторы CREATE DATABASE не записываются, если не указан один из этих параметров.

  • --add-drop-table

    Формат командной строки --add-drop-table

    Напишите оператор DROP TABLE перед каждым оператором CREATE TABLE.

  • --add-drop-trigger

    Формат командной строки --add-drop-trigger

    Напишите оператор DROP TRIGGER перед каждым оператором CREATE TRIGGER.

  • --all-tablespaces, -Y

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

    Добавляет в дамп таблицы все SQL-операторы, необходимые для создания всех табличных пространств, используемых таблицей NDB. Эта информация не включается в вывод из mysqldump. Этот параметр в настоящее время актуален только для таблиц NDB Cluster, которые не поддерживаются в MySQL 5.7.

  • --no-create-db, -n

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

    Подавляет операторы CREATE DATABASE, которые в противном случае включаются в вывод, если указан параметр --databases или --all-databases.

  • --no-create-info, -t

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

    Не записывать операторы CREATE TABLE, создающие каждую скопированную таблицу.

    Примечание

    Этот параметр не исключает операторы создания групп файлов журнала или табличных пространств из вывода mysqldump; однако, вы можете использовать параметр --no-tablespaces для этой цели.

  • --no-tablespaces, -y

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

    Этот параметр подавляет все операторы CREATE LOGFILE GROUP и CREATE TABLESPACE в выводе mysqldump.

  • --replace

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

    Записывать операторы REPLACE вместо операторов INSERT.

Параметры отладки

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

  • --allow-keywords

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

    Разрешает создание имён столбцов, являющихся ключевыми словами. Это достигается путём добавления префикса имени таблицы к каждому имени столбца.

  • --comments, -i

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

    Записывает дополнительную информацию в файл выгрузки, такую как версия программы, версия сервера и хост. Этот параметр включён по умолчанию. Чтобы отключить эту дополнительную информацию, используйте --skip-comments.

  • --debug[=debug_options], -# [debug_options]

    Формат командной строки --debug[=debug_options]
    Тип Строка
    Значение по умолчанию d:t:o,/tmp/mysqldump.trace

    Записывает отладочный журнал. Типичная строка debug_options имеет вид d:t:o,file_name. Значение по умолчанию - d:t:o,/tmp/mysqldump.trace.

    Этот параметр доступен только если MySQL был скомпилирован с использованием WITH_DEBUG. Бинарные релизы MySQL, предоставленные Oracle, не скомпилированы с использованием этого параметра.

  • --debug-check

    Формат командной строки --debug-check
    Тип Булево
    Значение по умолчанию FALSE

    Выводит отладочную информацию при завершении программы.

    Этот параметр доступен только если MySQL был скомпилирован с использованием WITH_DEBUG. Бинарные релизы MySQL, предоставленные Oracle, не скомпилированы с использованием этого параметра.

  • --debug-info

    Формат командной строки --debug-info
    Тип Булево
    Значение по умолчанию FALSE

    Выводит отладочную информацию, а также статистику использования памяти и ЦП при завершении программы.

    Этот параметр доступен только если MySQL был скомпилирован с использованием WITH_DEBUG. Бинарные релизы MySQL, предоставленные Oracle, не скомпилированы с использованием этого параметра.

  • --dump-date

    Формат командной строки --dump-date
    Тип Булево
    Значение по умолчанию TRUE

    Если указан параметр --comments, mysqldump добавляет комментарий в конце выгрузки следующего вида:

    -- Dump completed on DATE
    

    Однако, дата приводит к тому, что файлы выгрузки, созданные в разное время, выглядят по-разному, даже если данные в них идентичны. --dump-date и --skip-dump-date управляют добавлением даты в комментарий. По умолчанию --dump-date (дата включается в комментарий). --skip-dump-date отключает вывод даты.

  • --force, -f

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

    Игнорирует все ошибки; продолжает выполнение даже в случае возникновения SQL-ошибки во время выгрузки таблицы.

    Одно из применений этого параметра — продолжить выполнение mysqldump даже при встрече представления, ставшее недействительным, потому что его определение ссылается на таблицу, которая была удалена. Без --force, mysqldump завершается с сообщением об ошибке. С --force, mysqldump выводит сообщение об ошибке, но также записывает SQL-комментарий, содержащий определение представления, в вывод выгрузки и продолжает выполнение.

    Если параметр --ignore-error также указан для игнорирования определённых ошибок, --force имеет приоритет.

  • --log-error=file_name

    Формат командной строки --log-error=file_name
    Тип Имя файла

    Ведёт журнал предупреждений и ошибок, добавляя их в указанный файл. По умолчанию ведение журнала отключено.

  • --skip-comments

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

    См. описание параметра --comments.

  • --verbose, -v

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

    Режим подробного вывода. Выводит больше информации о действиях программы.

Параметры справки

Следующие параметры выводят информацию о команде mysqldump.

  • --help, -?

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

    Выводит сообщение справки и завершает работу.

  • --version, -V

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

    Выводит информацию о версии и завершает работу.

Параметры локализации

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

  • Настройка каталога символьных наборов

    Формат командной строки --character-sets-dir=dir_name
    Тип Имя каталога

    Каталог, в котором установлены наборы символов. См. Раздел 10.15, «Настройка наборов символов».

  • Настройка набора символов по умолчанию

    Формат командной строки --default-character-set=charset_name
    Тип Строка
    Значение по умолчанию utf8

    Используйте charset_name в качестве набора символов по умолчанию. См. Раздел 10.15, «Настройка наборов символов». Если набор символов не указан, mysqldump использует utf8.

  • Отключение автоматической установки набора символов, -N

    Формат командной строки --no-set-names
    Устарело Да

    Отключает настройку --set-charset, что эквивалентно указанию --skip-set-charset.

  • Установка набора символов

    Формат командной строки --set-charset
    Отключено skip-set-charset

    Записывает SET NAMES default_character_set в выходные данные. Этот параметр включен по умолчанию. Чтобы подавить SET NAMES, используйте --skip-set-charset.

Параметры репликации

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

  • --apply-slave-statements

    Формат командной строки --apply-slave-statements
    Тип Булево
    Значение по умолчанию FALSE

    Для резервной копии реплики, созданной с помощью опции --dump-slave, добавьте оператор STOP SLAVE перед оператором CHANGE MASTER TO и оператор START SLAVE в конце вывода.

  • --delete-master-logs

    Формат командной строки --delete-master-logs

    На сервере исходной репликации удалите бинарные журналы, отправив оператор PURGE BINARY LOGS на сервер после выполнения операции дампинга. Эта опция требует привилегии RELOAD, а также достаточных привилегий для выполнения этого оператора. Эта опция автоматически включает --master-data.

  • --dump-slave[=value]

    Формат командной строки --dump-slave[=value]
    Тип Числовой
    Значение по умолчанию 1
    Допустимые значения

    1

    2

    Эта опция аналогична --master-data, за исключением того, что она используется для дампинга сервера репликации, чтобы создать файл дампа, который можно использовать для настройки другого сервера как реплики, имеющей тот же источник, что и дампированный сервер. Она вызывает вывод дампа, включающий оператор CHANGE MASTER TO, который указывает координаты бинарного журнала (имя файла и позицию) источника дампированной реплики. Оператор CHANGE MASTER TO считывает значения Relay_Master_Log_File и Exec_Master_Log_Pos из вывода SHOW SLAVE STATUS и использует их для MASTER_LOG_FILE и MASTER_LOG_POS соответственно. Это координаты сервера-источника, с которого реплика должна начать репликацию.

    Примечание

    Несоответствия в последовательности транзакций из релейного журнала, которые были выполнены, могут привести к тому, что будет использована неправильная позиция. Дополнительную информацию см. в разделе Раздел 16.4.1.32, «Репликация и несоответствия транзакций».

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

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

    Эту опцию не следует использовать, если сервер, на котором будет применяться дамп, использует gtid_mode=ON и MASTER_AUTOPOSITION=1.

    Значение опции обрабатывается так же, как и для --master-data (неуказанное значение или 1 вызывает запись оператора CHANGE MASTER TO в дамп, значение 2 вызывает запись оператора, но в SQL-комментариях) и имеет тот же эффект, что и --master-data, в отношении включения или выключения других опций и обработки блокировки.

    Эта опция заставляет mysqldump остановить поток SQL реплики до дампинга и запустить его снова после.

    --dump-slave отправляет оператор SHOW SLAVE STATUS на сервер для получения информации, поэтому требуются привилегии, достаточные для выполнения этого оператора.

    В сочетании с --dump-slave также можно использовать опции --apply-slave-statements и --include-master-host-port.

  • --include-master-host-port

    Формат командной строки --include-master-host-port
    Тип Булево
    Значение по умолчанию FALSE

    Для оператора CHANGE MASTER TO в резервной копии реплики, созданной с помощью опции --dump-slave, добавьте опции MASTER_HOST и MASTER_PORT для имени хоста и номера TCP/IP-порта источника реплики.

  • --master-data[=value]

    Формат командной строки --master-data[=value]
    Тип Числовой
    Значение по умолчанию 1
    Допустимые значения

    1

    2

    Используйте эту опцию для дампинга сервера исходной репликации, чтобы создать файл дампа, который можно использовать для настройки другого сервера как реплики источника. Она вызывает вывод дампа, включающий оператор CHANGE MASTER TO, который указывает координаты бинарного журнала (имя файла и позицию) дампированного сервера. Это координаты сервера-источника, с которого реплика должна начать репликацию после загрузки файла дампа в реплику.

    Если значение опции равно 2, оператор CHANGE MASTER TO записывается как SQL-комментарий и, следовательно, только информативен; он не влияет при повторной загрузке файла дампа. Если значение опции равно 1, оператор записывается без комментария и вступает в силу при повторной загрузке файла дампа. Если значение опции не указано, используется значение по умолчанию 1.

    --master-data отправляет оператор SHOW MASTER STATUS на сервер для получения информации, поэтому требуются привилегии, достаточные для выполнения этого оператора. Эта опция также требует привилегии RELOAD, и бинарный журнал должен быть включен.

    Опция --master-data автоматически отключает --lock-tables. Она также включает --lock-all-tables, если не указана опция --single-transaction, в этом случае глобальная блокировка чтения приобретается только на короткое время в начале дампинга (см. описание --single-transaction). Во всех случаях любые действия с журналами происходят в точный момент дампинга.

    Также можно настроить реплику, выполнив дампинг существующей реплики источника, используя опцию --dump-slave, которая переопределяет --master-data и приводит к ее игнорированию, если обе опции используются.

  • --set-gtid-purged=value

    Формат командной строки --set-gtid-purged=value
    Тип Перечисление
    Значение по умолчанию AUTO
    Допустимые значения

    OFF

    ON

    AUTO

    Этот параметр позволяет управлять информацией о глобальном идентификаторе транзакции (GTID), записываемой в файл дампа, указав, следует ли добавить в вывод инструкцию SET @@GLOBAL.gtid_purged. Этот параметр может также привести к записи в вывод инструкции, отключающей двоичный протокол логгирования во время перезагрузки файла дампа.

    В следующей таблице показаны разрешенные значения параметров. Значение по умолчанию — AUTO.

    Значение Значение
    OFF Не добавлять инструкцию SET в вывод.
    ON Добавить инструкцию SET в вывод. Возникает ошибка, если GTID не включены на сервере.
    AUTO Добавить инструкцию SET в вывод, если GTID включены на сервере.

    Для частичного дампа с сервера, использующего репликацию на основе GTID, требуется указать параметр --set-gtid-purged={ON|OFF}. Используйте ON, если целью является развертывание нового реплицируемого сервера, используя только часть данных с сервера-источника. Используйте OFF, если целью является восстановление таблицы путём копирования её внутри топологии. Используйте OFF, если целью является копирование таблицы между реплицируемыми топологиями, которые изолированы и должны оставаться таковыми.

    Параметр --set-gtid-purged оказывает следующее влияние на двоичный логгирование при перезагрузке файла дампа:

    • --set-gtid-purged=OFF: SET @@SESSION.SQL_LOG_BIN=0; не добавляется в вывод.

    • --set-gtid-purged=ON: SET @@SESSION.SQL_LOG_BIN=0; добавляется в вывод.

    • --set-gtid-purged=AUTO: SET @@SESSION.SQL_LOG_BIN=0; добавляется в вывод, если GTID включены на сервере, который вы резервируете (то есть, если AUTO равно ON).

    Использование этого параметра вместе с параметром --single-transaction может привести к несоответствиям в выводе. Если требуется --set-gtid-purged=ON, его можно использовать с --lock-all-tables, но это может препятствовать параллельным запросам во время выполнения mysqldump.

    Не рекомендуется загружать файл дампа, когда GTID включены на сервере (gtid_mode=ON), если ваш файл дампа содержит системные таблицы. mysqldump выдает DML-инструкции для системных таблиц, использующих нетранзакционный движок MyISAM, и такое сочетание запрещено, когда включены GTID. Также имейте в виду, что загрузка файла дампа с сервера, на котором включены GTID, на другой сервер с включенными GTID приводит к генерации разных идентификаторов транзакций.

Параметры формата

Следующие параметры определяют, как представить весь файл дампа или определенные типы данных в файле дампа. Они также управляют тем, записывается ли определенная дополнительная информация в файл дампа.

  • --compact

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

    Создавать более компактный вывод. Эта опция включает опции --skip-add-drop-table, --skip-add-locks, --skip-comments, --skip-disable-keys и --skip-set-charset.

  • --compatible=name

    Формат командной строки --compatible=name[,name,...]
    Тип String
    Значение по умолчанию ''
    Допустимые значения

    ansi

    mysql323

    mysql40

    postgresql

    oracle

    mssql

    db2

    maxdb

    no_key_options

    no_table_options

    no_key_options

    Создавать вывод, более совместимый с другими системами баз данных или со старыми серверами MySQL. Значение name может быть ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_table_options или no_field_options. Для использования нескольких значений, разделите их запятыми. Эти значения имеют то же значение, что и соответствующие опции для установки режима SQL сервера. Смотрите Раздел 5.1.10, “Режимы SQL сервера”.

    Эта опция не гарантирует совместимость с другими серверами. Она включает только те значения режима SQL, которые в настоящее время доступны для обеспечения большей совместимости вывода дампа. Например, --compatible=oracle не сопоставляет типы данных с типами Oracle или не использует синтаксис комментариев Oracle.

  • --complete-insert, -c

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

    Использовать полные операторы INSERT, которые включают имена столбцов.

  • --create-options

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

    Включать все специфичные для MySQL опции таблиц в операторы CREATE TABLE.

  • --fields-terminated-by=..., --fields-enclosed-by=..., --fields-optionally-enclosed-by=..., --fields-escaped-by=...

    Формат командной строки --fields-terminated-by=string
    Тип String
    Формат командной строки --fields-enclosed-by=string
    Тип String
    Формат командной строки --fields-optionally-enclosed-by=string
    Тип String
    Формат командной строки --fields-escaped-by
    Тип String

    Эти опции используются с опцией --tab и имеют то же значение, что и соответствующие пункты FIELDS для LOAD DATA. Смотрите Раздел 13.2.6, “Оператор LOAD DATA”.

  • --hex-blob

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

    Выгружать бинарные столбцы, используя шестнадцатеричную нотацию (например, 'abc' становится 0x616263). Затронутые типы данных - BINARY, VARBINARY, BLOB типы, BIT, все пространственные типы данных и другие небинарные типы данных при использовании с набором символов binary.

    Опция --hex-blob игнорируется, когда используется --tab.

  • --lines-terminated-by=...

    Формат командной строки --lines-terminated-by=string
    Тип String

    Эта опция используется с опцией --tab и имеет то же значение, что и соответствующий пункт LINES для LOAD DATA. Смотрите Раздел 13.2.6, “Оператор LOAD DATA”.

  • --quote-names, -Q

    Формат командной строки --quote-names
    Отключено skip-quote-names

    Заключать идентификаторы (такие как имена баз данных, таблиц и столбцов) в символы `. Если включен режим SQL ANSI_QUOTES, идентификаторы заключаются в символы ". Эта опция включена по умолчанию. Она может быть отключена с помощью --skip-quote-names, но эта опция должна быть указана после любой опции, такой как --compatible, которая может включить --quote-names.

  • --result-file=file_name, -r file_name

    Формат командной строки --result-file=file_name
    Тип Имя файла

    Направлять вывод в указанный файл. Файл результатов создается, и его предыдущее содержимое перезаписывается, даже если при генерации дампа возникает ошибка.

    Эта опция должна использоваться в Windows, чтобы предотвратить преобразование символов перевода строки \n в последовательности возврата каретки/перевода строки \r\n.

  • --tab=dir_name, -T dir_name

    Формат командной строки --tab=dir_name
    Тип Имя каталога

    Создаёт файлы данных в формате, разделённом табуляцией. Для каждой выгруженной таблицы mysqldump создаёт файл, содержащий оператор CREATE TABLE для создания таблицы, а сервер создаёт файл, содержащий данные. Значение параметра – это каталог, в который будут записаны файлы.

    Примечание

    Этот параметр следует использовать только в том случае, если mysqldump выполняется на том же компьютере, что и сервер mysqld. Поскольку сервер создаёт файлы *.txt в указанном каталоге, каталог должен быть доступен для записи сервером, а у учётной записи MySQL, которую вы используете, должны быть разрешения на FILE. Поскольку mysqldump создаёт файлы *.sql в том же каталоге, он должен быть доступен для записи вашей учётной записью системы.

    По умолчанию файлы данных .txt форматируются с использованием табуляции между значениями столбцов и новой строки в конце каждой строки. Формат можно явно указать, используя параметры --fields-xxx и --lines-terminated-by.

    Значения столбцов преобразуются в кодировку символов, указанную параметром --default-character-set.

  • --tz-utc

    Формат командной строки --tz-utc
    Отключено skip-tz-utc

    Этот параметр позволяет выгружать и загружать столбцы TIMESTAMP между серверами в разных часовых поясах. mysqldump устанавливает часовой пояс соединения в UTC и добавляет SET TIME_ZONE='+00:00' в файл дампа. Без этого параметра столбцы TIMESTAMP выгружаются и загружаются в часовых поясах, локальных для исходного и целевого серверов, что может привести к изменению значений, если серверы находятся в разных часовых поясах. --tz-utc также защищает от изменений из-за перехода на летнее время. --tz-utc включено по умолчанию. Чтобы отключить его, используйте --skip-tz-utc.

  • --xml, -X

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

    Вывод дампов в формате XML.

    NULL, 'NULL' и Пустые Значения: Для столбца с именем column_name значение NULL, пустая строка и строковое значение 'NULL' различаются в выводе, генерируемом этим параметром следующим образом.

    Значение: Представление в XML:
    NULL (неизвестное значение)

    <field name="column_name" xsi:nil="true" />

    '' (пустая строка)

    <field name="column_name"></field>

    'NULL' (строковое значение)

    <field name="column_name">NULL</field>

    Вывод из клиента mysql при использовании параметра --xml также следует указанным правилам. (См. Раздел 4.5.1.1, «Параметры клиента mysql».)

    Вывод XML из mysqldump включает пространство имён XML, как показано здесь:

    $> mysqldump --xml -u root world City
    <?xml version="1.0"?>
    <mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <database name="world">
    <table_structure name="City">
    <field Field="ID" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" />
    <field Field="Name" Type="char(35)" Null="NO" Key="" Default="" Extra="" />
    <field Field="CountryCode" Type="char(3)" Null="NO" Key="" Default="" Extra="" />
    <field Field="District" Type="char(20)" Null="NO" Key="" Default="" Extra="" />
    <field Field="Population" Type="int(11)" Null="NO" Key="" Default="0" Extra="" />
    <key Table="City" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="ID"
    Collation="A" Cardinality="4079" Null="" Index_type="BTREE" Comment="" />
    <options Name="City" Engine="MyISAM" Version="10" Row_format="Fixed" Rows="4079"
    Avg_row_length="67" Data_length="273293" Max_data_length="18858823439613951"
    Index_length="43008" Data_free="0" Auto_increment="4080"
    Create_time="2007-03-31 01:47:01" Update_time="2007-03-31 01:47:02"
    Collation="latin1_swedish_ci" Create_options="" Comment="" />
    </table_structure>
    <table_data name="City">
    <row>
    <field name="ID">1</field>
    <field name="Name">Kabul</field>
    <field name="CountryCode">AFG</field>
    <field name="District">Kabol</field>
    <field name="Population">1780000</field>
    </row>
    
    ...
    
    <row>
    <field name="ID">4079</field>
    <field name="Name">Rafah</field>
    <field name="CountryCode">PSE</field>
    <field name="District">Rafah</field>
    <field name="Population">92020</field>
    </row>
    </table_data>
    </database>
    </mysqldump>
    

Параметры фильтрации

Следующие параметры управляют тем, какие виды объектов схемы записываются в файл дампов: по категориям, например, триггеры или события; по имени, например, выбор баз данных и таблиц для выгрузки; или даже фильтрация строк из данных таблицы с помощью WHERE-клаузы.

  • --all-databases, -A

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

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

  • --databases, -B

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

    Выполняет дамп нескольких баз данных. Обычно mysqldump обрабатывает первое имя аргумента в командной строке как имя базы данных, а последующие имена — как имена таблиц. С этой опцией все аргументы имен обрабатываются как имена баз данных. В вывод включаются инструкции CREATE DATABASE и USE перед каждой новой базой данных.

    Эта опция может быть использована для дампа баз данных INFORMATION_SCHEMA и performance_schema, которые обычно не дампятся даже с опцией --all-databases. (Также используйте опцию --skip-lock-tables.)

  • --events, -E

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

    Включает события планировщика событий для дампируемых баз данных в выходные данные. Для этих баз данных необходимы привилегии EVENT.

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

    Если вам требуется, чтобы события создавались с исходными атрибутами меток времени, не используйте --events. Вместо этого выполните дамп и перезагрузку содержимого таблицы mysql.event напрямую, используя учетную запись MySQL с соответствующими привилегиями для базы данных mysql.

  • --ignore-error=error[,error]...

    Формат командной строки --ignore-error=error[,error]...
    Тип Строка

    Игнорировать указанные ошибки. Значение опции — список номеров ошибок, разделенных запятыми, указывающих на ошибки, которые нужно игнорировать во время выполнения mysqldump. Если также задана опция --force для игнорирования всех ошибок, --force имеет приоритет.

  • --ignore-table=db_name.tbl_name

    Формат командной строки --ignore-table=db_name.tbl_name
    Тип Строка

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

  • --no-data, -d

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

    Не записывать информацию о строках таблицы (то есть не выполнять дамп содержимого таблицы). Это полезно, если вы хотите выполнить дамп только инструкции CREATE TABLE для таблицы (например, для создания пустой копии таблицы путем загрузки файла дампа).

  • --routines, -R

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

    Включать хранимые процедуры (процедуры и функции) для дампируемых баз данных в выходные данные. Для этого требуется привилегия SELECT для таблицы mysql.proc.

    Выходные данные, созданные при использовании --routines, содержат инструкции CREATE PROCEDURE и CREATE FUNCTION для создания процедур. Однако эти инструкции не включают атрибуты, такие как метки времени создания и изменения процедуры, поэтому при перезагрузке процедуры создаются с метками времени, равными времени перезагрузки.

    Если вам требуется, чтобы процедуры создавались с исходными атрибутами меток времени, не используйте --routines. Вместо этого выполните дамп и перезагрузку содержимого таблицы mysql.proc напрямую, используя учетную запись MySQL с соответствующими привилегиями для базы данных mysql.

  • --tables

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

    Переопределяет опцию --databases или -B. mysqldump рассматривает все аргументы имен, следующие за опцией, как имена таблиц.

  • --triggers

    Формат командной строки --triggers
    Отключено skip-triggers

    Включать триггеры для каждой дампируемой таблицы в выходные данные. Эта опция включена по умолчанию; отключите её с помощью --skip-triggers.

    Для возможности выполнить дамп триггеров таблицы, у вас должны быть привилегии TRIGGER для таблицы.

    Допускается несколько триггеров. mysqldump выполняет дамп триггеров в порядке активации, чтобы при перезагрузке файла дампа триггеры создавались в том же порядке активации. Однако если файл дампа mysqldump содержит несколько триггеров для таблицы с одинаковым событием и временем действия триггера, при попытке загрузить файл дампа в более старую версию сервера, не поддерживающую несколько триггеров, возникает ошибка. (Для обходного решения см. Раздел 2.11.3, «Примечания по переходу к предыдущим версиям»; вы можете преобразовать триггеры в формат, совместимый со старыми серверами.)

  • --where='where_condition', -w 'where_condition'

    Формат командной строки --where='where_condition'

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

    Примеры:

    --where="user='jimf'"
    -w"userid>1"
    -w"userid<1"
    

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

Следующие параметры наиболее важны для производительности, особенно операций восстановления. Для больших наборов данных операция восстановления (обработка инструкций INSERT в файле дампа) является наиболее длительной. Если необходимо быстро восстановить данные, заранее запланируйте и протестируйте производительность этого этапа. Если время восстановления измеряется часами, вы можете предпочесть альтернативное решение для резервного копирования и восстановления, такое как MySQL Enterprise Backup для баз данных только для InnoDB и смешанного использования.

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

  • Непереводимое --disable-keys, Непереводимое -K

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

    Для каждой таблицы заключите операторы INSERT в операторы /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; и /*!40000 ALTER TABLE tbl_name ENABLE KEYS */;. Это ускоряет загрузку файла дампа, поскольку индексы создаются после вставки всех строк. Этот параметр эффективен только для не уникальных индексов таблиц MyISAM.

  • Непереводимое --extended-insert, Непереводимое -e

    Формат командной строки --extended-insert
    Отключается skip-extended-insert

    Напишите операторы INSERT с использованием синтаксиса для нескольких строк, включающего несколько списков VALUES. Это приводит к меньшему файлу дампов и ускоряет вставки при повторной загрузке файла.

  • Непереводимое --insert-ignore

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

    Напишите операторы INSERT IGNORE, а не операторы INSERT.

  • --max-allowed-packet=value

    Формат командной строки --max-allowed-packet=value
    Тип Числовой
    Значение по умолчанию 25165824

    Максимальный размер буфера для связи клиент/сервер. По умолчанию 24 МБ, максимум 1 ГБ.

    Примечание

    Значение этого параметра специфично для mysqldump и не следует путать с системной переменной MySQL-сервера max_allowed_packet; значение сервера не может быть превышено одним пакетом от mysqldump, независимо от настройки параметра mysqldump, даже если последнее значение больше.

  • --net-buffer-length=value

    Формат командной строки --net-buffer-length=value
    Тип Числовой
    Значение по умолчанию 16384

    Начальный размер буфера для связи клиент/сервер. При создании операторов INSERT для нескольких строк (как с параметром --extended-insert или --opt), mysqldump создает строки длиной до --net-buffer-length байт. Если вы увеличиваете эту переменную, убедитесь, что системная переменная MySQL-сервера net_buffer_length имеет значение не меньше этого.

  • Непереводимое --opt

    Формат командной строки --opt
    Отключается skip-opt

    Этот параметр, включенный по умолчанию, является сокращенной записью для комбинации --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset. Он обеспечивает быструю работу дампинга и создает дамповый файл, который можно быстро загрузить в MySQL-сервер.

    Поскольку параметр --opt включен по умолчанию, вы указываете только обратное, параметр --skip-opt, чтобы отключить несколько параметров по умолчанию. См. обсуждение mysqldump групп параметров для получения информации о выборочном включении или отключении подмножества параметров, на которые влияет --opt.

  • Непереводимое --quick, Непереводимое -q

    Формат командной строки --quick
    Отключается skip-quick

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

  • Непереводимое --skip-opt

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

    См. описание параметра --opt.

Транзакционные параметры

Следующие параметры сопоставляют производительность операции дампинга с надежностью и согласованностью экспортируемых данных.

  • --add-locks

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

    Окружите каждый сброс таблицы операторами LOCK TABLES и UNLOCK TABLES. Это ускоряет вставки при повторном загрузке файла сброса. См. Раздел 8.2.4.1, «Оптимизация операторов INSERT».

  • --flush-logs, -F

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

    Очистите файлы журналов сервера MySQL перед началом сброса. Для этой опции требуется привилегия RELOAD. Если вы используете эту опцию в сочетании с опцией --all-databases, журналы очищаются для каждой сбрасываемой базы данных. Исключением являются случаи использования --lock-all-tables, --master-data или --single-transaction: в этих случаях журналы очищаются только один раз, что соответствует моменту блокировки всех таблиц с помощью FLUSH TABLES WITH READ LOCK. Если вы хотите, чтобы сброс и очистка журнала происходили в один момент, используйте --flush-logs вместе с --lock-all-tables, --master-data или --single-transaction.

  • --flush-privileges

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

    Добавьте оператор FLUSH PRIVILEGES в выходные данные сброса после сброса базы данных mysql. Эта опция должна использоваться всякий раз, когда сброс содержит базу данных mysql и любые другие базы данных, зависящие от данных в базе данных mysql для правильного восстановления.

    Поскольку файл сброса содержит оператор FLUSH PRIVILEGES, для загрузки файла требуются привилегии, достаточные для выполнения этого оператора.

    Примечание

    При обновлении с более ранних версий до MySQL 5.7 или выше не используйте --flush-privileges. Инструкции по обновлению в этом случае см. в Разделе 2.10.3, «Изменения в MySQL 5.7».

  • --lock-all-tables, -x

    Формат командной строки --lock-all-tables

    Блокировать все таблицы во всех базах данных. Это достигается путем получения глобальной блокировки для чтения на период всего сброса. Эта опция автоматически отключает --single-transaction и --lock-tables.

  • --lock-tables, -l

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

    Для каждой сбрасываемой базы данных заблокировать все таблицы перед их сбросом. Таблицы блокируются с помощью READ LOCAL для разрешения одновременных вставок в случае MyISAM таблиц. Для транзакционных таблиц, таких как InnoDB, --single-transaction — намного лучший вариант, чем --lock-tables, так как он вообще не требует блокировки таблиц.

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

    Некоторые опции, такие как --opt, автоматически включают --lock-tables. Если вы хотите переопределить это, используйте --skip-lock-tables в конце списка опций.

  • --no-autocommit

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

    Заключите операторы INSERT для каждой сбрасываемой таблицы в операторы SET autocommit = 0 и COMMIT.

  • --order-by-primary

    Формат командной строки --order-by-primary

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

  • --shared-memory-base-name=name

    Формат командной строки --shared-memory-base-name=name
    Платформо-специфичные Windows

    В Windows, имя общей памяти, используемое для подключений, созданных с использованием общей памяти к локальному серверу. Значение по умолчанию — MYSQL. Имя общей памяти чувствительно к регистру.

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

  • --single-transaction

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

    Эта опция устанавливает режим изоляции транзакций в REPEATABLE READ и отправляет оператор SQL START TRANSACTION на сервер перед сбросом данных. Он полезен только с транзакционными таблицами, такими как InnoDB, так как тогда он сбрасывает согласованное состояние базы данных на момент выполнения START TRANSACTION без блокировки каких-либо приложений.

    Привилегия RELOAD или FLUSH_TABLES требуется с --single-transaction, если gtid_mode=ON и --set-gtid=purged=ON|AUTO. Это требование было добавлено в MySQL 8.0.32.

    При использовании этой опции следует помнить, что только InnoDB таблицы сбрасываются в согласованном состоянии. Например, любые MyISAM или MEMORY таблицы, сброшенные при использовании этой опции, могут по-прежнему изменять состояние.

    Во время сброса с помощью --single-transaction, для обеспечения корректного файла сброса (правильное содержимое таблиц и координаты двоичного журнала) ни одно другое подключение не должно использовать следующие операторы: ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE. Согласованный доступ не изолирован от этих операторов, поэтому их использование в отношении таблицы, подлежащей сбросу, может привести к тому, что операция SELECT, выполняемая mysqldump для получения содержимого таблицы, выдаст некорректное содержимое или завершится ошибкой.

    Опция --single-transaction и опция --lock-tables взаимно исключают друг друга, так как LOCK TABLES приводит к неявной фиксации всех ожидающих транзакций.

    Использование --single-transaction вместе с опцией --set-gtid-purged не рекомендуется; это может привести к несогласованности вывода mysqldump.

    Для сброса больших таблиц объедините опцию --single-transaction с опцией --quick.

Группы опций

  • Опция --opt включает несколько настроек, работающих совместно для выполнения быстрого дампового процесса. Все эти настройки включены по умолчанию, так как --opt включена по умолчанию. Таким образом, вы редко, если вообще, указываете --opt. Вместо этого вы можете выключить эти настройки как группу, указав --skip-opt, а затем, по желанию, повторно включить определенные настройки, указав соответствующие опции позднее в командной строке.

  • Опция --compact отключает несколько настроек, контролирующих, отображаются ли дополнительные операторы и комментарии в выводе. Опять же, вы можете следовать этой опции другими опциями, которые повторно включают определенные настройки, или включить все настройки, используя форму --skip-compact.

При выборочном включении или отключении действия групповой опции порядок важен, так как опции обрабатываются от первой к последней. Например, --disable-keys --lock-tables --skip-opt не окажут предполагаемого эффекта; это то же самое, что и --skip-opt сама по себе.

Примеры

Чтобы создать резервную копию всей базы данных:

mysqldump db_name > backup-file.sql

Чтобы загрузить файл дампа обратно на сервер:

mysql db_name < backup-file.sql

Другой способ перезагрузки файла дампа:

mysql -e "source /path-to-backup/backup-file.sql" db_name

mysqldump также очень полезен для заполнения баз данных, копируя данные с одного сервера MySQL на другой:

mysqldump --opt db_name | mysql --host=remote_host -C db_name

Вы можете создать дамп нескольких баз данных одной командой:

mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql

Чтобы создать дамп всех баз данных, используйте опцию --all-databases:

mysqldump --all-databases > all_databases.sql

Для InnoDB таблиц, mysqldump предоставляет способ создания онлайн-резервной копии:

mysqldump --all-databases --master-data --single-transaction > all_databases.sql

Эта резервная копия приобретает глобальную блокировку для чтения всех таблиц (используя FLUSH TABLES WITH READ LOCK) в начале дампа. Как только эта блокировка была получена, считываются координаты двоичного лога, и блокировка снимается. Если выполняются длинные операторы обновления при вызове оператора FLUSH, сервер MySQL может приостановиться, пока эти операторы не завершат работу. После этого дамп становится свободным от блокировок и не мешает чтению и записи в таблицы. Если операторы обновления, получаемые сервером MySQL, короткие (по времени выполнения), начальный период блокировки не должен быть заметным, даже при многих обновлениях.

Для восстановления по состоянию на определенный момент времени (также известное как «прокрутка вперёд», когда вам нужно восстановить старую резервную копию и воспроизвести изменения, произошедшие после этой резервной копии), часто бывает полезно вращать двоичный лог (см. Раздел 5.4.4, «Двоичный лог») или по крайней мере знать координаты двоичного лога, к которым соответствует дамп:

mysqldump --all-databases --master-data=2 > all_databases.sql

Или:

mysqldump --all-databases --flush-logs --master-data=2 > all_databases.sql

Опции --master-data и --single-transaction могут использоваться одновременно, что предоставляет удобный способ создания онлайн-резервной копии, пригодной для использования перед восстановлением по состоянию на определенный момент времени, если таблицы хранятся с помощью движка хранения InnoDB.

Для получения дополнительной информации о создании резервных копий см. Раздел 7.2, «Методы резервного копирования баз данных» и Раздел 7.3, «Пример стратегии резервного копирования и восстановления».

  • Чтобы выбрать эффект опции --opt, за исключением некоторых функций, используйте опцию --skip для каждой функции. Чтобы отключить расширенные вставки и кэширование памяти, используйте --opt --skip-extended-insert --skip-quick. (На самом деле, --skip-extended-insert --skip-quick достаточно, так как --opt включена по умолчанию.)

  • Чтобы отменить --opt для всех функций, кроме отключения индексов и блокировки таблиц, используйте --skip-opt --disable-keys --lock-tables.

Ограничения

mysqldump по умолчанию не создает дамп схем INFORMATION_SCHEMA, performance_schema или sys. Чтобы создать дамп любой из них, укажите их явно в командной строке. Вы также можете указать их с помощью опции --databases. Для INFORMATION_SCHEMA и performance_schema также используйте опцию --skip-lock-tables.

mysqldump не создаёт дамп базы данных информации NDB Cluster ndbinfo.

mysqldump не создаёт дамп операторов InnoDB CREATE TABLESPACE.

mysqldump всегда удаляет режим SQL NO_AUTO_CREATE_USER, так как NO_AUTO_CREATE_USER несовместим с MySQL 8.0. Он остаётся удалённым даже при импорте обратно в MySQL 5.7, что означает, что хранимые процедуры могут вести себя по-разному после восстановления дампа, если они зависят от этого конкретного sql_mode. Он удаляется с версии mysqldump 5.7.24.

Не рекомендуется восстанавливать дамп, созданный с помощью mysqldump, на сервер MySQL 5.6.9 или более ранней версии с включёнными GTID. См. Раздел 16.1.3.6, «Ограничения репликации с GTID».

mysqldump включает операторы для повторного создания таблиц general_log и slow_query_log для дампов базы данных mysql. Содержимое таблицы журнала не создаётся в дампе.

Если у вас возникают проблемы с резервным копированием представлений из-за недостаточных привилегий, см. Раздел 23.9, «Ограничения на представления» для решения проблемы.

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

Spec-Zone.ru

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