Сценарии и утилиты MySQL
При выполнении mysqladmin shutdown через сокет (другими словами, через компьютер с запущенным mysqld ) mysqladmin будет ожидать, пока на сервере MySQL не будет удален файл pid-file (в котором содержится идентификатор процесса pid запущенного сервера), чтобы убедиться, что сервер остановлен должным образом.
Использование mysqlcheck для сопровождения и аварийного восстановления таблиц.
Начиная с версии MySQL 3.23.38, можно применять новый инструмент для проверки и восстановления MyISAM -таблиц. Отличие mysqlcheck от myisamchk состоит в том, что утилита mysqlcheck должна использоваться при работающем сервере mysqld, в то время как myisamchk — при остановленном. Преимущество же заключается в том, что теперь не нужно останавливать сервер для проверки или восстановления таблиц.
Утилита mysqlcheck использует соответствующие команды MySQL-сервера CHECK, REPAIR, ANALYZE и OPTIMIZE удобным для пользователя образом.
Существует три альтернативных способа запуска mysqlcheck:
shell> mysqlcheck [OPTIONS] database [tables] shell> mysqlcheck [OPTIONS] -databases DB1 [DB2 DB3...] shell> mysqlcheck [OPTIONS] -all-databases
Таким образом, утилита может использоваться подобно mysqldump по отношению к выбранным базам данных и таблицам.
В сравнении с другими клиентами утилита mysqlcheck имеет следующую отличительную особенность: установка поведения по умолчанию (проверка таблиц, -с ) может быть изменена путем переименования исполняемого файла утилиты. Итак, чтобы получить инструмент, восстанавливающий таблицы по умолчанию, просто скопируйте mysqlcheck с новым именем, mysqlrepair, или, наоборот, сделайте символьную ссылку на mysqlcheck и обозначьте ее как mysqlrepair. Если теперь запустить mysqlrepair, то утилита по умолчанию будет восстанавливать таблицы.
mysqldump, получение дампов данных и структуры таблицы
Данная утилита позволяет получить дамп ("моментальный снимок") содержимого базы данных или совокупности баз для создания резервной копии или пересылки данных на другой SQL-сервер баз данных (не обязательно MySQL-сервер). Дамп будет содержать набор команд SQL для создания и/или заполнения таблиц.
Если же резервная копия создается на сервере, то вместо описываемой утилиты следует использовать mysqlhotcopy.
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.
-
-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
Для каждой заданной таблицы создает файл 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
Установить значения переменных. Доступные для использования переменные перечислены ниже. В MySQL 4.0 просто используйте -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.