Spec-Zone.ru › MySQL 9.2

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

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

Совет

Рассмотрите использование , которое обеспечивает параллельный экспорт с использованием нескольких потоков, сжатие файлов, отображение информации о ходе выполнения, а также облачные возможности, такие как потоковая передача в Oracle Cloud Infrastructure Object Storage, совместимость и изменения в службе MySQL HeatWave. Экспорт легко импортировать в экземпляр MySQL Server или базу данных MySQL HeatWave Service с помощью . Инструкции по установке MySQL Shell можно найти .

  • Соображения по производительности и масштабируемости

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

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

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

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

  • Параметры DDL

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

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

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

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

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

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

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

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

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

  • Примеры

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

Для mysqldump требуется как минимум привилегия SELECT для экспортируемых таблиц, SHOW VIEW для экспортируемых представлений, TRIGGER для экспортируемых триггеров, LOCK TABLES, если не используется опция --single-transaction, PROCESS, если не используется опция --no-tablespaces, и привилегия RELOAD или FLUSH_TABLES с --single-transaction, если включены и gtid_mode=ON, и gtid_purged=ON|AUTO.

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

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

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

Примечание

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

mysqldump [options] > dump.sql

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

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

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

Соображения по производительности и масштабируемости

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

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

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

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

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

Дополнительную информацию о mysqldump см. в Разделе 9.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, см. в Разделе 6.2.2.2, “Использование файлов параметров”.

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

Таблица 6.13 Параметры 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-replica-statements Включить STOP REPLICA перед оператором CHANGE REPLICATION SOURCE TO и START REPLICA в конце вывода
--apply-slave-statements Включить STOP SLAVE перед оператором CHANGE MASTER и START SLAVE в конце вывода
--bind-address Использовать указанный сетевой интерфейс для подключения к MySQL Server
--character-sets-dir Директория, где установлены наборы символов
--column-statistics Записать операторы ANALYZE TABLE для генерации статистических гистограмм
--comments Добавить комментарии к файлу дампа
--compact Создать более компактный вывод
--compatible Создать вывод, более совместимый с другими системами баз данных или более старыми серверами MySQL
--complete-insert Использовать полные операторы INSERT, которые включают имена столбцов
--compress Сжать всю информацию, передаваемую между клиентом и сервером
--compression-algorithms Разрешенные алгоритмы сжатия для подключений к серверу
--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 На сервере репликации-источника, удалить двоичные журналы после выполнения операции дампа
--delete-source-logs На сервере репликации-источника, удалить двоичные журналы после выполнения операции дампа
--disable-keys Для каждой таблицы, окружать операторы INSERT операторами для отключения и включения ключей
--dump-date Включить дату дампа как комментарий "Dump completed on", если задан --comments
--dump-replica Включить оператор CHANGE REPLICATION SOURCE TO, который перечисляет координаты двоичного журнала источника репликации
--dump-slave Включить оператор CHANGE MASTER, который перечисляет координаты двоичного журнала источника репликации
--enable-cleartext-plugin Включить плагин аутентификации cleartext
--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 открытого ключа у сервера
--help Показать сообщение справки и завершить
--hex-blob Выгрузить бинарные столбцы в шестнадцатеричном формате
--host Хост, на котором находится MySQL-сервер
--ignore-error Игнорировать указанные ошибки
--ignore-table Не выгружать указанную таблицу
--ignore-views Пропустить выгрузку представлений таблиц
--include-master-host-port Включить параметры MASTER_HOST/MASTER_PORT в операторе CHANGE MASTER, сгенерированном с помощью --dump-slave
--include-source-host-port Включить параметры SOURCE_HOST и SOURCE_PORT в операторе CHANGE REPLICATION SOURCE TO, сгенерированном с помощью --dump-replica
--init-command Единственное SQL-оператор для выполнения после подключения или повторного подключения к серверу MySQL; сбрасывает ранее заданные команды
--init-command-add Добавить дополнительный SQL-оператор для выполнения после подключения или повторного подключения к MySQL-серверу
--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 Максимальная длина пакета для отправки или получения от сервера
--mysqld-long-query-time Значение сессии для порога времени медленных запросов
--net-buffer-length Размер буфера для TCP/IP и сокетного взаимодействия
--network-timeout Увеличение сетевых таймаутов для разрешения более крупных дампов таблиц
--no-autocommit Окружить операторы INSERT для каждой выгруженной таблицы операторами SET autocommit = 0 и COMMIT
--no-create-db Не записывать операторы CREATE DATABASE
--no-create-info Не писать операторы CREATE TABLE, повторно создающие каждую таблицу, которая дублируется
--no-data Не дублировать содержимое таблиц
--no-defaults Не читать файлы параметров
--no-login-paths Не читать пути входа из файла путей входа
--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 Дублировать строки каждой таблицы, отсортированные по первичному ключу или первому уникальному индексу
--output-as-version Определяет терминологию репликации и событий, используемых в дампах; для совместимости со старыми версиями
--password Пароль для подключения к серверу
--password1 Первый пароль многофакторной аутентификации для подключения к серверу
--password2 Второй пароль многофакторной аутентификации для подключения к серверу
--password3 Третий пароль многофакторной аутентификации для подключения к серверу
--pipe Подключение к серверу с использованием именованной трубы (только Windows)
--plugin-authentication-kerberos-client-mode Разрешить плагин аутентификации GSSAPI через библиотеку MIT Kerberos на Windows
--plugin-dir Директория, в которой установлены плагины
--port Номер TCP/IP порта для подключения
--print-defaults Вывести параметры по умолчанию
--protocol Протокол передачи для использования
--quick Получить строки для таблицы с сервера по одной строке за раз
--quote-names Приводить идентификаторы в обратных кавычках
--replace Записать операторы REPLACE вместо операторов INSERT
--result-file Направить вывод в указанный файл
--routines Дублировать хранимые процедуры (процедуры и функции) из скопированных баз данных
--server-public-key-path Имя пути к файлу, содержащему открытый ключ RSA
--set-charset Добавить SET NAMES default_character_set в вывод
--set-gtid-purged Добавить ли SET @@GLOBAL.GTID_PURGED в вывод
--shared-memory-base-name Имя общей памяти для подключений общей памяти (только Windows)
--show-create-skip-secondary-engine Исключить предложение SECONDARY ENGINE из операторов CREATE TABLE
--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-generated-invisible-primary-key Не включать сгенерированные невидимые первичные ключи в файл дампов
--skip-opt Отключить параметры, заданные с помощью --opt
--skip-quick Не получать строки для таблицы с сервера по одной строке за раз
--skip-quote-names Не приводить идентификаторы в обратные кавычки
--skip-set-charset Не писать оператор SET NAMES
--skip-triggers Не дублировать триггеры
--skip-tz-utc Отключить tz-utc
--socket Файл Unix-соккета или именованная труба Windows для использования
--source-data Записать имя и позицию файла бинарного журнала в вывод
--ssl-ca Файл, содержащий список доверенных центров сертификации SSL
--ssl-capath Директория, содержащая файлы сертификатов доверенных центров сертификации SSL
--ssl-cert Файл, содержащий сертификат X.509
--ssl-cipher Разрешенные шифры для шифрования соединения
--ssl-fips-mode Включить ли режим FIPS на стороне клиента
--ssl-key Файл, содержащий ключ X.509
--ssl-mode Желаемое состояние безопасности соединения с сервером
--ssl-session-data Файл, содержащий данные сеанса SSL
--ssl-session-data-continue-on-failed-reuse Устанавливать ли соединения, если повторное использование сеанса завершится неудачей
--tab Создать файлы данных с табуляцией
--tables Переопределить --databases или -B опцию
--tls-ciphersuites Разрешенные TLSv1.3 наборы шифров для шифрованных соединений
--tls-sni-servername Имя сервера, предоставленное клиентом
--tls-version Разрешенные TLS протоколы для шифрованных соединений
--triggers Дублировать триггеры для каждой дублируемой таблицы
--tz-utc Добавить SET TIME_ZONE='+00:00' в файл дампов
--user Имя пользователя MySQL для подключения к серверу
--verbose Подробный режим
--version Отобразить информацию о версии и выйти
--where Дублировать только строки, выбранные заданным условием WHERE
--xml Создать вывод в формате XML
--zstd-compression-level Уровень сжатия для соединений с сервером, которые используют сжатие zstd

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

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

  • --bind-address=ip_address

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

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

  • --compress, -C

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

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

    Этот параметр устарел. Ожидается, что он будет удален в будущей версии MySQL. См. Настройка устаревшего сжатия соединения.

  • --compression-algorithms=value

    Формат командной строки --compression-algorithms=value
    Тип Множество
    Значение по умолчанию uncompressed
    Допустимые значения

    zlib

    zstd

    uncompressed

    Разрешенные алгоритмы сжатия для подключений к серверу. Доступные алгоритмы такие же, как и для системной переменной protocol_compression_algorithms. Значение по умолчанию — uncompressed.

    Для получения дополнительной информации см. Раздел 6.2.8, «Управление сжатием соединения».

  • --default-auth=plugin

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

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

  • --enable-cleartext-plugin

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

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

  • --get-server-public-key

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

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

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

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

  • --host=host_name, -h host_name

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

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

  • --login-path=name

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

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

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

  • --no-login-paths

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

    Пропускает чтение параметров из файла пути к файлу входа.

    См. --login-path для получения дополнительной информации.

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

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

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

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

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

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

  • --password1[=pass_val]

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

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

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

    --password1 и --password являются синонимами, так же как --skip-password1 и --skip-password.

  • --password2[=pass_val]

    Пароль для многофакторной аутентификации фактора 2 учетной записи MySQL, используемой для подключения к серверу. Семантика этой опции аналогична семантике --password1; см. описание этой опции для получения подробностей.

  • --password3[=pass_val]

    Пароль для многофакторной аутентификации фактора 3 учетной записи MySQL, используемой для подключения к серверу. Семантика этой опции аналогична семантике --password1; см. описание этой опции для получения подробностей.

  • --pipe, -W

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

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

  • --plugin-authentication-kerberos-client-mode=value

    Формат командной строки --plugin-authentication-kerberos-client-mode
    Тип Строка
    Значение по умолчанию SSPI
    Допустимые значения GSSAPI

    В Windows плагин аутентификации authentication_kerberos_client поддерживает эту опцию плагина. Она предоставляет два возможных значения, которые пользователь клиента может задать во время выполнения: SSPI и GSSAPI.

    Значение по умолчанию для опции плагина на стороне клиента использует интерфейс поставщика поддержки безопасности (SSPI), который способен получать учётные данные из кэша Windows в оперативной памяти. В качестве альтернативы, пользователь клиента может выбрать режим, поддерживающий интерфейс прикладной программы безопасности общего назначения (GSSAPI) через библиотеку MIT Kerberos в Windows. GSSAPI способен получать кэшированные учётные данные, ранее сгенерированные с помощью команды kinit.

    Дополнительную информацию см. в Команды для клиентов Windows в режиме GSSAPI.

  • --plugin-dir=dir_name

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

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

  • --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

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

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

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

    Имя файла в формате 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 см. в Разделе 8.4.1.2, «Подключаемая аутентификация SHA-256» и Разделе 8.4.1.1, «Подключаемая кэширующая аутентификация SHA-2».

  • --socket=path, -S path

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

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

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

  • --ssl*

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

END_OF_DOCUMENT_MARKER
  • --ssl-fips-mode={OFF|ON|STRICT}

    Формат командной строки --ssl-fips-mode={OFF|ON|STRICT}
    Устарело Да
    Тип Перечисление
    Значение по умолчанию OFF
    Допустимые значения

    OFF

    ON

    STRICT

    Управляет включением режима FIPS со стороны клиента. Опция --ssl-fips-mode отличается от других опций --ssl-xxx тем, что она не используется для установления шифрованных соединений, а скорее для определения допустимых криптографических операций. См. Раздел 8.8, «Поддержка FIPS».

    Допустимые значения для --ssl-fips-mode:

    • OFF: Отключить режим FIPS.

    • ON: Включить режим FIPS.

    • STRICT: Включить режим “строгий” FIPS.

    Примечание

    Если модуль OpenSSL FIPS Object Module недоступен, единственным допустимым значением для --ssl-fips-mode является OFF. В этом случае установка --ssl-fips-mode в ON или STRICT заставит клиента вывести предупреждение при запуске и работать в режиме, не поддерживающем FIPS.

    Эта опция устарела. Ожидайте её удаления в будущих версиях MySQL.

  • --tls-ciphersuites=ciphersuite_list

    Формат командной строки --tls-ciphersuites=ciphersuite_list
    Тип Строка

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

  • --tls-sni-servername=server_name

    Формат командной строки --tls-sni-servername=server_name
    Тип Строка

    При указании имя передаётся в библиотеку C API libmysqlclient с использованием опции MYSQL_OPT_TLS_SNI_SERVERNAME. Имя сервера не чувствительно к регистру. Чтобы увидеть имя сервера, указанное клиентом для текущей сессии, если таковое есть, проверьте переменную состояния Tls_sni_server_name.

    Server Name Indication (SNI) — это расширение протокола TLS (OpenSSL должен быть скомпилирован с расширениями TLS для работы этой опции). Реализация SNI в MySQL представляет только клиентскую сторону.

  • --tls-version=protocol_list

    Формат командной строки --tls-version=protocol_list
    Тип Строка
    Значение по умолчанию

    TLSv1,TLSv1.1,TLSv1.2,TLSv1.3 (OpenSSL 1.1.1 или выше)

    TLSv1,TLSv1.1,TLSv1.2 (в противном случае)

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

  • --user=user_name, -u user_name

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

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

    Если вы используете плагин Rewriter, вы должны предоставить этому пользователю привилегию SKIP_QUERY_REWRITE.

  • --zstd-compression-level=level

    Формат командной строки --zstd-compression-level=#
    Тип Целое число

    Уровень сжатия для соединений с сервером, использующих алгоритм сжатия zstd. Допустимые уровни — от 1 до 22, причём большие значения означают более высокий уровень сжатия. По умолчанию уровень сжатия zstd равен 3. Настройка уровня сжатия не влияет на подключения, не использующие сжатие zstd.

    Для получения дополнительной информации см. Раздел 6.2.8, «Управление сжатием соединений».

Опции файла опций

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

  • --defaults-extra-file=file_name

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

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

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

  • --defaults-file=file_name

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

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

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

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

  • --defaults-group-suffix=str

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

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

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

  • --no-defaults

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

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

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

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

  • --print-defaults

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

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

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

Опции DDL

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

  • --add-drop-database

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

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

    Примечание

    В MySQL 9.2 схема mysql считается системной схемой, которую конечные пользователи не могут удалить. Если --add-drop-database используется с --all-databases или с --databases, где список схем для дампа включает mysql, дамп-файл содержит оператор DROP DATABASE `mysql`, вызывающий ошибку при перезагрузке дамп-файла.

    Вместо этого, чтобы использовать --add-drop-database, используйте --databases со списком схем для дампа, где список не включает mysql.

  • --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.

  • --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

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

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

  • --default-character-set=charset_name

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

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

  • --no-set-names, -N

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

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

  • --set-charset

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

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

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

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

  • --apply-replica-statements

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

    Для резервной копии реплики, созданной с помощью параметра --dump-replica, этот параметр добавляет оператор STOP REPLICA перед оператором с координатами двоичного журнала, и оператор START REPLICA в конце вывода.

  • --apply-slave-statements

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

    Это устаревший псевдоним для --apply-replica-statements.

  • --delete-source-logs

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

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

  • --delete-master-logs

    Формат командной строки --delete-master-logs
    Устаревший Да

    Это устаревший псевдоним для --delete-source-logs.

  • --dump-replica[=value]

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

    1

    2

    Этот параметр похож на --source-data, за исключением того, что он используется для дампирования сервера реплики, чтобы получить файл дампа, который можно использовать для настройки другого сервера в качестве реплики, имеющей тот же источник, что и дампированный сервер. Параметр вызывает вывод дампа, включающий оператор CHANGE REPLICATION SOURCE TO, который указывает координаты двоичного журнала (имя файла и позицию) источника дампированной реплики. Оператор CHANGE REPLICATION SOURCE TO считывает значения Relay_Master_Log_File и Exec_Master_Log_Pos из вывода SHOW REPLICA STATUS и использует их для SOURCE_LOG_FILE и SOURCE_LOG_POS соответственно. Это координаты сервера источника репликации, с которого реплика начинает репликацию.

    Примечание

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

    --dump-replica вызывает использование координат из источника вместо координат дампированного сервера, как это делает параметр --source-data. Кроме того, указание этого параметра переопределяет параметр --source-data.

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

    Параметр --dump-replica не следует использовать, если сервер, на который будет применена резервная копия, использует gtid_mode=ON и SOURCE_AUTO_POSITION=1.

    Значение параметра обрабатывается так же, как и для --source-data. Установка значения, равного 0 или 1, вызывает запись оператора CHANGE REPLICATION SOURCE TO в дамп. Установка значения, равного 2, вызывает запись оператора, но в комментариях SQL. Он оказывает такое же воздействие, как --source-data, с точки зрения включения или выключения других параметров и в отношении обработки блокировок.

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

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

    Параметры --apply-replica-statements и --include-source-host-port могут использоваться совместно с --dump-replica.

  • --dump-slave[=value]

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

    1

    2

    Это устаревший псевдоним для --dump-replica.

  • --include-source-host-port

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

    Добавляет параметры SOURCE_HOST и SOURCE_PORT для имени хоста и номера TCP/IP порта источника реплики к оператору CHANGE REPLICATION SOURCE TO в дампе реплики, созданном с помощью параметра --dump-replica.

  • --include-master-host-port

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

    Это устаревший псевдоним для --include-source-host-port.

  • --master-data[=value]

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

    1

    2

    Это устаревший псевдоним для --source-data.

END_OF_DOCUMENT_MARKER
  • --output-as-version=value

    Формат командной строки --output-as-version=value
    Тип Перечисление
    Значение по умолчанию SERVER
    Допустимые значения

    BEFORE_8_0_23

    BEFORE_8_2_0

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

    • SERVER: Читает версию сервера и использует последние версии заявлений, совместимые с этой версией. Это значение по умолчанию.

    • BEFORE_8_0_23: Заявления SQL репликации, использующие устаревшие термины, такие как “slave” и “master”, записываются в выходные данные вместо тех, которые используют “replica” и “source”, как в версиях MySQL до 8.0.23.

      Этот параметр также дублирует эффекты BEFORE_8_2_0 на выходные данные SHOW CREATE EVENT.

    • BEFORE_8_2_0: Этот параметр заставляет SHOW CREATE EVENT отражать то, как событие было создано на сервере MySQL до версии 8.2.0, отображая DISABLE ON SLAVE вместо DISABLE ON REPLICA.

    Этот параметр влияет на вывод из --events, --dump-replica, --source-data, --apply-replica-statements и --include-source-host-port.

  • --source-data[=value]

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

    1

    2

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

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

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

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

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

  • --set-gtid-purged=value

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

    OFF

    ON

    AUTO

    Этот параметр предназначен для серверов, использующих репликацию на основе GTID (gtid_mode=ON). Он контролирует включение оператора SET @@GLOBAL.gtid_purged в вывод дампа, который обновляет значение gtid_purged на сервере, где загружается файл дампа, для добавления набора GTID с исходного сервера из переменной системы gtid_executed. gtid_purged содержит GTID всех транзакций, которые были применены на сервере, но не существуют ни в одном файле бинарного журнала на сервере. Поэтому mysqldump добавляет GTID транзакций, выполненных на исходном сервере, чтобы целевой сервер записывал эти транзакции как примененные, хотя их нет в его бинарных журналах. --set-gtid-purged также контролирует включение оператора SET @@SESSION.sql_log_bin=0, который отключает логирование бинарных данных во время перезагрузки файла дампа. Этот оператор предотвращает создание и назначение новых GTID транзакциям в файле дампа по мере их выполнения, чтобы были использованы исходные GTID транзакций.

    Если параметр --set-gtid-purged не задан, по умолчанию оператор SET @@GLOBAL.gtid_purged включается в вывод дампа, если на сервере, который вы резервируете, включены GTID, и набор GTID в глобальном значении переменной системы gtid_executed не пуст. Также включается оператор SET @@SESSION.sql_log_bin=0, если на сервере включены GTID.

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

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

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

    Возможные значения для параметра --set-gtid-purged следующие:

    AUTO

    Значение по умолчанию. Если на сервере, который вы резервируете, включены GTID, и gtid_executed не пуст, добавляется оператор SET @@GLOBAL.gtid_purged с набором GTID из gtid_executed. Если GTID включены, добавляется оператор SET @@SESSION.sql_log_bin=0. Если GTID не включены на сервере, операторы не добавляются в вывод.

    OFF

    Оператор SET @@GLOBAL.gtid_purged не добавляется в вывод, и SET @@SESSION.sql_log_bin=0 не добавляется в вывод. Для сервера, где GTID не используются, используйте этот параметр или AUTO. Используйте этот параметр для сервера с включенными GTID только если вы уверены, что необходимый набор GTID уже присутствует в gtid_purged на целевом сервере и его не нужно изменять, или если вы планируете вручную определить и добавить любые отсутствующие GTID.

    ON

    Если на сервере, который вы резервируете, включены GTID, добавляется оператор SET @@GLOBAL.gtid_purged (если gtid_executed не пуст) и SET @@SESSION.sql_log_bin=0. Возникает ошибка, если вы установили этот параметр, а на сервере GTID не включены. Для сервера с включенными GTID используйте этот параметр или AUTO, если вы не уверены, что GTID в gtid_executed не требуются на целевом сервере.

    COMMENTED

    Если на сервере, который вы резервируете, включены GTID, добавляется оператор SET @@GLOBAL.gtid_purged (если gtid_executed не пуст), но он прокомментирован. Это означает, что значение gtid_executed доступно в выводе, но никаких действий не выполняется автоматически при перезагрузке файла дампа. Добавляется оператор SET @@SESSION.sql_log_bin=0, и он не прокомментирован. С помощью COMMENTED можно управлять использованием набора gtid_executed вручную или с помощью автоматизации. Например, вы можете предпочесть это, если вы мигрируете данные на другой сервер, на котором уже есть другие активные базы данных.

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

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

  • --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. Единственным допустимым значением для этой опции является ansi, которое имеет то же значение, что и соответствующая опция для установки режима SQL сервера. См. Раздел 7.1.11, «Режимы SQL сервера».

  • --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. См. Раздел 15.2.9, «Оператор 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. См. Раздел 15.2.9, «Оператор 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 возврата каретки/перевода строки.

  • --show-create-skip-secondary-engine=value

    Формат командной строки --show-create-skip-secondary-engine

    Исключает предложение SECONDARY ENGINE из операторов CREATE TABLE. Это делается путем включения системной переменной show_create_table_skip_secondary_engine на время операции дампа. В качестве альтернативы можно включить системную переменную show_create_table_skip_secondary_engine перед использованием mysqldump.

  • --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, как показано в таблице.

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

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

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

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

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

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

    Вывод из клиента mysql, когда он запущен с параметром --xml, также следует указанным правилам. (См. Раздел 6.5.1.1, “mysql Client Options”.)

    Вывод в формате 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 и указание всех баз данных в командной строке.

    Примечание

    См. описание --add-drop-database для получения информации о несовместимости этого параметра с --all-databases.

    До MySQL 9.2 параметры --routines и --events для mysqldump не требовались для включения хранимых процедур и событий при использовании параметра --all-databases: дамп включал системную базу данных mysql, а следовательно, также таблицы mysql.proc и mysql.event, содержащие определения хранимых процедур и событий. Начиная с MySQL 9.2, таблицы mysql.event и mysql.proc не используются. Определения соответствующих объектов хранятся в таблицах словаря данных, но эти таблицы не дампятся. Чтобы включить хранимые процедуры и события в дамп, созданный с помощью --all-databases, явно используйте параметры --routines и --events.

  • --databases, -B

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

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

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

    Примечание

    См. описание --add-drop-database для получения информации о несовместимости этого параметра с --databases.

  • --events, -E

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

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

    Вывод, созданный с использованием --events, содержит операторы CREATE EVENT для создания событий.

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

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

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

  • --ignore-table=db_name.tbl_name

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

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

  • --ignore-views=boolean

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

    Пропускает представления таблиц в дамп-файле.

  • --init-command=str

    Формат командной строки --init-command=str
    Тип Строка

    Единичный оператор SQL для выполнения после подключения к серверу MySQL. Определение сбрасывает существующие операторы, определенные им или init-command-add.

  • --init-command-add=str

    Формат командной строки --init-command-add=str
    Тип Строка

    Добавить дополнительный оператор SQL для выполнения после подключения или повторного подключения к серверу MySQL. Он может использоваться без --init-command, но не оказывает никакого эффекта, если используется перед ним, потому что init-command сбрасывает список вызываемых команд.

  • --no-data, -d

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

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

  • --routines, -R

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

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

    Вывод, созданный с использованием --routines, содержит операторы CREATE PROCEDURE и CREATE FUNCTION для создания процедур.

  • --skip-generated-invisible-primary-key

    Формат командной строки --skip-generated-invisible-primary-key
    Тип Булево
    Значение по умолчанию FALSE

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

  • --tables

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

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

  • --triggers

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

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

    Для дублирования триггеров таблицы необходимо иметь право TRIGGER для этой таблицы.

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

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

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

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

    Примеры:

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

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

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

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

  • --column-statistics

    Формат командной строки --column-statistics
    Тип Булево
    Значение по умолчанию OFF

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

  • --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, даже если последний больше.

  • --mysqld-long-query-time=value

    Формат командной строки --mysqld-long-query-time=value
    Тип Числовой
    Значение по умолчанию Server global setting

    Установите сессионное значение системной переменной long_query_time. Используйте этот параметр, если вы хотите увеличить время, разрешенное для запросов от mysqldump перед их записью в файл журнала медленных запросов. mysqldump выполняет полный сканирование таблицы, что означает, что его запросы часто могут превышать глобальное значение long_query_time, полезное для обычных запросов. Глобальное значение по умолчанию составляет 10 секунд.

    Вы можете использовать --mysqld-long-query-time для задания сессионного значения от 0 (что означает, что каждый запрос от mysqldump записывается в журнал медленных запросов) до 31536000, что составляет 365 дней в секундах. Для параметра mysqldump вы можете указать только целые секунды. Если вы не укажете этот параметр, глобальное значение сервера применяется к запросам mysqldump.

  • --net-buffer-length=value

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

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

  • --network-timeout, -M

    Формат командной строки --network-timeout[={0|1}]
    Тип Булево
    Значение по умолчанию TRUE

    Разрешить дамп больших таблиц, установив --max-allowed-packet на максимальное значение и таймауты чтения и записи сети на большое значение. Этот параметр включен по умолчанию. Чтобы отключить его, используйте --skip-network-timeout.

  • --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. Это приводит к более быстрым вставкам при перезагрузке файла дампа. См. Раздел 10.2.5.1, «Оптимизация операторов INSERT».

  • --flush-logs, -F

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

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

  • --flush-privileges

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

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

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

  • --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 и gtid_purged=ON|AUTO.

    При использовании этого параметра следует помнить, что только таблицы 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 с параметром --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 --source-data --single-transaction > all_databases.sql

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

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

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

Или:

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

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

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

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

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

Ограничения

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

mysqldump не создаёт дамп схемы INFORMATION_SCHEMA.

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

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

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

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

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

Spec-Zone.ru

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