Erstellen von Daten- und Tabellendumps
Mit diesem Dienstprogramm können Sie einen Dump (einen „Momentaufnahme“) des Inhalts einer Datenbank oder einer Gruppe von Datenbanken erstellen, um eine Sicherungskopie anzufertigen oder Daten an einen anderen SQL-Datenbankserver (nicht unbedingt einen MySQL-Server) zu übertragen. Der Dump enthält eine Reihe von SQL-Befehlen zum Erstellen und/oder Befüllen von Tabellen.
Wenn die Sicherungskopie auf dem Server erstellt wird, sollten Sie anstelle des beschriebenen Dienstprogramms mysqlhotcopy verwenden. Siehe Abschnitt See Abschnitt 4.8.6, „mysqlhotcopy, Kopieren von MySQL-Datenbanken und -Tabellen“.
shell> mysqldump [OPTIONS] database [tables] или mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] или mysqldump [OPTIONS] --all-databases [OPTIONS]
Wenn keine Tabellennamen angegeben werden oder die Parameter --databases oder --all-databases verwendet werden, wird ein Dump der gesamten Datenbank (bzw. aller Datenbanken) erstellt.
Eine Liste der von Ihrer spezifischen Version des Dienstprogramms mysqldump unterstützten Optionen erhalten Sie durch Ausführen des Befehls mysqldump --help.
Beachten Sie, dass das Dienstprogramm mysqldump, das ohne die Optionen --quick oder --opt verwendet wird, das gesamte Ergebnis der Abfrage vor dem Erstellen des Dumps in den Speicher lädt. Dies kann Probleme beim Erstellen eines Dumps einer großen Datenbank verursachen.
Beachten Sie, dass Sie die Parameter --opt oder -e nicht verwenden sollten, wenn Sie beabsichtigen, den Dump mit einer neuen Kopie des Programms mysqldump zu erstellen und ihn anschließend auf einem sehr alten MySQL-Server wiederherzustellen.
Das Dienstprogramm mysqldump unterstützt die folgenden Optionen:
--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 Раздел 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, используемого для подключения к хосту.--protocol=(TCP | SOCKET | PIPE | MEMORY)Для указания протокола соединения, который надлежит использовать. Новшество в MySQL 4.1.0.-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Для каждой заданной таблицы создает файл atable_name.sql, содержащий SQLCREATEкоманды для создания таблицы, и файл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Установить значения переменных. Доступные для использования переменные перечислены ниже. В MySQL 4.0 просто используйте--var=option.-v, --verboseРасширенный режим вывода. Вывод более детальной информации о работе программы.-V, --versionВывести информацию о версии и выйти из программы.-w, --where='where-condition'Выполнить дамп только выбранных записей. Обратите внимание, что кавычки обязательны."--where=user='jimf'" "-wuserid>1" "-wuserid<1"
-X, --xmlStellt einen Datenbankdump im XML-Format dar.-x, --first-slaveSperrt alle Tabellen in allen Datenbanken.-O net_buffer_length=#, where # < 16MBei der Erstellung von mehrzeiligen Eingabeoperationen (wie auch bei Verwendung der Parameter --extended-insert oder --opt) wird das Dienstprogramm mysqldump Zeilen mit einer Länge bis zu dem in net_buffer_length angegebenen Wert erzeugen. Bei Erhöhung des Werts dieser Variable muss zudem sichergestellt werden, dass für die Variable max_allowed_packet auf dem MySQL-Server ein Wert größer als der Wert von net_buffer_length festgelegt ist.
