Spec-Zone.ru › MySQL 8.4

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

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

Подсказка

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

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

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

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

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

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

  • Параметры DDL

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

  • Параметры помощи

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

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

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

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

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

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

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

  • Примеры

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

Для выгружаемых таблиц 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-crl Файл, содержащий списки отзыва сертификатов
--ssl-crlpath Директория, содержащая файлы списков отзыва сертификатов
--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 ciphersuites для шифрованных соединений
--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.4, «Клиентская аутентификация с открытым текстом».)

  • --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.2, «Подключаемый модуль аутентификации с кэшированием 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.

    Значение по умолчанию для опции плагина со стороны клиента использует интерфейс поставщика безопасности Windows (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.3, «Подключаемый модуль аутентификации SHA-256» и Разделе 8.4.1.2, «Кэширование подключаемого модуля аутентификации 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 8.4 схема 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.34, «Репликация и несоответствия транзакций».

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

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

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

    Значение параметра обрабатывается так же, как и для --source-data. Установка значения без значения или 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-порта источника репликации в оператор 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.

  • --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 представление:
    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».)

    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 8.4, параметры --routines и --events для mysqldump не требовались для включения хранимых процедур и событий при использовании параметра --all-databases: дамп включал системную базу данных mysql, а следовательно, также таблицы mysql.proc и mysql.event, содержащие определения хранимых процедур и событий. Начиная с MySQL 8.4, таблицы 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]...
    Тип String

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

  • --ignore-table=db_name.tbl_name

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

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

  • --ignore-views=boolean

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

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

  • --init-command=str

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

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

  • --init-command-add=str

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

    Добавить дополнительный оператор 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
    Тип Boolean
    Значение по умолчанию FALSE

    Этот параметр приводит к тому, что сгенерированные невидимые первичные ключи исключаются из вывода. Для получения дополнительной информации см. Раздел 15.1.20.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.9, «Ограничения на представления» для обходного пути.

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

Spec-Zone.ru

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