Spec-Zone .ru
спецификации, руководства, описания, API

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

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

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

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

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

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

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

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

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

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

Для дополнительной информации о mysqldump см. Раздел 7.4, "Используя mysqldump для Резервных копий".

Синтаксис

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

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

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

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

Синтаксис опции - Алфавитная Сводка

mysqldump поддерживает следующие опции, которые могут быть определены на командной строке или в [mysqldump] и [client] группы файла опции. mysqldump также поддерживает опции для того, чтобы обработать файлы опции, описанные в Разделе 4.2.3.4, "Параметры командной строки, которые Влияют на Обработку Файла опции".

Таблица 4.7. mysqldump Опции

Формат Файл опции Описание Представленный
- "добавьте базу данных отбрасывания" "добавьте базу данных отбрасывания" Добавьте оператор DROP DATABASE перед каждым оператором CREATE DATABASE
- "добавьте таблицу отбрасывания" "добавьте таблицу отбрасывания" Добавьте оператор DROP TABLE перед каждым оператором CREATE TABLE
- "добавьте триггер отбрасывания" "добавьте триггер отбрасывания" Добавьте оператор DROP TRIGGER перед каждым оператором CREATE TRIGGER
- добавлять-блокировки добавлять-блокировки Окружите каждый табличный дамп операторами TABLES И UNLOCK TABLES БЛОКИРОВКИ
- все-базы данных все-базы данных Выведите все таблицы во всех базах данных
- позволять-ключевые-слова позволять-ключевые-слова Позвольте создание имен столбцов, которые являются ключевыми словами
- "примените ведомые операторы" "примените ведомые операторы" Включайте оператор SLAVE prior to CHANGE MASTER ОСТАНОВКИ и ЗАПУСТИТЕ ВЕДОМОЕ УСТРОЙСТВО в конце вывода
- bind-address=ip_address свяжите адресный Используйте указанный сетевой интерфейс, чтобы соединиться с MySQL Server
- комментарии комментарии Добавьте комментарии к файлу дампа
- компактный компактный Произведите более компактный вывод
- compatible=name [имя...] совместимый Произведите вывод, который является более совместимым с другими системами баз данных или с более старыми серверами MySQL
- полный - вставляют полный - вставляют Используйте полные операторы INSERT, которые включают имена столбцов
- создавать-опции создавать-опции Включайте все специфичные для MySQL табличные опции в операторы CREATE TABLE
- базы данных базы данных Выведите несколько баз данных
- отладка [=debug_options] отладка Запишите журнал отладки
- проверка отладки проверка отладки Напечатайте отладочную информацию, когда программа выходит
- информация отладки информация отладки Напечатайте отладочную информацию, память и статистику ЦП, когда программа выходит
- default-auth=plugin default-auth=plugin Плагин аутентификации, чтобы использовать
- default-character-set=charset_name набор символов значения по умолчанию Используйте charset_name в качестве набора символов значения по умолчанию
- "удалите основные журналы" "удалите основные журналы" На главном сервере репликации удалите двоичные журналы после выполнения работы дампа
- отключать-ключи отключать-ключи Для каждой таблицы окружите операторы INSERT операторами, чтобы отключить и включить ключам
- дата дампа дата дампа Включайте дату дампа как "Дамп, завершенный на" комментарии, если - комментарии даются
- ведомое устройство дампа [=value] ведомое устройство дампа Включайте оператор CHANGE MASTER, который перечисляет двоичные координаты журнала ведущего устройства ведомого устройства
- события события События дампа от выведенных баз данных
- расширенный - вставляют расширенный - вставляют Многократная строка использования ВСТАВЛЯЕТ синтаксис, которые включают несколько списков ЗНАЧЕНИЙ
- fields-enclosed-by=string "поля, включенные" Эта опция используется с - опция вкладки и имеет то же самое значение как соответствующий пункт для ДАННЫХ ЗАГРУЗКИ INFILE
- "поля, которых оставляют" "поля, которых оставляют" Эта опция используется с - опция вкладки и имеет то же самое значение как соответствующий пункт для ДАННЫХ ЗАГРУЗКИ INFILE
- fields-optionally-enclosed-by=string "поля, дополнительно включенные" Эта опция используется с - опция вкладки и имеет то же самое значение как соответствующий пункт для ДАННЫХ ЗАГРУЗКИ INFILE
- fields-terminated-by=string "поля, завершенные" Эта опция используется с - опция вкладки и имеет то же самое значение как соответствующий пункт для ДАННЫХ ЗАГРУЗКИ INFILE
- журналы сброса журналы сброса Сбросьте файлы журнала сервера MySQL прежде, чем запустить дамп
- полномочия сброса полномочия сброса Испустите оператор FLUSH PRIVILEGES после дампа mysql базы данных
- справка Сообщение справки дисплея и выход
- шестнадцатеричный блоб шестнадцатеричный блоб Выведите двоичные столбцы, используя шестнадцатеричную нотацию (например, 'abc' становится 0x616263),
- узел узел Узел, чтобы соединить с (IP-адрес или имя узла)
- ignore-error=error [ошибка]... игнорировать-ошибка Проигнорируйте указанные ошибки 5.7.1
- ignore-table=db_name.tbl_name игнорировать-таблица Не выводите данную таблицу
- "включайте основной порт узла" "включайте основной порт узла" Включайте опции MASTER_HOST/MASTER_PORT в оператор CHANGE MASTER, произведенный с - ведомое устройство дампа
- вставьте - игнорируют вставьте - игнорируют Запишите операторы INSERT IGNORE, а не операторы INSERT
- lines-terminated-by=string "строки, завершенные" Эта опция используется с - опция вкладки и имеет то же самое значение как соответствующий пункт для ДАННЫХ ЗАГРУЗКИ INFILE
- "заблокируйте все таблицы" "заблокируйте все таблицы" Заблокируйте все таблицы через все базы данных
- таблицы блокировки таблицы блокировки Заблокируйте все таблицы прежде, чем вывести их
- log-error=file_name ошибка журнала Добавьте предупреждения и ошибки к именованному файлу
- login-path=name Считайте опции пути входа в систему из.mylogin.cnf
- основные данные [=value] основные данные Напишите двоичное имя файла журнала и позицию к выводу
- max_allowed_packet=value max_allowed_packet Максимальная пакетная длина, чтобы передаться к или получить от сервера
- net_buffer_length=value net_buffer_length Размер буфера для TCP/IP и передачи сокета
- без автоматических фиксаций без автоматических фиксаций Включите операторы INSERT для каждой выведенной таблицы в пределах автоматической фиксации НАБОРА = 0 и операторы COMMIT
- "нет не создайте дб" "нет не создайте дб" Эта опция подавляет операторы CREATE DATABASE
- "нет не создайте информацию" "нет не создайте информацию" Не пишите операторы CREATE TABLE, которые воссоздают каждую выведенную таблицу
- без данных без данных Не выводите табличное содержание
- "никакие определенные имена" "никакие определенные имена" То же самое как - набор символов набора пропуска
- без табличных областей без табличных областей Не пишите CREATE LOGFILE GROUP или операторы CREATE TABLESPACE в выводе
- выбрать выбрать Сокращение для - "добавляет таблица отбрасывания" - добавлять-блокировки - создавать-опции - отключать-ключи - расширенный - вставляют - таблицы блокировки - быстрый - набор символов набора.
- порядок-основным порядок-основным Выведите строки каждой таблицы, сортированные ее первичным ключом, или ее первым уникальным индексом
- пароль [=password] пароль Пароль, чтобы использовать, соединяясь с сервером
- канал На Windows соединитесь с сервером, используя именованный канал
- plugin-dir=path plugin-dir=path Каталог, где плагины располагаются
- port=port_num порт Номер порта TCP/IP, чтобы использовать для соединения
- быстрый быстрый Получите строки для таблицы от сервера строка за один раз
- имена кавычки имена кавычки Идентификаторы кавычки в пределах символов обратной галочки
- замена замена Запишите операторы REPLACE, а не операторы INSERT
- result-file=file файл результата Прямой вывод к данному файлу
- подпрограммы подпрограммы Выведите сохраненные подпрограммы (процедуры и функции) от выведенных баз данных
- набор символов набора набор символов набора Добавьте ОПРЕДЕЛЕННЫЕ ИМЕНА default_character_set, чтобы вывести
- set-gtid-purged=value set-gtid-purged Добавить ли НАБОР @@ ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ GTID_PURGED, чтобы вывести
- единственная транзакция единственная транзакция Эта опция проблемы a НАЧИНАЕТ SQL-оператор прежде, чем вывести данные от сервера
- "пропуск добавляет таблицу отбрасывания" "пропуск добавляет таблицу отбрасывания" Не добавляйте оператор DROP TABLE перед каждым оператором CREATE TABLE
- "пропуск добавляет блокировки" "пропуск добавляет блокировки" Не добавляйте блокировки
- комментарии пропуска комментарии пропуска Не добавляйте комментарии к файлу дампа
- компактный пропуском компактный пропуском Не производите более компактный вывод
- "пропуск отключает ключи" "пропуск отключает ключи" Не отключайте ключи
- "пропустите расширенный, вставляют" "пропустите расширенный, вставляют" Выключите расширенный - вставляют
- пропустите - выбирают пропустите - выбирают Выключите опции, установленные - выбирают
- быстрый пропуском быстрый пропуском Не получайте строки для таблицы от сервера строка за один раз
- имена кавычки пропуска имена кавычки пропуска Не заключайте идентификаторы в кавычки
- набор символов набора пропуска набор символов набора пропуска Подавите оператор SET NAMES
- триггеры пропуска триггеры пропуска Не выводите триггеры
- skip-tz-utc skip-tz-utc Выключите tz-utc
- ssl-ca=file_name ssl-приблизительно Путь к файлу, который содержит список доверяемой АВАРИИ SSL
- ssl-capath=dir_name ssl-capath Путь к каталогу, который содержит доверяемые сертификаты CA SSL в формате PEM
- ssl-cert=file_name ssl-свидетельство Имя файла сертификата SSL, чтобы использовать для того, чтобы установить безопасное соединение
- ssl-cipher=cipher_list ssl-шифр Список допустимых шифров, чтобы использовать для шифрования SSL
- ssl-crl=file_name ssl-crl Путь к файлу, который содержит списки аннулированных сертификатов
- ssl-crlpath=dir_name ssl-crlpath Путь к каталогу, который содержит файлы списка аннулированных сертификатов
- ssl-key=file_name ssl-ключ Имя файла ключей SSL, чтобы использовать для того, чтобы установить безопасное соединение
- ssl-verify-server-cert ssl-verify-server-cert Значение Общего названия сервера в его сертификате проверяется против имени хоста, используемого, соединяясь с сервером
- tab=path вкладка Произведите разделенные от вкладки файлы данных
- таблицы таблицы Переопределите - базы данных или-B опция
- триггеры триггеры Дамп инициировал для каждой выведенной таблицы
- tz-utc tz-utc Добавьте НАБОР TIME_ZONE = '+ 00:00' к файлу дампа
- user=user_name пользователь Имя пользователя MySQL, чтобы использовать, соединяясь с сервером
- многословный Многословный режим
- версия Выведите на экран информацию о версии и выход
- где ='where_condition' где Выведите только строки, выбранные данным ГДЕ условие
- xml xml Произведите вывод XML

Опции соединения

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

Можно также установить следующие переменные при использовании --var_name=value синтаксис:

Опции DDL

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

Опции отладки

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

Опции справки

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

Опции интернационализации

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

Опции репликации

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

Опции формата

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

Фильтрация Опций

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

Опции производительности

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

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

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

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

Option Groups

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

Примеры

Сделать резервное копирование всей базы данных:

shell> mysqldump db_name
        > backup-file.sql

Загрузить файл дампа назад в сервер:

shell> mysql db_name < backup-file.sql

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

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

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

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

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

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

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

shell> mysqldump --all-databases >
        all_databases.sql

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

shell> mysqldump --all-databases --single-transaction
        > all_databases.sql

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

Для восстановления момента времени (также известный как "откат вперёд," когда Вы должны восстановить старое резервное копирование и воспроизвести изменения, которые произошли начиная с того резервного копирования), часто полезно повернуть двоичный журнал (см. Раздел 5.2.4, "Двоичный Журнал"), или, по крайней мере, знайте двоичные координаты журнала, которым соответствует дамп:

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

Или:

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

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

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

Ограничения

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

Не рекомендуется восстановить от дампа, сделанного, используя mysqldump к MySQL 5.6.9 или более раннему серверу, у которого есть включенный GTIDs. См. Раздел 16.1.3.4, "Ограничения на Репликацию с GTIDs".

mysqldump никогда не выводит performance_schema база данных.

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

Если Вы встречаетесь с проблемами, поддерживая представления из-за недостаточных полномочий, см. Раздел D.5, "Ограничения на Представления" для обходного решения.