RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
YandexMoney: 
41001198119846 
E-gold:
5128052

12 Клиентские скрипты и утилиты MySQL

12.1 Обзор клиентских скриптов и утилит

Все клиенты MySQL, которые связываются с сервером, используя библиотеку mysqlclient, применяет следующие системные переменные:

ИмяОписание
MYSQL_UNIX_PORTСокет по умолчанию. Используется для связи с localhost
MYSQL_TCP_PORTTCP/IP порт по умолчанию
MYSQL_PWDПароль по умолчанию
MYSQL_DEBUGОпции для трассировки, если используется режим отладки
TMPDIRКаталог для временных файлов и таблиц

Применение MYSQL_PWD опасно. Подробности в разделе "2.1 Соединение с сервером".

Клиент mysql использует файл, именованный в системной переменной MYSQL_HISTFILE, чтобы сохранить хронологию командной строки. Значение по умолчанию для файла хронологии: $HOME/.mysql_history, здесь $HOME представляет собой значение системной переменной HOME. Подробности в разделе "Приложение 2. Переменные окружения ".

Все программы MySQL имеют много различных параметров. Однако, каждая программа MySQL обеспечивает опцию --help, которую Вы можете использовать, чтобы получить полное описание различных параметров программы. Например, mysql --help.

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

Список ниже кратко описывает программы MySQL:

myisamchk
Утилита, чтобы описывать, проверять, оптимизировать и ремонтировать MySQL таблицы. Потому, что myisamchk имеет много функций, он описан в собственной главе. Подробности в разделе "4 Администрирование СУБД MySQL".
make_binary_distribution
Делает двоичный выпуск из откомпилированного MySQL. Готовая версия может быть выложена по FTP в каталог /pub/mysql/Incoming на машине support.mysql.com для удобства других пользователей MySQL.
msql2mysql
Скрипт оболочки, который преобразовывает программы mSQL в MySQL. Не обрабатывает все случаи, но дает хорошее начало при преобразовании.
mysqlaccess
Скрипт, который проверяет привилегии доступа для компьютера, пользователя и комбинации баз данных.
mysqladmin
Утилита для выполнения административных операций, типа создания или удаления баз данных, перезагрузки таблиц предоставления, сброса таблиц на диск и повторного открытия журналов. Программа mysqladmin может также использоваться, чтобы узнавать версию, данные о процессах и информацию о текущем состоянии сервера.
mysqlbug
Скрипт для сообщения об ошибках MySQL. Этот скрипт всегда должен использоваться, когда готовится сообщение об ошибке в список рассылки MySQL.
mysqld
Сервер SQL. Должен всегда работать.
mysqldump
Сбрасывает базы данных MySQL в файл как инструкции SQL или как отделяемые табуляцией текстовые файлы. Подробности в разделе "12.5 mysqldump, Сброс в дамп структур таблицы и ее данных".
mysqlimport
Импортирует текстовые файлы в соответствующие таблицы, используя LOAD DATA INFILE. Подробности в разделе "12.7 mysqlimport, импортирование данных из текстовых файлов".
mysqlshow
Отображает подробную сводную информацию относительно баз данных, таблиц, столбцов и их индексов.
mysql_install_db
Создает таблицы предоставления привилегий MySQL с заданными по умолчанию привилегиями. Это обычно выполняется только однажды, при первой установке MySQL на систему.
replace
Утилита, которая используется msql2mysql, но имеет более общую применимость. replace меняет строки в файлах или на стандартном вводе. Использует специальный алгоритм, чтобы сначала соответствовать более длинным строкам. Может использоваться, чтобы менять строки. Например, эта команда меняет a и b в файлах:
shell> replace a b b a -- file1 file2 ...

12.2 Инструмент командной строки

mysql простая SQL оболочка (с возможностями GNU readline). Это поддерживает интерактивное и не интерактивное использование. Когда используется в интерактивном режиме, результаты запроса будут представлены в формате ASCII-таблицы. Когда используется в не интерактивном режиме (например, как фильтр), результат будет выведен в разделяемом табуляциями формате. Выходной формат может быть изменен, используя параметры командной строки. Вы можете выполнять скрипты так:

shell> mysql database < script.sql > output.tab

Если Вы имеете проблемы из-за недостаточной памяти у клиента, используйте опцию --quick! Это вынуждает клиент mysql использовать mysql_use_result() вместо вызова mysql_store_result(), чтобы отыскать набор результатов.

Использование mysql очень просто. Только запустите его следующим образом: mysql database или mysql --user=user_name --password=your_password database. Напечатайте инструкцию SQL, закончите ее `;', `\g' или `\G' и нажмите RETURN/ENTER.

mysql поддерживает следующие параметры:

-?, --help
Отобразить справку и завершится.
-A, --no-auto-rehash
Никакого автоматического перехеширования. Каждый должен использовать 'rehash', чтобы получить завершение поля и таблицу. Это дает более быстрый запуск клиента mysql.
-B, --batch
Печатать результаты, используя табуляцию как разделитель, каждая строка таблицы начинается на новой строке вывода. Не использует файл хронологии.
--character-sets-dir=...
Каталог, где размещены наборы символов.
-C, --compress
Использовать сжатие в протоколе клиент-сервер.
-#, --debug[=...]
Файл регистрации отладки. Значение по умолчанию 'd:t:o,/tmp/mysql.trace'.
-D, --database=...
База данных, которую надлежит использовать. Это, главным образом, полезно в файле my.cnf.
--default-character-set=...
Заданный по умолчанию набор символов.
-e, --execute=...
Выполнить команду и завершиться. Вывод как в случае --batch.
-E, --vertical
Печатать вывод запроса (строки) вертикально. Без этой опции Вы можете также достичь такого вывода, заканчивая команду сочетанием \G.
-f, --force
Продолжить, даже если мы получаем ошибку SQL.
-g, --no-named-commands
Именованные команды заблокированы. Используйте форму только \*. Можно применять именованные команды только в начале строки, оканчивающейся точкой с запятой (;). Начиная с Version 10.9, клиент теперь запускается с этой опцией по умолчанию! С опцией -g, длинный формат команд, однако, все еще будет работать из первой строки.
-G, --enable-named-commands
Именованные команды допускаются. Длинный формат команд позволяются также как сокращение команд \*.
-i, --ignore-space
Игнорировать пробелы после имен функций.
-h, --host=...
Соединиться с данным компьютером.
-H, --html
Производить вывод HTML.
-L, --skip-line-numbers
Не писать номер строки для ошибок. Полезно, когда надо сравнить результирующие файлы с ошибками.
--no-pager
Отключить pager и выводить наstdout. Подробности в интерактивной справке (\h).
--no-tee
Отключить outfile. Подробности в интерактивной справке (\h).
-n, --unbuffered
Сбрасывать буфер после каждого запроса.
-N, --skip-column-names
Не писать имена столбцов в результатах.
-O, --set-variable var=option
Задать переменной значение. Список переменных доступен через --help.
-o, --one-database
Модифицировать только заданную по умолчанию базу данных. Это полезно для пропуска модификаций другой базы данных в файле регистрации модификации.
--pager[=...]
Тип вывода. Значение по умолчанию: Ваша переменная окружения PAGER. Допустимые значения: less, more, cat [> filename], etc. Подробности в интерактивной справке (\h). Эта опция не работает в пакетном режиме. Pager работает только в UNIX.
-p[password], --password[=...]
Пароль, чтобы использовать при соединении с сервером. Если пароль не задан в командной строке, Вы будете запрошены относительно него. Обратите внимание, что, если Вы используете короткую форму -p, Вы не можете иметь пробелов между этой опцией и паролем.
-P --port=...
TCP/IP порт, чтобы использовать для подключения.
-q, --quick
Не кэшировать результат, печатать его строка в строку. Это может замедлять сервер, если вывод приостановлен. Не использует файл хронологии.
-r, --raw
Писать значения столбца без преобразования управляющих символов. Использован в режиме --batch.
-s, --silent
Быть более тихим.
-S --socket=...
Файл сокета, который надо использовать для подключения.
-t --table
Вывод в формате таблицы. Это задано по умолчанию в не пакетном режиме.
-T, --debug-info
Печатать информацию отладки при выходе.
--tee=...
Добавить все в outfile. Не работает в пакетном режиме.
-u, --user=#
Пользователь для входа в систему, если не текущий пользователь.
-U, --safe-updates[=#], --i-am-a-dummy[=#]
Позволить только UPDATE и DELETE, которые используют ключи. Вы можете сбрасывать эту опцию, если Вы имеете ее в Вашем файле my.cnf, используя параметр --safe-updates=0.
-v, --verbose
Более подробный вывод (-v -v -v дает выходной формат таблицы).
-V, --version
Вывести информацию о версии и завершиться.
-w, --wait
Ждать и повторять попытки связаться, если подключение свалилось.

Вы можете также устанавливать следующие переменные через -O или --set-variable:

Имя переменнойЗначение по умолчаниюОписание
connect_timeout0Число секунд перед завершением подключения по тайм-ауту.
max_allowed_packet16777216Максимальная длина пакетов для обмена с сервером.
net_buffer_length16384Буфер для связи через сокет или TCP/IP.
select_limit1000Автоматическое ограничение для SELECT при использовании --i-am-a-dummy
max_join_size1000000Автоматическое ограничение для строк в объединении при использовании --i-am-a-dummy.

Если Вы напечатаете 'help' в командной строке, mysql распечатает команды, которые он поддерживает:

mysql> help

MySQL commands:
help    (\h)    Display this text.
?       (\h)    Synonym for `help'.
clear   (\c)    Clear command.
connect (\r)    Reconnect to the server. Optional arguments are db and host.
edit    (\e)    Edit command with $EDITOR.
ego     (\G)    Send command to mysql server, display result vertically.
exit    (\q)    Exit mysql. Same as quit.
go      (\g)    Send command to mysql server.
nopager (\n)    Disable pager, print to stdout.
notee   (\t)    Don't write into outfile.
pager   (\P)    Set PAGER [to_pager]. Print the query results via PAGER.
print   (\p)    Print current command.
quit    (\q)    Quit mysql.
rehash  (\#)    Rebuild completion hash.
source  (\.)    Execute a SQL script file. Takes a file name as an argument.
status  (\s)    Get status information from the server.
tee     (\T)    Set outfile [to_outfile]. Append everything into given outfile.
use     (\u)    Use another database. Takes database name as argument.

Внимание: pager работает только в UNIX.

Команда status дает Вам некоторую информацию относительно подключения и сервера, который Вы используете. Если Вы работаете в режиме --safe-updates, status будет также печатать значения для переменных mysql, которые воздействуют на Ваши запросы.

Полезная опция запуска для новичков (появилась в MySQL Version 3.23.11): --safe-updates (или --i-am-a-dummy для пользователей, которые скомандовали DELETE FROM table_name, но забыли указать предложение WHERE). При использовании этой опции, mysql посылает следующую команду серверу MySQL при открытии подключения:

SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=#select_limit#,
    SQL_MAX_JOIN_SIZE=#max_join_size#"

Здесь #select_limit# и #max_join_size# являются переменными, которые могут быть заданы в командной строке mysql.

Эффект вышеупомянутой команды:

  • Вам не позволяют давать инструкции UPDATE или DELETE, если Вы не имеете ограничения ключа в части WHERE. Можно, однако, выполнить UPDATE/DELETE, используя слово LIMIT:
    UPDATE table_name SET not_key_column=# WHERE not_key_column=# LIMIT 1;
    
  • Все большие результаты автоматически ограничены строками #select_limit#.
  • SELECT, который, вероятно, должен будет исследовать больше, чем #max_join_size комбинаций строк, будет прерван.

Некоторые полезные советы относительно применения клиента mysql:

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

mysql> select * from mails where length(txt) < 300 limit 300,1\G
*************************** 1. row ***************************
  msg_nro: 3068
     date: 2000-03-01 23:29:50
time_zone: +0200
mail_from: Monty
    reply: monty@no.spam.com
  mail_to: "Thimble Smith" <tim@no.spam.com>
      sbj: UTF-8
      txt: >>>>> "Thimble" == Thimble Smith writes:

Thimble> Hi. I think this is a good idea. Is anyone familiar with
Thimble> UTF-8 or Unicode? Otherwise I'll put this on my TODO list
Thimble> and see what happens.

Yes, please do that.

Regards,
Monty
     file: inbox-jani-1
     hash: 190402944
1 row in set (0.09 sec)
  • Для регистрации Вы можете использовать опцию tee. Режим tee может быть начат с помощью опции --tee=... или из командной строки в интерактивном режиме с помощью команды tee. Все данные, отображаемые на экране, будут также добавляться в заданный файл. Это может быть очень полезно для отладки. Режим может быть заблокирован из командной строки командой notee. Выполнение tee второй раз снова начинает регистрировать вывод. Без параметра будет использоваться предыдущий файл. Обратите внимание, что tee сбрасывает результаты в файл после каждой команды прежде, чем появляется командная строка.
  • Просмотр или поиск результатов в интерактивном режиме в UNIX с помощью less, more или любой другой подобной программы, является теперь возможным с опцией --pager[=...]. Без параметра клиент mysql будет искать системную переменную PAGER и соответственно устанавливать свой параметр pager. Этот режим может быть запущен из интерактивной командной строки командой pager и заблокирован командой nopager. Команда факультативно берет параметр, и pager будет установлен в заданное им значение. Команда pager может быть вызвана без параметра, но это требует, чтобы использовалась опция --pager, или pager будет значением по умолчанию (stdout). pager работает только в UNIX, так как это использует функцию popen(), которая не существует в Windows. Под ОС Windows опция tee может использоваться вместо этого, хотя она не может быть столь же удобна, как pager в некоторых ситуациях.
  • Несколько советов относительно pager: Вы можете использовать его, чтобы писать в файл:
    mysql> pager cat > /tmp/log.txt
    
    И результаты будут переданы только в этот файл. Вы можете также передавать любые параметры для программ, которые Вы хотите использовать с pager:
    mysql> pager less -n -i -S
    
    Из вышеупомянутого обратите внимание на опцию '-S'. Вы можете посчитать ее очень полезной при просмотре результатов. Попробуйте опцию с горизонтальным выводом (команды заканчиваются на '\g' или ';') и с вертикальным выводом (команды заканчиваются на '\G'). Иногда очень широкий набор результатов должен быстро читаться с экрана, с опцией -S и программой less Вы сможете просмотреть результаты внутри интерактивного less слева направо без строк, более длинных, чем Ваш экран. Это может сделать результат намного более читаемым. Вы можете переключать режим внутри интерактивного less с помощью '-S'. Подробности в описании на 'h'.
  • Вы можете объединять очень сложные способы обрабки результатов, например, следующее пошлет результаты двум файлам в двух различных каталогах, на двух различных жестких дисках, /dr1 и /dr2, и на экран через less:
    mysql> pager cat|tee /dr1/tmp/res.txt|tee /dr2/tmp/res2.txt| \
                     less -n -i -S
    
  • Вы можете также объединять две функции: включить tee, pager установить на 'less', и Вы будете способны просмотреть результаты в unix 'less' и все еще копировать весь вывод в файл. Различие между UNIX tee, используемом с pager и клиентом mysql то, что встроенный режим tee работает, даже если Вы не имеете UNIX tee.

12.3 mysqladmin, Администрирование сервера MySQL

Утилита для выполнения административных операций. Синтаксис:

shell> mysqladmin [OPTIONS] command [command-option] command ...

Вы можете получить список параметров, которые Ваша версия mysqladmin поддерживает, выполняя mysqladmin --help.

Текущая версия mysqladmin поддерживает следующие команды:

create databasename
Создать новую базу данных.
drop databasename
Удалить базу данных и все таблицы.
extended-status
Дает расширенное сообщение состояния сервера.
flush-hosts
Сбрасывает все кэшируемые хосты.
flush-logs
Сбрасывает все протоколы.
flush-tables
Сбрасывает все таблицы на диск.
flush-privileges
Перезагружает таблицы предоставления привилегий (то же, что и reload).
kill id,id,...
Уничтожает поток mysql.
password
Устанавливает новый пароль. Изменяет старый пароль на новый.
ping
Проверяет, является ли mysqld действующим.
processlist
Показывает список активных потоков сервера.
reload
Перезагружает таблицы предоставления привилегий
refresh
Сбрасывает на диск все таблицы и открытые файлы протоколов.
shutdown
Завершает работу сервера.
slave-start
Запускает подчиненный процесс репликации.
slave-stop
Завершает подчиненный процесс репликации.
status
Дает короткое сообщение состояния сервера.
variables
Печатает доступные переменные.
version
Выдает краткую информацию о версии сервера.

Все команды могут быть сокращены к их уникальному префиксу. Например:

shell> mysqladmin proc stat
+----+-------+-----------+----+-------------+------+-------+------+
| Id | User  | Host      | db | Command     | Time | State | Info |
+----+-------+-----------+----+-------------+------+-------+------+
| 6  | monty | localhost |    | Processlist | 0    |       |      |
+----+-------+-----------+----+-------------+------+-------+------+
Uptime: 10077  Threads: 1  Questions: 9  Slow queries: 0  Opens: 6  Flush tables: 1  Open tables: 2  Memory in use: 1092K  Max memory used: 1116K

Результат команды mysqladmin status имеет следующие столбцы:

UptimeЧисло секунд, которые прошли с момента запуска сервера
ThreadsЧисло активных потоков (клиентов)
QuestionsЧисло запросов от клиентуры с тех пор, как mysqld был запущен.
Slow queriesЗапросы, которые заняли больше, чем long_query_time секунд.
OpensСколько таблиц открылись в mysqld.
Flush tablesСколько выполнено команд flush ..., refresh и reload.
Open tablesЧисло таблиц, которые открыты СЕЙЧАС.
Memory in useПамять, распределенная непосредственно кодом mysqld (доступно только, когда MySQL компилируется с опцией --with-debug=full).
Max memory usedМаксимальная память, распределенная непосредственно кодом mysqld (доступно только, когда MySQL компилируется с опцией --with-debug=full).

Если Вы делаете myslqadmin shutdown на сокете (другими словами, на компьютере, где запущен mysqld), mysqladmin будет ждать, пока не будет удален MySQL pid-file, чтобы гарантировать, что сервер mysqld был завершен правильно.

12.4 Использование mysqlcheck для поддержания таблиц и восстановления

Начиная с MySQL version 3.23.38, Вы можете использовать новый инструмент для проверки и ремонта таблиц MyISAM. Отличие от 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

mysqlcheck имеет специальное свойство, сравнимое с другой клиентурой: заданное по умолчанию поведение при проверке таблиц (-c) может быть изменено переименованием. Так, если Вы хотите иметь инструмент для ремонта таблиц по умолчанию, Вы должны только скопировать mysqlcheck под именем mysqlrepair или создать символическую связь mysqlrepair.

Имена, которые Вы можете использовать, чтобы изменить заданное по умолчанию поведение mysqlcheck:

mysqlrepair:   По умолчанию опция -r
mysqlanalyze:  По умолчанию опция -a
mysqloptimize: По умолчанию опция -o

Параметры, доступные для mysqlcheck, перечислены здесь, пожалуйста, проверьте, что Ваша версия поддерживает вызов mysqlcheck --help.

-A, --all-databases
Проверить все базы данных. Это будет то же самое, что и --databases с выбором всех баз данных.
-1, --all-in-1
Вместо того, чтобы делать один запрос для каждой таблицы, выполнить все запросы в одном запросе отдельно для каждой базы данных. Имена таблиц будут переданы в списке через запятую.
-a, --analyze
Анализировать данные таблицы.
--auto-repair
Если проверяемая таблица разрушена, автоматически исправить ее. Восстановление будет выполнено после того, как все таблицы проверятся.
-#, --debug=...
Файл регистрации отладки. Часто это 'd:t:o,filename'.
--character-sets-dir=...
Каталог, где искать наборы символов.
-c, --check
Проверить таблицу на ошибки.
-C, --check-only-changed
Проверить только те таблицы, которые изменились с последней проверки или не были закрыты правильно.
--compress
Использовать сжатие в протоколе клиент-сервер.
-?, --help
Отобразить сообщение справки.
-B, --databases
Проверять несколько баз данных. Обратите внимание на различие в использовании: в этом случае никакие таблицы не даны. Все параметры будут расценены как имена баз данных.
--default-character-set=...
Заданный по умолчанию набор символов.
-F, --fast
Проверить только те таблицы, которые не были закрыты правильно.
-f, --force
Продолжить, даже если мы получаем sql-ошибку.
-e, --extended
Если Вы используете эту опцию с CHECK TABLE, это гарантирует, что таблица на 100% непротиворечива, но займет длительное время. Если Вы используете эту опцию с REPAIR TABLE, она выполнит расширенный ремонт таблицы, который может занять немало времени и породить много строк мусора в таблице!
-h, --host=...
Связаться с указанным хостом.
-m, --medium-check
Быстрее, чем extended-check, но находит только 99.99% всех ошибок. Режим должен быть достаточно хорошим для большинства случаев.
-o, --optimize
Оптимизировать таблицу.
-p, --password[=...]
Пароль, чтобы использовать при соединении с сервером. Если пароль не задан, он будет запрошен.
-P, --port=...
Номер порта, который надлежит использовать для подключения.
-q, --quick
Если Вы используете эту опцию с CHECK TABLE, это не дает просматривать строки, чтобы проверить неправильные связи. Это самая быстрая проверка. Если Вы используете эту опцию с REPAIR TABLE, ремонту будет подвергнуто только индексное дерево. Это самый быстрый метод ремонта для таблицы.
-r, --repair
Может выправить почти все, что угодно, за исключением уникальных ключей, которые стали не уникальными.
-s, --silent
Выводить только сообщения об ошибках.
-S, --socket=...
Файл сокета, который надо использовать для подключения.
--tables
Отменяет опцию --databases (-B).
-u, --user=#
Пользователь для входа в систему, если не текущий пользователь.
-v, --verbose
Печатать информацию относительно различных стадий.
-V, --version
Вывести информацию о версии.

12.5 mysqldump, Сброс в дамп структуры таблицы и ее данных

Утилита позволяет сбросить в дамп одну или несколько баз данных для резервирования или транспортировки на другой сервер SQL (необязательно MySQL). Дамп будет содержать инструкции SQL, чтобы создать и заполнять таблицу данными.

Если Вы делаете копию на сервер, Вы должны рассмотреть использование вместо этой утилиты mysqlhotcopy. Подробности в разделе "12.6 mysqlhotcopy, копирование баз данных и таблиц MySQL".

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, mysqldump загрузит целый набор результатов в память перед дампингом. Это будет, вероятно, проблемой, если Вы обрабатываете большую базу данных.

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

mysqldump поддерживает следующие параметры:

--add-locks
Добавить LOCK TABLES перед и UNLOCK TABLE после каждого дампа таблицы, чтобы получить быстрые вставки в MySQL.
--add-drop-table
Добавить drop table перед каждой инстукцией создания.
-A, --all-databases
Дамп всех баз данных. Это будет то же самое, что и --databases со всеми выбранными базами данных.
-a, --all
Включить все MySQL-специфичные параметры create.
--allow-keywords
Позволить создание имен столбцов, которые являются ключевыми словами. Это реализовано путем приписывания имен столбцов к имени таблицы.
-c, --complete-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. Подробности в разделе "8.9 Синтаксис LOAD DATA INFILE".
-F, --flush-logs
Сбросить файл протокола сервера MySQL на диск перед стартом дампа.
-f, --force,
Продолжать, даже если мы получаем SQL ошибку в течение дампа таблицы.
-h, --host=...
Сбросить данные в дамп с сервера MySQL на указанном хосте. Заданный по умолчанию хост: localhost.
-l, --lock-tables
Блокировать все таблицы перед стартом дампа. Таблицы будут заблокированы с опцией READ LOCAL, чтобы позволить параллельные вставки в случае таблиц MyISAM.
-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', Вы будете запрошены относительно ввода пароля.
-P port_num, --port=port_num
TCP/IP порт, чтобы использовать для соединения с удаленным компьютером. Это используется для подключений к системам, отличным от localhost, там применяются Unix-сокеты.
-q, --quick
Не буферизовать запрос, дамп непосредственно направляется на stdout. Для этого используется вызов mysql_use_result().
-r, --result-file=...
Прямой вывод в заданный файл. Эта опция должна использоваться в MSDOS, поскольку не превращает '\n' в '\n\r'.
-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, который содержит данные для каждой указанной таблицы. ОБРАТИТЕ ВНИМАНИЕ: Это работает только, если mysqldump выполнен на той же самой машине, что и сервер mysqld. Формат файла .txt соответствует опциям --fields-xxx и --lines--xxx.
-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"
-O net_buffer_length=#, where # < 16M
При создании мультистрочных инструкций (как с опцией --extended-insert или --opt), mysqldump создаст строки длины до net_buffer_length. Если Вы увеличиваете эту переменную, Вы должны также гарантировать, что переменная max_allowed_packet в сервере MySQL больше, чем net_buffer_length.

Наиболее нормальное использование mysqldump: создание копий целых баз данных. Подробности в разделе "4.1 Резервирование баз данных":

mysqldump --opt database > backup-file.sql

Вы можете прочитать этот файл обратно в MySQL:

mysql database < backup-file.sql

или:

mysql -e "source /patch-to-backup/backup-file.sql" database

Однако, утилита также очень полезна, когда надо заполнить другой сервер MySQL информацией из базы данных:

mysqldump --opt database|mysql --host=remote-host -C database

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

mysqldump --databases database1 [database2 database3...] > my_databases.sql

Если требуются все базы данных, можно использовать:

mysqldump --all-databases > all_databases.sql

12.6 mysqlhotcopy, копирование баз данных и таблиц MySQL

mysqlhotcopy представляет собой perl-скрипт, который использует LOCK TABLES, FLUSH TABLES и cp или scp, чтобы быстро сделать копию базы данных. Это самый быстрый способ сделать копию с базы данных или одиночной таблицы, но это может быть выполнено только на той же самой машине, где находятся каталоги баз данных.

mysqlhotcopy db_name [/path/to/new_directory]
mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory
mysqlhotcopy db_name./regex/

mysqlhotcopy поддерживает следующие параметры:

-?, --help
Отобразить экран справки.
-u, --user=#
Пользователь для входа в систему.
-p, --password=#
Пароль для входа в систему.
-P, --port=#
Порт, чтобы использовать при соединении с локальным сервером.
-S, --socket=#
Сокет, который надо использовать при соединении с локальным сервером.
--allowold
Не прерывать процесс копирования, если файл-адресат уже существует (переименовать его в его же имя с добавлением суффикса _old).
--keepold
Не удалять предыдущего (теперь переименованного) адресата, когда процесс копирования будет выполнен.
--noindices
Не включать полные индексные файлы в копию, чтобы сделать копию меньше. Индексы могут позже быть восстановлены с помощью myisamchk -rq.
--method=#
Метод для получения копии (cp или scp).
-q, --quiet
Сообщать только об ошибках.
--debug
Включить режим отладки.
-n, --dryrun
Только сообщать о действиях, но не выполнять их.
--regexp=#
Копировать все базы данных с именами, соответствующими regexp.
--suffix=#
Суффикс для добавления к именам скопированных баз данных.
--checkpoint=#
Вставить запись контрольной точки в определенный db.table.
--flushlog
Сбросить протоколы на диск при блокировке таблиц.
--tmpdir=#
Временный каталог (вместо /tmp).

Вы можете использовать perldoc mysqlhotcopy, чтобы получить более полную документацию для mysqlhotcopy.

mysqlhotcopy читает группы [client] и [mysqlhotcopy] из файлов опций.

Чтобы выполнить mysqlhotcopy, Вы нуждаетесь в доступе к резервному каталогу для записи, в привилегии SELECT для таблиц, которые Вы собираетесь копировать, и в привилегии MySQL Reload, чтобы выполнить команду FLUSH TABLES.

12.7 mysqlimport, импорт данных из текстовых файлов

mysqlimport интерфейс командной строки к инструкции SQL LOAD DATA INFILE. Большинство параметров mysqlimport непосредственно соответствует тем же самым параметрам LOAD DATA INFILE. Подробности в разделе "8.9 Синтаксис LOAD DATA INFILE ".

mysqlimport вызывается подобно этому:

shell> mysqlimport [options] database textfile1 [textfile2....]

Для каждого текстового файла, указанного в командной строке, mysqlimport отделяет любое расширение от имени файла и использует результат, чтобы определить, в которую таблицу импортировать содержание файла. Например, файлы с именами patient.txt, patient.text и patient будут все вместе импортированы в одну таблицу patient.

mysqlimport поддерживает следующие параметры:

-c, --columns=...
Эта опция берет разделяемый запятыми список имен полей как параметр. Он используется, чтобы создать соответствующую команду LOAD DATA INFILE, которая затем будет передана MySQL. Подробности в разделе "8.9 Синтаксис LOAD DATA INFILE ".
-C, --compress
Сжать всю информацию, передаваемую между клиентом и сервером.
-#, --debug[=option_string]
Использовать трассировку программы (для отладки).
-d, --delete
Очистить таблицу перед импортированием в нее текстового файла.
--fields-terminated-by=...
--fields-enclosed-by=...
--fields-optionally-enclosed-by=...
--fields-escaped-by=...
--lines-terminated-by=...
Эти параметры имеют то же самое значение, что и соответствующие предложения для LOAD DATA INFILE. Подробности в разделе "8.9 Синтаксис LOAD DATA INFILE ".
-f, --force
Игнорировать ошибки. Например, если таблица для текстового файла не существует, продолжить обрабатывать все оставшиеся файлы. Без --force mysqlimport прерывает работу, если нужная таблица не существует.
--help
Отобразить экран справки.
-h host_name, --host=host_name
Импортировать данные на сервер MySQL на указанном компьютере. Заданный по умолчанию компьютер: localhost.
-i, --ignore
Подробности в описании для опции --replace.
-l, --lock-tables
Блокировать ВСЕ таблицы на запись перед обработкой любых текстовых файлов. Это гарантирует, что все таблицы синхронизированы.
-L, --local
Читать входные файл с клиента. По умолчанию считается, что текстовые файлы хранятся на сервере, если Вы соединяетесь с хостом localhost (который является заданным по умолчанию компьютером).
-pyour_pass, --password[=your_pass]
Пароль, чтобы использовать при соединении с сервером. Если Вы не определяете часть =your_pass, mysqlimport запросит Вас относительно пароля.
-P port_num, --port=port_num
Порт TCP/IP, чтобы использовать для соединения с сервером. Это используется для подключений к системам, отличным от localhost, там применены сокеты Unix.
-r, --replace
Опции --replace и --ignore контролируют обработку управления параметров входных записей, которые дублируют существующие записи на уникальных значениях ключа. Если Вы определяете --replace, новые строки заменят существующие, которые имеют то же самое уникальное значение ключа. Если Вы определяете --ignore, они будут пропущены. Если Вы не определяете никакой опции вообще, происходит ошибка, когда найдено двойное значение ключа, а остальная часть текстового файла игнорируется.
-s, --silent
Тихий режим работы. На вывод подается информация только тогда, когда происходят ошибки в работе.
-S /path/to/socket, --socket=/path/to/socket
Файл сокета, чтобы использовать при соединении с localhost (является заданным по умолчанию компьютером).
-u user_name, --user=user_name
MySQL-пользователь под именем которого надо соединяться с сервером. Значение по умолчанию: Ваше Unix-имя входа в систему.
-v, --verbose
Подробный режим. Выводит большее количество информации относительно того, что программа делает.
-V, --version
Выводит информацию о версии.

Имеется типовой образец выполнения mysqlimport:

$ mysql --version
mysql  Ver 9.33 Distrib 3.22.25, for pc-linux-gnu (i686)
$ uname -a
Linux xxx.com 2.2.5-15 #1 Mon Apr 19 22:21:09 EDT 1999 i586 unknown
$ mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
$ ed
a
100     Max Sydow
101     Count Dracula
.
w imptest.txt
32
q
$ od -c imptest.txt
0000000   1   0   0  \t   M   a   x       S   y   d   o   w  \n   1   0
0000020   1  \t   C   o   u   n   t       D   r   a   c   u   l   a  \n
0000040
$ mysqlimport --local test imptest.txt
test.imptest: Records: 2  Deleted: 0  Skipped: 0  Warnings: 0
$ mysql -e 'SELECT * FROM imptest' test
+------+---------------+
| id   | n             |
+------+---------------+
|  100 | Max Sydow     |
|  101 | Count Dracula |
+------+---------------+

12.8 Показ баз данных таблиц и столбцов

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

Программой mysql Вы можете получать ту же самую информацию командой SHOW. Подробности в разделе "4.10 Синтаксис SHOW".

mysqlshow вызывается подобно этому:

shell> mysqlshow [OPTIONS] [database [table [column]]]
  • Если никакая база данных не задана, показываются все базы данных.
  • Если никакая таблица не задана, показываются все таблицы в базе данных.
  • Если никакой столбец не задан, показываются все столбцы и типы столбцов в таблице, соответствующие запросу.

Обратите внимание, что в более новых версиях MySQL, Вы только видите те базы данных/таблицы/столбцы, для которых Вы имеете некоторые привилегии.

Если последний параметр содержит подстановочные знаки оболочки или SQL (*, ?, % или _), показывается только то, что согласовано групповым символом. Это может вызвать некоторый беспорядок, когда Вы пробуете отображать столбцы для таблицы с символом _ в имени, поскольку в этом случае mysqlshow показывает Вам имена, соответствующие образцу. Это легко устранимо добавлением в конце командной строки символа % (как отдельный параметр).

12.9 perror, объяснение кодов ошибок

perror может использоваться, чтобы печатать сообщения об ошибках. perror может вызываться подобно этому:

shell> perror [OPTIONS] [ERRORCODE [ERRORCODE...]]

например:

shell> perror 64 79
Error code  64:  Machine is not on the network
Error code  79:  Can not access a needed shared library

perror может использоваться, чтобы отобразить описание для кода ошибки системы или драйвера таблицы MyISAM/ISAM. Сообщения об ошибках обычно зависят от системы.

12.10 Как выполнить команды SQL из текстового файла

Клиент mysql обычно используется в интерактивном режиме:

shell> mysql database

Однако, также возможно поместить Ваши команды SQL в файл и сообщить, чтобы mysql читал ввод из того файла. Чтобы сделать так, создайте текстовый файл text_file, хранящий команды, которые Вы желаете выполнить. Затем вызовите mysql как показано ниже:

shell> mysql database < text_file

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

shell> mysql < text_file

Поиск

 

Найди своих коллег!