mysqldump, Получение дампов данных и структуры таблицы
Данная утилита позволяет получить дамп (``моментальный снимок'')
содержимого базы данных или совокупности баз для создания резервной копии
или пересылки данных на другой SQL-сервер баз данных (не обязательно
MySQL-сервер). Дамп будет содержать набор команд SQL для создания и/или
заполнения таблиц.
shell> mysqldump [OPTIONS] database [tables]
или mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
или mysqldump [OPTIONS] --all-databases [OPTIONS]
Если не указывать имена таблиц или использовать параметры --databases или
--all-databases, то будет получен дамп базы данных в целом (соответственно
- всех баз данных).
Перечень опций, поддерживаемых вашей конкретной версией утилиты mysqldump,
можно получить, выполнив команду mysqldump --help.
Следует иметь в виду, что утилита mysqldump, используемая без опций
--quick или --opt, перед тем, как сделать дамп результата выборки
информации, загрузит весь результат в память. Это может создать проблемы
при получении дампа большой базы данных.
Учтите, что не следует применять параметры --opt или -e, если вы
собираетесь использовать для получения дампа новую копию программы
mysqldump, а затем воспроизводить его на очень старом MySQL-сервере.
Утилита mysqldump поддерживает следующие опции:
--add-locks
Добавить команды LOCK TABLES перед выполнением и UNLOCK TABLE после
выполнения каждого дампа таблицы (для ускорения доступа к MySQL).
--add-drop-table
Добавить команду DROP TABLE перед каждой командой CREATE TABLE.
-A, --all-databases
Произвести дамп всех баз данных. Аналогично опции --databases с указанием
всех баз данных.
-a, --all
Включить все опции создания объектов, специфичные для MySQL.
--allow-keywords
Разрешить создавать имена столбцов, которые совпадают с ключевыми словами.
Отсутствие конфликтов обеспечивается прибавлением имени таблицы в качестве
префикса к имени каждого столбца.
-c, --complete-insert
Использовать полные команды INSERT (с именами столбцов).
-C, --compress
Использовать сжатие всей информации между клиентом и сервером, если они
оба поддерживают сжатие.
-B, --databases
Выполнить дамп нескольких баз данных. Обратите внимание на разницу в
использовании: в этом случае таблицы не указываются. Все имена аргументов
рассматриваются как имена баз данных. Оператор USE db_name; включается в
вывод перед каждой новой базой данных.
--delayed
Использовать команду INSERT DELAYED при вставке строк.
-e, --extended-insert
Использовать команду INSERT с новым многострочным синтаксисом (повышает
компактность и быстродействие операторов ввода).
-#, --debug[=option_string]
Отслеживать прохождение программы (для отладки).
--help
Вывести справочную информацию и выйти из программы.
--fields-terminated-by=...
--fields-enclosed-by=...
--fields-optionally-enclosed-by=...
--fields-escaped-by=...
--lines-terminated-by=...
Эти опции используются совместно с параметром -T и имеют то же самое
значение, что и соответствующие операторы для LOAD DATA INFILE. См.
раздел See section 6.4.9 Синтаксис оператора LOAD DATA INFILE.
-F, --flush-logs
Записать на диск данные системного журнала из буфера MySQL-сервера перед
началом выполнения дампа.
-f, --force,
Продолжать даже при получении ошибки SQL при выполнении дампа таблицы.
-h, --host=..
Выполнить дамп данных MySQL сервера на указанном хосте. Значение хоста по
умолчанию - localhost.
-l, --lock-tables.
Заблокировать все таблицы перед началом выполнения дампа. Таблицы
блокируются оператором READ LOCAL, чтобы разрешить параллельные записи
для MyISAM-таблиц. Следует отметить, что при выполнении дампа совокупности
баз данных опция --lock-tables блокирует таблицы каждой базы по
отдельности. Таким образом, использование этого параметра не гарантирует,
что таблицы будут логически непротиворечивы в пределах этих баз данных. В
различных базах данных при выполнении дампа таблицы могут находиться в
совершенно разных состояниях.
-K, --disable-keys
Добавляет выражение
/*!40000 ALTER TABLE tb_name DISABLE KEYS */;
и /*!40000 ALTER TABLE tb_name ENABLE KEYS */;
в выводе результата. Это
ускорит загрузку данных на сервер MySQL 4.0, так как индексы создаются
после внесения всех данных.
-n, --no-create-db
В выводе результата выражение CREATE DATABASE /*!32312 IF NOT EXISTS*/
db_name; будет отсутствовать. Данная строка будет добавлена в любом случае
при использовании опций --databases или --all-databases.
-t, --no-create-info
Не записывать информацию о создании таблицы (команда CREATE TABLE).
-d, --no-data
Не записывать информацию из строк таблицы. Это очень полезно для получения
дампа структуры таблицы!
--opt
То же, что и --quick --add-drop-table --add-locks --extended-insert
--lock-tables. Должно дать наиболее быстрый дамп для чтения на
MySQL-сервере.
-pyour_pass, --password[=your_pass]
Используемый пароль при подключении к серверу. Если аргумент =your_pass не
введен, mysqldump предложит ввести пароль.
-P port_num, --port=port_num
Номер порта TCP/IP, используемого для подключения к хосту (применяется при
подсоединении к хостам, отличным от localhost, для которого используются
сокеты Unix ).
-q, --quick
Выводить дамп непосредственно на стандартный вывод stdout без буферизации
запроса. Для этого используется функция mysql_use_result().
-Q, --quote-names
Взять в кавычки имена таблиц и столбцов без символов ``'.
-r, --result-file=...
Прямой вывод указанного файла. Этот опцию следует использовать в MS DOS,
так как она предотвращает преобразование символа новой строки '\n' в
последовательность '\n\r' (новая строка + возврат каретки).
--single-transaction
Данная опция выдает SQL-команду BEGIN перед выполнением дампа данных с
сервера. Наиболее часто используется с InnoDB-таблицамии и уровнем
изоляции транзакций READ_COMMITTED, так как именно в этом режиме можно
получить дамп с непротиворечивым состоянием базы данных после выполнения
команды BEGIN без блокирования каких-либо приложений. Используя эту опцию,
необходимо помнить, что при выполнении дампа только транзакционные таблицы
будут находиться в непротиворечивом состоянии, т.е. некоторые MyISAM- или
HEAP-таблицы при использовании данной опции могут все же изменить свое
состояние. Опция --single-transaction добавлена в версии 4.0.2. Она
является взаимоисключающей по отношению к опции --lock-tables, так как
команда LOCK TABLES прерывает выполнение предыдущей транзакции.
-S /path/to/socket, --socket=/path/to/socket
Файл сокета для подсоединения к localhost (значение хоста по умолчанию).
--tables
Перекрывает параметр --databases (-B).
-T, --tab=path-to-some-directory
Для каждой заданной таблицы создает файл a `table_name.sql', содержащий
SQL CREATE команды для создания таблицы, и файл `table_name.txt' с данными
таблицы. Файл `.txt' имеет формат в соответствии с параметрами --fields-xxx
и --lines--xxx. Примечание: Этот параметр работает только при условии,
что утилита mysqldump запущена на том же компьютере, что и демон mysqld,
причем пользователь/группа, запустившие данный поток mysqld (обычно это
пользователь mysql и группа mysql), должны иметь право
создавать/записывать файл по указанному адресу.
-u user_name, --user=user_name
Имя пользователя MySQL-сервера, используемое при подключении к серверу.
Значением по умолчанию является имя пользователя Unix.
-O var=option, --set-variable var=option
Установить значения переменных. Доступные для использования переменные
перечислены ниже.
-v, --verbose
Расширенный режим вывода. Вывод более детальной информации о работе
программы.
-V, --version
Вывести информацию о версии и выйти из программы.
-w, --where='where-condition'
Выполнить дамп только выбранных записей. Обратите внимание, что кавычки
обязательны.
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"
-X, --xml
Представляет дамп базы данных в виде XML.
-x, --first-slave
Блокирует все таблицы во всех базах данных.
-O net_buffer_length=#, where # < 16M
При создании многострочных операторов ввода (как и в случаях применения
параметров --extended-insert или --opt) утилита mysqldump будет создавать
строки длиной вплоть до указанной в net_buffer_length. При увеличении
значения этой переменной необходимо также убедиться в том, что в
MySQL-сервере для переменной max_allowed_packet указано значение больше,
чем величина net_buffer_length.