4.5.4 mysqldump — Программа резервного копирования базы данных
Утилита клиента mysqldump выполняет , генерируя набор SQL-команд, которые могут быть выполнены для воспроизведения исходных определений объектов базы данных и данных таблиц. Она создаёт дамп одной или нескольких баз данных MySQL для резервного копирования или передачи на другой сервер SQL. Команда mysqldump также может генерировать вывод в формате CSV, других разделительных текстовых форматах или XML.
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
| Имя параметра | Описание | Введено | Устарело |
|---|
| --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На компьютере с несколькими сетевыми интерфейсами используйте этот параметр, чтобы выбрать интерфейс для подключения к серверу MySQL.
-
--compress,-CФормат командной строки --compress[={OFF|ON}]Тип Булево Значение по умолчанию OFFСжать всю информацию, передаваемую между клиентом и сервером, если это возможно. См. Раздел 4.2.6, «Управление сжатием соединения».
-
--default-auth=pluginФормат командной строки --default-auth=pluginТип Строка Подсказка о том, какой плагин проверки подлинности клиента использовать. См. Раздел 6.2.13, «Подключаемая проверка подлинности».
-
Формат командной строки --enable-cleartext-pluginВведено 5.7.10 Тип Булево Значение по умолчанию FALSEВключить плагин проверки подлинности
mysql_clear_passwordв открытом тексте. (См. Раздел 6.4.1.6, «Проверка подлинности клиента в открытом тексте».)Этот параметр был добавлен в MySQL 5.7.10.
-
Формат командной строки --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-hhost_nameФормат командной строки --hostВыгрузить данные с сервера MySQL на указанном хосте. Хост по умолчанию —
localhost. -
Формат командной строки --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-Pport_numФормат командной строки --port=port_numТип Числовое Значение по умолчанию 3306Номер порта для подключений TCP/IP.
-
--protocol={TCP|SOCKET|PIPE|MEMORY}Формат командной строки --protocol=typeТип Строка Значение по умолчанию [see text]Допустимые значения TCPSOCKETPIPEMEMORYПротокол передачи для подключения к серверу. Полезно, когда другие параметры подключения обычно приводят к использованию протокола, отличного от желаемого. Подробности о допустимых значениях см. в Разделе 4.2.5, «Протоколы передачи соединений».
-
Формат командной строки --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Введено 5.7.36 Тип Булево Не удалять схему
mysqlпри восстановлении файла дампов. По умолчанию схема удаляется.Этот параметр был добавлен в MySQL 5.7.36.
-
--socket=,path-SpathФормат командной строки --socket={file_name|pipe_name}Тип Строка Для подключений к
localhost, используемый файл Unix-сокет или, в Windows, имя именованной трубы.В Windows этот параметр применяется только в том случае, если сервер был запущен с системной переменной
named_pipe, поддерживающей подключение через именованные трубы. Кроме того, пользователь, производящий подключение, должен быть членом группы Windows, указанной в системной переменнойnamed_pipe_full_access_group. -
--ssl*Параметры, начинающиеся с
--ssl, определяют, подключаться ли к серверу с использованием шифрования, и указывают, где найти ключи и сертификаты SSL. См. Параметры команд для шифрованных подключений. -
Формат командной строки --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-uuser_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Тип Имя файла Использует только указанный файл опций. Если файл не существует или недоступен, произойдёт ошибка. Если
file_nameне является абсолютным именем пути, оно интерпретируется относительно текущей директории.Исключение: даже с
--defaults-file, клиентские программы читают.mylogin.cnf.Дополнительную информацию об этом и других опциях файлов опций см. в разделе 4.2.2.3, «Командные строки, влияющие на обработку файлов опций».
-
Командная строка --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может использоваться для предотвращения их чтения.Исключением является файл
.mylogin.cnf, который читается во всех случаях, если он существует. Это позволяет задавать пароли более безопасным способом, чем в командной строке, даже когда используется--no-defaults. Для создания.mylogin.cnfиспользуйте утилиту mysql_config_editor. См. раздел 4.6.6, «mysql_config_editor — Утилита конфигурации MySQL».Дополнительную информацию об этом и других опциях файлов опций см. в разделе 4.2.2.3, «Командные строки, влияющие на обработку файлов опций».
-
Командная строка --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
Параметры отладки
Следующие параметры выводят информацию об отладке, кодируют информацию об отладке в файле дампов или позволяют операции дампов продолжить, независимо от возможных проблем.
-
--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_named: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_setSET 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Допустимые значения 12Эта опция аналогична
--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Допустимые значения 12Используйте эту опцию для дампинга сервера исходной репликации, чтобы создать файл дампа, который можно использовать для настройки другого сервера как реплики источника. Она вызывает вывод дампа, включающий оператор
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Допустимые значения OFFONAUTOЭтот параметр позволяет управлять информацией о глобальном идентификаторе транзакции (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 Значение по умолчанию ''Допустимые значения ansimysql323mysql40postgresqloraclemssqldb2maxdbno_key_optionsno_table_optionsno_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Заключать идентификаторы (такие как имена баз данных, таблиц и столбцов) в символы
`. Если включен режим SQLANSI_QUOTES, идентификаторы заключаются в символы". Эта опция включена по умолчанию. Она может быть отключена с помощью--skip-quote-names, но эта опция должна быть указана после любой опции, такой как--compatible, которая может включить--quote-names. -
--result-file=,file_name-rfile_nameФормат командной строки --result-file=file_nameТип Имя файла Направлять вывод в указанный файл. Файл результатов создается, и его предыдущее содержимое перезаписывается, даже если при генерации дампа возникает ошибка.
Эта опция должна использоваться в Windows, чтобы предотвратить преобразование символов перевода строки
\nв последовательности возврата каретки/перевода строки\r\n.
-
--tab=,dir_name-Tdir_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_nameDISABLE KEYS */;/*!40000 ALTER TABLE. Это ускоряет загрузку файла дампа, поскольку индексы создаются после вставки всех строк. Этот параметр эффективен только для не уникальных индексов таблицtbl_nameENABLE KEYS */;MyISAM. -
Непереводимое
--extended-insert, Непереводимое-eФормат командной строки --extended-insertОтключается skip-extended-insertНапишите операторы
INSERTс использованием синтаксиса для нескольких строк, включающего несколько списковVALUES. Это приводит к меньшему файлу дампов и ускоряет вставки при повторной загрузке файла. -
Непереводимое
--insert-ignoreФормат командной строки --insert-ignoreНапишите операторы
INSERT IGNORE, а не операторыINSERT. -
Формат командной строки --max-allowed-packet=valueТип Числовой Значение по умолчанию 25165824Максимальный размер буфера для связи клиент/сервер. По умолчанию 24 МБ, максимум 1 ГБ.
ПримечаниеЗначение этого параметра специфично для mysqldump и не следует путать с системной переменной MySQL-сервера
max_allowed_packet; значение сервера не может быть превышено одним пакетом от mysqldump, независимо от настройки параметра mysqldump, даже если последнее значение больше. -
Формат командной строки --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и отправляет оператор SQLSTART 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.