| |
Несмотря на то, что данная работа ориентирована на пользователей пакета, иногда им требуется выполнять простые административные задачи, например, резервирование и восстановление баз данных. Сложными делами, понятно, должен заниматься выделенный администратор, но иногда он может доверить выполнение простых задач достаточно квалифицированному пользователю.
Поскольку таблицы MySQL сохранены как файлы, просто делайте копию. Чтобы
получать непротиворечивую копию, скомандуйте LOCK TABLES
на
релевантных таблицах и дополните это командой FLUSH TABLES
для
них, дабы все данные были гарантированно сброшены на диск. Подробности по
этим командам есть в разделах
"9.7.2 Синтаксис LOCK TABLES/UNLOCK
TABLES
" и "4.8 Синтаксис
FLUSH
". Вам нужна только блокировка записи. Это позволяет
другим потокам продолжать делать запросы к таблицам в то время, как Вы
делаете копию файлов в каталоге баз данных. Команда FLUSH TABLE
необходима, чтобы гарантировать, что все активные индексные страницы записаны
на диск прежде, чем Вы запускаете процесс копирования.
Если Вы хотите делать копию уровня SQL из таблицы, Вы можете использовать
SELECT INTO OUTFILE
или BACKUP TABLE
. Подробности в
разделах "8.1 Синтаксис SELECT
" и "4.2 Синтаксис BACKUP
TABLE
".
Другой способ поддержать базу данных состоит в том, чтобы использовать
программу mysqldump
или скрипт mysqlhotcopy
.
Подробности в разделах
"12.5 mysqldump, Дамп структур таблиц и
данных" и "12.6 mysqlhotcopy,
Копирование баз данных и таблиц MySQL".
shell> mysqldump --tab=/path/to/some/dir --opt --fullили
shell> mysqlhotcopy database /path/to/some/dirВы можете также просто копировать все файлы таблицы (*.frm, *.MYD и *.MYI), пока сервер что-нибудь не модифицирует. Скрипт
mysqlhotcopy
использует этот метод.
mysqld
запущен, остановите его, а
затем запустите с опцией --log-update[=file_name]
. Подробнее об
этой опции можно узнать в разделе "4.9.3
Файл регистрации модификаций". Файлы протоколов предоставляют Вам
информацию относительно того, что изменилось со времени
последнего вызова mysqldump
.Если Вы должны восстановить что-либо, попробуйте восстанавливать Ваши
таблицы, используя REPAIR TABLE
или myisamchk -r
.
Это эффективно в 99.9% случаев. Если myisamchk
ничего хорошего
не сделал, попробуйте следующую процедуру (это будет работать только, если Вы
запустили MySQL с опцией --log-update
):
mysqldump
.
shell> mysqlbinlog hostname-bin.[0-9]* | mysqlЕсли Вы используете файл регистрации модификации, Вы можете использовать:
shell> ls -1 -t -r hostname.[0-9]* | xargs cat | mysql
ls
используется, чтобы получить все журналы модификации в
правильном порядке.
Вы можете также делать выборочные копии: SELECT * INTO OUTFILE
file_name FROM tbl_name
и восстанавливать их: LOAD DATA INFILE
file_name REPLACE ...
. Чтобы избежать двойных записей, Вам нужен
PRIMARY KEY
или UNIQUE
в таблице. Ключевое слово
REPLACE
заменяет старые записи на новые, когда новая запись
дублирует старую запись на уникальном значении ключа.
Если Вы получаете проблемы эффективности при создании копий на Вашей системе, можно решить их установкой репликации и созданием копий на подчиненной системе вместо главной. Это задачи администратора.
Если Вы используете файловую систему Veritas, Вы можете делать следующее:
FLUSH TABLES WITH READ LOCK
mount vxfs
snapshot
.
UNLOCK TABLES
BACKUP TABLE
BACKUP TABLE tbl_name[,tbl_name...] TO '/path/to/backup/directory'
Эта команда делает копию всех файлов таблицы в резервный каталог, что
является минимумом, необходимым, чтобы восстановить ее. Сейчас это работает
только для таблиц MyISAM
. Для них копируются файлы
.frm
(определение) и .MYD
(данные). Индексный файл
может быть восстановлен из этих двух.
Перед использованием этой команды, пожалуйста, ознакомьтесь с разделом "4.1 Резервирование баз данных".
Пока таблица резервируется, она блокируется. Если нужно резервировать
сразу несколько таблиц, выполните команду LOCK TABLES
для каждой
таблицы в этой группе.
Команда возвращает таблицу со следующими столбцами:
Столбец | Значение |
Table | Имя таблицы |
Op | Обязательно ``backup'' |
Msg_type | Одно из status , error ,
info или warning . |
Msg_text | Собственно сообщение. |
Обратите внимание, что команда BACKUP TABLE
доступна только в
MySQL версии 3.23.25 и старше.
RESTORE TABLE
RESTORE TABLE tbl_name[,tbl_name...] FROM '/path/to/backup/directory'
Восстанавливает таблицу из копии, которая была сделана с помощью
BACKUP TABLE
. Существующие таблицы не будут перезаписаны, если
Вы попробуете восстанавливать существующую таблицу, получите ошибку.
Восстановление занимает больше времени, чем резервирование из-за
необходимости сгенерировать индексный файл. Чем больше имеется ключей, тем
дольше система будет его строить. Также, как и BACKUP TABLE
, эта
функция работает только с таблицами MyISAM
.
Команда возвращает таблицу со следующими столбцами:
Столбец | Значение |
Table | Имя таблицы |
Op | Обязательно ``restore'' |
Msg_type | Одно из status , error ,
info или warning . |
Msg_text | Собственно сообщение. |
CHECK TABLE
CHECK TABLE tbl_name[,tbl_name...] [option [option...]] option = QUICK | FAST | MEDIUM | EXTENDED | CHANGED
CHECK TABLE
работает только с таблицами типа
MyISAM
. На них данная команда эквивалентна
myisamchk -m table_name
.
Если Вы не определяете опций, используется MEDIUM
.
Данная команда проверяет таблицу на ошибки. Для таблиц типа
MyISAM
модифицируется статистика ключа. Команда возвращает
таблицу со следующими столбцами:
Столбец | Значение |
Table | Имя таблицы. |
Op | Обязательно ``check''. |
Msg_type | Одно из status , error ,
info или warning . |
Msg_text | Собственно сообщение. |
Обратите внимание, что Вы можете получать много строк информации для
каждой проверенной таблицы. Последняя строка будет иметь тип Msg_type
status
и значение OK
, если все хорошо. Если ответов
OK
или Not checked
нет, Вы должны выполнить ремонт
таблицы. Сообщение Not checked
говорит о том, что для данной
таблицы TYPE
сообщил MySQL, что там не было никакой
потребности проверять таблицу.
Различные типы проверки:
Тип | Значение |
QUICK | Не просматривать строки, чтобы проверить неправильные связи. |
FAST | Проверить только те таблицы, которые не были закрыты правильно. |
CHANGED | Проверить только те таблицы, которые не были закрыты правильно, и те, которые изменились со времен последней проверки. |
MEDIUM | Сканировать строки для проверки правильности удаленных связей. Это также вычисляет контрольную сумму ключа для строк и проверяет ее правильность. |
EXTENDED | Выполнить полную проверку всех ключей для всех строк в таблице. Это гарантирует, что таблица на 100% непротиворечива, но требует много времени! |
Для динамических таблиц MyISAM
запущенная проверка будет
всегда использовать опцию MEDIUM
. Для статических строк не
выполняется просмотр строки для режимов QUICK
и
FAST
, поскольку строки очень редко разрушаются.
Вы можете объединять параметры проверки:
CHECK TABLE test_table FAST QUICK;
Это предписывает провести быструю проверку на таблице, если она не была закрыта правильно.
ОБРАТИТЕ ВНИМАНИЕ: в ряде случаев
CHECK TABLE
изменяет таблицу! Это случается, если таблица
отмечена как 'corrupted' (повреждена) или 'not closed properly' (не закрыта
правильно), но команда CHECK TABLE
не нашла проблем в таблице. В
этой ситуации CHECK TABLE
отметит таблицу как ok.
Если таблица разрушена, то наиболее вероятное, что проблема находится в индексах, а не в части данных. Все приведенные выше типы проверки тестируют индексы и должны таким образом найти большинство ошибок.
Если Вы хотите только проверить таблицу, Вы не должны использовать никакие
параметры проверки или опцию QUICK
. Последний должен
использоваться, когда Вы спешите и можете позволить пропустить то малое число
ошибок, которое QUICK
не находит. Например, это ошибка в файле
данных. В большинстве случаев MySQL, при нормальном использовании, должен сам
найти любую ошибку в файле данных. Если это случается, таблица будет отмечена
как 'разрушено', тогда таблица не сможет использоваться, пока ошибка не
восстановлена, чтобы не развалить данные окончательно.
FAST
и CHANGED
обычно предназначены, чтобы
использоваться из скрипта (например, из cron), если Вы хотите проверять
таблицу время от времени. В большинстве случаев FAST
имеет
приоритет перед CHANGED
.
EXTENDED
должен использоваться после того, как Вы выполнили
нормальную проверку, но все еще получаете странные ошибки из таблицы, когда
MySQL пробует модифицировать строку или найти строку по ключу (это ОЧЕНЬ
маловероятно, если нормальная проверка прошла спокойно!).
Некоторые вещи, сообщаемые проверкой таблиц, не могут быть исправлены в автоматическом режиме:
Найденная строка, где столбец auto_increment имеет значение 0
.
Это означает, что Вы имеете в таблице строку, где столбец индекса
auto_increment
содержит значение 0. Можно создать такую
конструкцию командой UPDATE
.
Это не ошибка само по себе, но может вызывать проблему, если Вы сбрасываете
таблицу в дамп, а потом восстановите ее оттуда или скомандуете
ALTER TABLE
на таблице. В этом случае столбец auto_increment
изменит значение, согласно правилам auto_increment, что может вызвать
проблемы подобно ошибке дублирования ключа.
Избавиться от предупреждения можно, только выполнив инструкцию
UPDATE
, чтобы установить столбец к некоторому другому значению
(не 0).REPAIR TABLE
REPAIR TABLE tbl_name[,tbl_name...] [QUICK] [EXTENDED]
REPAIR TABLE
тоже работает только на таблицах типа
MyISAM
и аналогичен вызову myisamchk -r table_name
.
Обычно Вам никогда не придется выполнять эту команду, но в случае ошибок
Вы, очень вероятно, вернете все Ваши данные из таблицы MyISAM с помощью
команды REPAIR TABLE
. Если Ваши таблицы разрушаются, Вы должны
попробовать нахйти причину этого! Подробности по этому вопросу есть в разделе
"11.4.1 Что делать, если MySQL рухнул".
REPAIR TABLE
восстанавливает разрушенную таблицу. Команда
возвращает таблицу со следующими столбцами:
Столбец | Значение |
Table | Имя таблицы |
Op | Обязательно ``repair'' |
Msg_type | Одно из status , error ,
info или warning . |
Msg_text | Собственно сообщение. |
Обратите внимание, что Вы можете получать много строк информации для
каждой восстановленной таблицы. Последняя будет иметь тип Msg_type
status
и значение OK
, если все в порядке. Если значение
OK
так и не появилось, Вы должны попробовать восстанавливать
таблицу с помощью myisamchk -o
, поскольку REPAIR
TABLE
еще не выполняет все параметры myisamchk
. В
ближайшем будущем планируется сделать ее более гибкой.
Если задан QUICK
, MySQL пробует делать REPAIR
только для индексного дерева.
Если Вы используете EXTENDED
, MySQL создаст индекс по строкам
вместо того, чтобы создать индекс одновременно с сортировкой: это может быть
лучше, чем сортировка по ключам фиксированной длины, если Вы имеете длинные
ключи типа char()
, которые сжимаются очень хорошо.
OPTIMIZE TABLE
OPTIMIZE TABLE tbl_name[,tbl_name]...
OPTIMIZE TABLE
должен использоваться, если Вы удалили большую
часть таблицы, или если Вы сделали много изменений для таблицы со строками
переменных длин (таблицы, которые имеют VARCHAR
,
BLOB
или TEXT
). Удаленные записи поддерживаются в
связанном списке, и при последующем использовании операций
INSERT
повторно применяются старые позиции записей. Вы можете
использовать OPTIMIZE TABLE
, чтобы освободить неиспользуемое
место и дефрагментировать файл данных.
Сейчас OPTIMIZE TABLE
применим только к таблицам типов
MyISAM и BDB
. Для таблиц типа BDB
OPTIMIZE TABLE
в настоящее время отображается на вызов
ANALYZE TABLE
. Подробности об этом вызове в разделе
"4.7 Синтаксис ANALYZE TABLE
".
Вы можете оптимизировать и другие типы таблиц запуском mysqld
с опциями --skip-new
или --safe-mode
, но в этом
случае OPTIMIZE TABLE
превратится в вызов ALTER
TABLE
.
OPTIMIZE TABLE
работает следующим образом:
OPTIMIZE TABLE
для таблиц типа MyISAM
эквивалентен вызову myisamchk --quick --check-changed-tables
--sort-index --analyze
.
Обратите внимание, что таблица будет блокирована в течение всего времени
работы команды OPTIMIZE TABLE
!
ANALYZE TABLE
ANALYZE TABLE tbl_name[,tbl_name...]
Анализирует и сохраняет распределение ключей для таблицы. Во время
процесса анализа таблица будет блокирована с доступом только на чтение. Это
работает на таблицах типов MyISAM
и BDB
.
Это эквивалентно вызову myisamchk -a
.
MySQL использует сохраненное распределение ключей, чтобы решить, в каком порядке таблицы должны быть соединены, когда выполняется объединение.
Команда возвращает таблицу со следующими столбцами:
Столбец | Значение |
Table | Имя таблицы |
Op | Обязательно ``analyze'' |
Msg_type | Одно из status , error ,
info или warning . |
Msg_text | Собственно сообщение. |
Вы можете проверять сохраненное распределение ключей командой SHOW
INDEX
. Подробности в разделе
"4.10.1 Получение информации о базах
данных, таблицах, столбцах и индексах".
Если таблица не изменилась после последней команды ANALYZE
TABLE
, она не будет проанализирована снова.
FLUSH
FLUSH flush_option [,flush_option]
Вы должны использовать команду FLUSH
, если Вы хотите очищать
внутренние кэши MySQL. Для выполнения FLUSH
Вы должны иметь
право RELOAD.
flush_option
может быть любой из следующего списка:
HOSTS | Освобождает ведущие таблицы кэша. Вы
должны это сделать, если некоторые из Ваших хостов изменяют IP, или если Вы
получили сообщение об ошибке "Host ... is blocked ". Когда в
строке для данного компьютера происходит больше, чем
max_connect_errors ошибок за время связи с сервером, MySQL
приходит к выводу, что что-то пошло неправильно, и блокирует компьютер.
Подробности в разделе "11.2.4 Ошибка
Host '...' is blocked . Вы можете запустить
mysqld с опцией -O max_connection_errors=999999999 ,
чтобы избежать этого сообщения об ошибке. |
LOGS | Закрывает и вновь открывает все журналы.
Если Вы определили журнал модификаций или двоичный журнал без расширения,
номер расширения журнала будет увеличен на один относительно предыдущего
файла. Если Вы использовали расширение в имени файла, MySQL закроет и вновь
откроет журнал модификаций. Это эквивалентно посылке на сервер
mysqld сигнала SIGHUP . |
PRIVILEGES | Перезагружает привилегии из таблиц в
базе данных mysql . |
TABLES | Закрывает все открытые таблицы. |
[TABLE|TABLES] table_name [,table_name...] |
Применяет предыдущую команду только к заданным таблицам. |
TABLES WITH READ LOCK | Закрывает все открытые
таблицы и блокирует все таблицы для всех баз данных с доступом только на
чтение, пока не будет выполнена команда UNLOCK TABLES . Это очень
удобный способ получить резервную копию, если Вы имеете файловую систему,
подобную Veritas. |
STATUS | Сбрасывает большинство переменных состояния к нулю. Используется при отладке запроса. |
Вы можете также обращаться к каждой из команд, показанных выше с помощью
утилиты mysqladmin
, используя команды flush-hosts
,
flush-logs
, reload
или flush-tables
.
KILL
KILL thread_id
Каждое подключение к mysqld
выполняется в отдельном процессе.
Вы можете видеть запущенные процессы командой SHOW PROCESSLIST
и уничтожать процесс командой KILL thread_id
.
Если Вы имеете привилегию process, Вы можете видеть и уничтожать все процессы. Иначе Вы можете видеть и уничтожать только Ваши собственные процессы.
Вы можете также использовать команды mysqladmin processlist
и
mysqladmin kill
, чтобы исследовать и уничтожать процессы.
При вызове KILL
для процесса устанавливается флаг kill
flag
.
В большинстве случаев может требоваться некоторое время для того, чтобы
процесс уничтожился, поскольку флаг kill flag
может быть
проверен только в специфических интервалах:
SELECT
, ORDER BY
и GROUP
BY
флажок будет проверен после чтения блока строк. Если он установлен,
инструкция будет прервана.
ALTER TABLE
флаг будет проверен прежде, чем
каждый блок строк считается из первоначальной таблицы. Если он установлен,
команда будет прервана, а временная таблица удалена.
UPDATE TABLE
и DELETE TABLE
,
флажок будет проверен после каждого чтения блока и после каждого обновления
или удаления строки. Если он установлен, инструкция будет прервана. Обратите
внимание, что, если Вы не используете транзакции, сделанные в таблице
изменения не будут отменены!
GET_LOCK()
прервется с NULL
.
INSERT DELAYED
быстренько сбросят на диск все
строки, которые у них лежат в памяти и завершатся.
Locked
), блокировка таблицы будет быстро прервана.
write
, запись немедленно прерывается с сообщением об
ошибке переполнения диска.SHOW
SHOW DATABASES [LIKE wild] SHOW [OPEN] TABLES [FROM db_name] [LIKE wild] SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [LIKE wild] SHOW INDEX FROM tbl_name [FROM db_name] SHOW TABLE STATUS [FROM db_name] [LIKE wild] SHOW STATUS [LIKE wild] SHOW VARIABLES [LIKE wild] SHOW LOGS SHOW [FULL] PROCESSLIST SHOW GRANTS FOR user SHOW CREATE TABLE table_name SHOW MASTER STATUS SHOW MASTER LOGS SHOW SLAVE STATUS
SHOW
обеспечивает информацию относительно баз данных, таблиц,
столбцов или информацию состояния сервера. Если используется часть
LIKE wild
, строка wild
может быть строкой, которая
использует групповые символы SQL % и _.
Вы можете использовать db_name.tbl_name
как вариант для
tbl_name FROM db_name
. Эти две инструкции эквивалентны:
mysql> SHOW INDEX FROM mytable FROM mydb; mysql> SHOW INDEX FROM mydb.mytable;
SHOW DATABASES
вносит в список базы данных на сервере
MySQL. Вы можете также получать этот список, используя команду
mysqlshow
.
SHOW TABLES
вносит в список таблицы в заданной базе данных.
Вы можете также получать этот список, используя команду
mysqlshow db_name
.
ОБРАТИТЕ ВНИМАНИЕ: Если пользователь не имеет привилегий
для таблицы, соответствующая таблица не будет обнаруживаться в выводе
SHOW TABLES
или mysqlshow db_name
.
SHOW OPEN TABLES
вносит в список таблицы, которые являются в
настоящее время открытыми в кэше таблиц. Поле Comment
сообщает
сколько раз таблица кэшируется (cached
) и используется
(in_use
).
SHOW COLUMNS
вносит в список столбцы в данной таблице. Если
Вы определяете опцию FULL
, Вы также получите привилегии, которые
Вы имеете для каждого столбца. Если типы столбцов отличны от ожидаемых, они
будут основаны на инструкции CREATE TABLE
, заметьте, что MySQL
иногда сам изменяет типы столбца. Подробности в разделе
"7.3.1 Тихие изменения
спецификации столбца".
Инструкция DESCRIBE
обеспечивает информацию, подобную
SHOW COLUMNS
. Подробности в разделе
"9.1.2 Синтаксис DESCRIBE
(получение информации о столбцах)".
SHOW FIELDS
является синонимом для SHOW COLUMNS
,
а SHOW KEYS
синонимом для SHOW INDEX
. Вы можете
также вносить в список столбцы таблицы или индексы с помощью команд
mysqlshow db_name tbl_name
или
mysqlshow -k db_name tbl_name
.
SHOW INDEX
возвращает индексную информацию в формате, который
очень походит на вызов SQLStatistics
в ODBC. Следующие столбцы
всегда будут возвращены:
Столбец | Назначение |
Table | Имя таблицы. |
Non_unique | 0, если индекс не может содержать дубликаты. |
Key_name | Имя индекса. |
Seq_in_index | Номер последовательности столбца в индексе, начиная с 1 (не с 0!). |
Column_name | Имя столбца. |
Collation | Как столбец сортируется в индексе. В
MySQL это может иметь варианты `A' (по возрастанию) или
NULL (не сортируемый). |
Cardinality | Число уникальных значений в индексе.
Это модифицируется запуском isamchk -a . |
Sub_part | Число индексированных символов, если
столбец только частично индексирован. NULL если весь ключ
индексирован в полном объеме. |
Comment | Различные замечания. Пока это сообщает, является ли индекс полнотекстовым (FULLTEXT) или нет. |
Обратите внимание, что, поскольку Cardinality
будет
рассчитано, основываясь на статистике, сохраненной как целые числа, оно не
обязательно точно для маленьких таблиц.
SHOW TABLE STATUS
SHOW TABLE STATUS [FROM db_name] [LIKE wild]
SHOW TABLE STATUS
(новинка в Version 3.23) работает подобно
SHOW STATUS
, но обеспечивает много информации относительно
каждой таблицы. Вы можете также получать этот список, используя команду
mysqlshow --status db_name
. Следующие столбцы возвращены:
Столбец | Зачем он нужен |
Name | Имя таблицы. |
Type | Тип таблицы. |
Row_format | Формат хранения строки (фиксированный, динамический или сжатый). |
Rows | Число строк. |
Avg_row_length | Средняя длина строки. |
Data_length | Длина файла данных. |
Max_data_length | Максимальная длина файла данных. |
Index_length | Длина индексного файла. |
Data_free | Число распределенных, но не используемых байт. |
Auto_increment | Следующее значение auto_increment. |
Create_time | Когда таблица была создана. |
Update_time | Когда файл данных был в последний раз модифицирован. |
Check_time | Когда таблица была в последний раз проверена на ошибки. |
Create_options | Дополнительные параметры,
используемые с CREATE TABLE . |
Comment | Комментарий, используемый при создании таблицы (или информация о том, почему MySQL не может обращаться к информации по данной таблицы). |
Таблицы InnoDB
сообщат свободное пространство в ней через
поле комментария таблицы.
SHOW STATUS
SHOW STATUS
обеспечивает информацию состояния сервера (подобно
mysqladmin extended-status
). Вывод походит на показанное ниже,
хотя формат и числа будут другими:
+--------------------------+------------+ | Variable_name | Value | +--------------------------+------------+ | Aborted_clients | 0 | | Aborted_connects | 0 | | Bytes_received | 155372598 | | Bytes_sent | 1176560426 | | Connections | 30023 | | Created_tmp_disk_tables | 0 | | Created_tmp_tables | 8340 | | Created_tmp_files | 60 | | Delayed_insert_threads | 0 | | Delayed_writes | 0 | | Delayed_errors | 0 | | Flush_commands | 1 | | Handler_delete | 462604 | | Handler_read_first | 105881 | | Handler_read_key | 27820558 | | Handler_read_next | 390681754 | | Handler_read_prev | 6022500 | | Handler_read_rnd | 30546748 | | Handler_read_rnd_next | 246216530 | | Handler_update | 16945404 | | Handler_write | 60356676 | | Key_blocks_used | 14955 | | Key_read_requests | 96854827 | | Key_reads | 162040 | | Key_write_requests | 7589728 | | Key_writes | 3813196 | | Max_used_connections | 0 | | Not_flushed_key_blocks | 0 | | Not_flushed_delayed_rows | 0 | | Open_tables | 1 | | Open_files | 2 | | Open_streams | 0 | | Opened_tables | 44600 | | Questions | 2026873 | | Select_full_join | 0 | | Select_full_range_join | 0 | | Select_range | 99646 | | Select_range_check | 0 | | Select_scan | 30802 | | Slave_running | OFF | | Slave_open_temp_tables | 0 | | Slow_launch_threads | 0 | | Slow_queries | 0 | | Sort_merge_passes | 30 | | Sort_range | 500 | | Sort_rows | 30296250 | | Sort_scan | 4650 | | Table_locks_immediate | 1920382 | | Table_locks_waited | 0 | | Threads_cached | 0 | | Threads_created | 30022 | | Threads_connected | 1 | | Threads_running | 1 | | Uptime | 80380 | +--------------------------+------------+
Переменные состояния, перечисленные выше, имеют следующие значения:
Переменная | Значение |
Aborted_clients | Число подключений, прерванных потому, что клиент не закрыл подключение правильно. Подробности в разделе "11.2.9 Ошибки связи/прерванные соединения". |
Aborted_connects | Число попыток соединиться с сервером MySQL, которые потерпели неудачу. Подробности в разделе "11.2.9 Ошибки связи/прерванные соединения". |
Bytes_received | Число байт, полученных с клиентов. |
Bytes_sent | Число байт, посланных клиентам. |
Connections | Число попыток подключения к серверу MySQL. |
Created_tmp_disk_tables | Число неявных временных таблиц на диске, созданных при выполнении инструкций. |
Created_tmp_tables | Число неявных временных таблиц в памяти, созданных при выполнении инструкций. |
Created_tmp_files | Сколько временных файлов
создал mysqld . |
Delayed_insert_threads | Число отсроченных потоков драйвера вставки в использовании. |
Delayed_writes | Число строк, записанных со
INSERT DELAYED . |
Delayed_errors | Число строк, записанных со
INSERT DELAYED , для которых произошла ошибка (вероятно, двойной
ключ (duplicate key ) был использован). |
Flush_commands | Число выполненных команд
FLUSH . |
Handler_delete | Сколько раз строка была удалена из таблицы. |
Handler_read_first | Сколько раз первая запись
читалась из индекса. Если это значение высоко, предполагается, что сервер
делал много полных просмотров индекса, например, SELECT col1 FROM
foo , считая, что col1 индексирован. |
Handler_read_key | Число запросов на чтение строки, основанных на ключе. Если это значение высоко, это значит, что Ваши запросы и таблицы были правильно индексированы. |
Handler_read_next | Число запросов на чтение следующей строки в порядке ключа. Это значение будет увеличено, если Вы запрашиваете индексный столбец с ограничением диапазона. Это также будет увеличено, если Вы делаете индексный просмотр. |
Handler_read_rnd | Число запросов на чтение строк, основанных на фиксированной позиции. Это значение будет высоким, если Вы делаете много запросов, которые требуют сортировки результата. |
Handler_read_rnd_next | Число запросов на чтение следующей строки в файле данных. Это значение будет высоким, если Вы делаете много просмотров таблицы. Вообще это предполагает, что Ваши таблицы не были правильно индексированы, или что Ваши запросы не используют индексы. |
Handler_update | Число запросов на модификацию строк в таблице. |
Handler_write | Число запросов на вставку строки в таблицу. |
Key_blocks_used | Число используемых блоков в кэше ключа. |
Key_read_requests | Число запросов на чтение блока ключа из кэша. |
Key_reads | Число физических чтений блока ключа с диска, а не из кэша. |
Key_write_requests | Число запросов на запись блока ключа в кэш. |
Key_writes | Число физических записей блока ключа на диск, а не в кэш. |
Max_used_connections | Максимальное число подключений в использовании одновременно. |
Not_flushed_key_blocks | Число блоков ключей в кэше ключа, которые изменились, но не сброшены на диск. |
Not_flushed_delayed_rows | Число строк, ждущих
записи в очередях запросов INSERT DELAY . |
Open_tables | Число таблиц, которые являются открытыми. |
Open_files | Число файлов, которые являются открытыми. |
Open_streams | Число потоков, которые являются открытыми (используемыми, главным образом, для протоколирования). |
Opened_tables | Число таблиц, которые были открыты. |
Select_full_join | Число объединений без ключей (должно быть 0). |
Select_full_range_join | Число объединений, где использовали поиск диапазона по таблице ссылок. |
Select_range | Число объединений, где использовали диапазоны в первой таблице. Это обычно не критическое, даже если это большое. |
Select_scan | Число объединений, где просмотрели первую таблицу. |
Select_range_check | Число объединений без ключей, где проверяем использование ключа после каждой строки (должно быть 0). |
Questions | Число запросов, посланных серверу. |
Slave_open_temp_tables | Число временных таблиц, в настоящее время открытых подчиненным процессом. |
Slow_launch_threads | Число потоков, которым
понадобилось для установления соединения больше, чем
slow_launch_time . |
Slow_queries | Число запросов, которые заняли
больше, чем long_query_time . |
Sort_merge_passes | Число объединений,
потребовавших сортировки. Если это значение большое, Вы должны рассмотреть
увеличение sort_buffer . |
Sort_range | Число сортировок с диапазонами. |
Sort_rows | Число сортируемых строк. |
Sort_scan | Число сортировок выполненных, просматривая таблицу. |
Table_locks_immediate | Сколько раз блокировка таблицы применялась сразу. Доступно после версии 3.23.33. |
Table_locks_waited | Сколько раз блокировка таблицы не могла быть применена сразу и пришлось ждать. Если это значение высоко, и Вы имеете проблемы с эффективностью, Вы должны сначала оптимизировать Ваши запросы, а затем или разделить таблицу, или использовать репликацию. Доступно после 3.23.33. |
Threads_cached | Число потоков в кэше. |
Threads_connected | Сколько в настоящее время открыто подключений. |
Threads_created | Число потоков созданных, чтобы обработать подключения. |
Threads_running | Число потоков, которые сейчас не бездействуют. |
Uptime | Сколько секунд сервер уже работает. |
Некоторые комментарии относительно вышеупомянутого:
Opened_tables
велико, то переменная
table_cache
, вероятно, слишком маленькая.
key_reads
велико, то переменная key_cache
,
вероятно, слишком маленькая. Коэффицент кэширования может быть вычислен по
формуле: key_reads
/key_read_requests
.
Handler_read_rnd
велико, то Вы, вероятно, имеете много
запросов, которые требуют, чтобы MySQL просматривал целые таблицы, или Вы
имеете объединения, которые не используют ключи правильно.
Threads_created
велико, то следует увеличить переменную
thread_cache_size
.SHOW VARIABLES
SHOW VARIABLES [LIKE wild]
SHOW VARIABLES
показывает значения некоторых переменных
системы MySQL. Вы можете также получить эту информацию, используя команду
mysqladmin variables
.
Вывод походит на показанное ниже, хотя формат и числа будут иными:
+-------------------------+---------------------------+ | Variable_name | Value | +-------------------------+---------------------------+ | ansi_mode | OFF | | back_log | 50 | | basedir | /my/monty/ | | bdb_cache_size | 16777216 | | bdb_log_buffer_size | 32768 | | bdb_home | /my/monty/data/ | | bdb_max_lock | 10000 | | bdb_logdir | | | bdb_shared_data | OFF | | bdb_tmpdir | /tmp/ | | binlog_cache_size | 32768 | | concurrent_insert | ON | | connect_timeout | 5 | | datadir | /my/monty/data/ | | delay_key_write | ON | | delayed_insert_limit | 100 | | delayed_insert_timeout | 300 | | delayed_queue_size | 1000 | | flush | OFF | | flush_time | 0 | | have_bdb | YES | | have_innodb | YES | | have_raid | YES | | have_ssl | NO | | init_file | | | interactive_timeout | 28800 | | join_buffer_size | 131072 | | key_buffer_size | 16776192 | | language | /my/monty/share/english/ | | large_files_support | ON | | log | OFF | | log_update | OFF | | log_bin | OFF | | log_slave_updates | OFF | | long_query_time | 10 | | low_priority_updates | OFF | | lower_case_table_names | 0 | | max_allowed_packet | 1048576 | | max_binlog_cache_size | 4294967295 | | max_connections | 100 | | max_connect_errors | 10 | | max_delayed_threads | 20 | | max_heap_table_size | 16777216 | | max_join_size | 4294967295 | | max_sort_length | 1024 | | max_tmp_tables | 32 | | max_write_lock_count | 4294967295 | | myisam_recover_options | DEFAULT | | myisam_sort_buffer_size | 8388608 | | net_buffer_length | 16384 | | net_read_timeout | 30 | | net_retry_count | 10 | | net_write_timeout | 60 | | open_files_limit | 0 | | pid_file | /my/monty/data/donna.pid | | port | 3306 | | protocol_version | 10 | | record_buffer | 131072 | | query_buffer_size | 0 | | safe_show_database | OFF | | server_id | 0 | | skip_locking | ON | | skip_networking | OFF | | skip_show_database | OFF | | slow_launch_time | 2 | | socket | /tmp/mysql.sock | | sort_buffer | 2097116 | | table_cache | 64 | | table_type | MYISAM | | thread_cache_size | 4 | | thread_stack | 65536 | | tmp_table_size | 1048576 | | tmpdir | /tmp/ | | version | 3.23.29a-gamma-debug | | wait_timeout | 28800 | +-------------------------+---------------------------+
Каждая опция описана ниже. Значения для буферных размеров, длин и размеров
стека даны в байтах. Вы можете определять значения с суффиксами
`K' или `M', чтобы указать килобайты или мегабайты.
Например, 16M
указывает 16 мегабайтов. Регистр символов суффикса
не имеет значения: 16M
и 16m
эквивалентны.
ansi_mode
.
ON
, если mysqld
запущен с опцией
--ansi
. Подробности в разделе
"1.4.3 Запуск MySQL в режиме ANSI".
back_log
back_log
указывает, сколько
запросов могут быть сложены в стек в течение этого короткого времени прежде,
чем MySQL на мгновение остановит ответы на новые запросы. Вы должны увеличить
это только, если Вы ожидаете большое количество подключений за короткий
периоде времени (сервер работает интенсивно).
Другими словами, это значение задает размер слушающей очереди для входящих
подключений TCP/IP. Ваша операционная система имеет собственное ограничение
размера этой очереди. В Unix man-страница listen(2)
должна
иметь большее количество деталей. Проверьте документацию на Вашу ОС для
выяснения максимального значения для этой переменной. Попытка устанавливать
back_log
выше, чем это ограничение операционной системы, будет
неэффективна, хотя и безопасна.
basedir
--basedir
.
bdb_cache_size
BDB
-таблиц. Если Вы не используете таблицы BDB
, Вы
должны запустить mysqld
с опцией --skip-bdb
, чтобы
не тратить впустую память для этого кэша.
bdb_log_buffer_size
BDB
-таблиц. Если Вы не используете таблицы BDB
, Вы
должны запустить mysqld
с опцией --skip-bdb
, чтобы
не тратить впустую память для этого кэша.
bdb_home
--bdb-home
.
bdb_max_lock
bdb: Lock table is out of available locks
или Got error 12 from ...
, когда Вы делаете длинные транзакции,
или когда mysqld
должен исследовать много строк, чтобы
вычислить и обработать запрос.
bdb_logdir
--bdb-logdir
.
bdb_shared_data
ON
, если Вы используете --bdb-shared-data
.
bdb_tmpdir
--bdb-tmpdir
.
binlog_cache_size
.
BEGIN/COMMIT/ROLLBACK
".
character_set
character_sets
concurrent_inserts
ON
(значение по умолчанию), MySQL позволит Вам
использовать INSERT
на таблицах системы MyISAM
в то
же самое время, когда Вы выполняете на них запросы SELECT
.
Вы можете выключить эту опцию запуском mysqld
с параметрами
--safe
или --skip-new
.
connect_timeout
mysqld
ждет подключения перед
ответом Bad handshake
.
datadir
--datadir
.
delay_key_write
delay_key_write
в CREATE TABLE
. Это означает, что
буфер ключей для таблиц с этой опцией не будет сбрасываться на каждой
индексной модификации, а только когда таблица будет закрыта. Это ускорит
работу по записи, но Вы должны добавить автоматическую проверку всех таблиц
командой myisamchk --fast --force
. Обратите внимание, что, если
Вы запускаете mysqld
с опцией
--delay-key-write-for-all-tables
, это означает, что все таблицы
будут обрабатываться так, как будто они были созданы с опцией
delay_key_write
. Вы можете очищать этот флажок, запуская
mysqld
с параметрами --skip-new
или
--safe-mode
.
delayed_insert_limit
delayed_insert_limit
строк, драйвер
INSERT DELAYED
проверит, имеется ли любая задержка инструкций
SELECT
. Если так, это позволяет им выполниться перед
продолжением работ с таблицей.
delayed_insert_timeout
INSERT DELAYED
должен ждать инструкции
INSERT
перед своим завершением.
delayed_queue_size
INSERT DELAYED
. Если очередь заполняется, любой пользователь,
который вызвал INSERT DELAYED
, будет ждать до появления
свободного места в очереди.
flush
ON
, если MySQL был запущен с опцией --flush
.
flush_time
flush_time
секунд все таблицы будут закрыты (чтобы освободить
ресурсы и сбросить данные на диск). Я рекомендую эту опцию только на Win95,
Win98 или на системах, где Вы имеете очень небольшое количество ресурсов.
have_bdb
YES
, если mysqld
поддерживает таблицы Berkeley
DB. DISABLED
, если использован параметр
--skip-bdb
.
have_innodb
YES
, если mysqld
поддерживает таблицы InnoDB.
DISABLED
, если использован параметр --skip-innodb
.
have_raid
YES
, если mysqld
поддерживает опцию
RAID
.
have_ssl
YES
, если mysqld
поддерживает SSL (шифрование)
по протоколу клиент/сервер.
init_file
--init-file
при запуске
сервера. Это файл инструкций SQL, которые Вы хотите всегда выполнять при
каждом запуске сервера.
interactive_timeout
CLIENT_INTERACTIVE
для
mysql_real_connect()
. См. также wait_timeout
.
join_buffer_size
key_buffer_size
key_buffer_size
как раз и задает размер буфера, используемого
для индексных блоков. Увеличьте это значение, чтобы улучшить индексную
обработку. Но если Вы сделаете его слишком большим (больше, чем 50% общей
памяти?), Ваша система может начать использовать своп и стать ДЕЙСТВИТЕЛЬНО
медленной. Не забудьте, что поскольку MySQL не кэширует чтение данных, Вы
должны оставить некоторый участок памяти для кэша файловой системы ОС.
Вы можете проверять эффективность буфера ключей выполнением show
status
и изучением переменных Key_read_requests
,
Key_reads
, Key_write_requests
и
Key_writes
. Коэффициент Key_reads/Key_read_request
обычно должен быть < 0.01. Key_write/Key_write_requests
обычно близко к 1, если Вы используете обычное обновление/удаление, но может
быть намного меньше, если Вы имеете тенденцию делать модификации, которые
воздействуют на много данных сразу, или если Вы используете
delay_key_write
. Подробности в разделе
"4.10 Синтаксис SHOW
".
Чтобы получить заметное ускорение при записи многих строк сразу,
используйте LOCK TABLES
. Подробности в разделе
"9.2.2 Синтаксис LOCK
TABLES/UNLOCK TABLES
".
language
large_file_support
mysqld
компилировался с параметрами для поддержки
больших файлов.
locked_in_memory
mysqld
был блокирован в памяти опцией
--memlock
log
log_update
log_bin
log_slave_updates
long_query_time
Slow_queries
будет увеличен. Если Вы используете
--log-slow-queries
, запрос будут регистрироваться в файле
регистрации медленных запросов.
lower_case_table_names
max_allowed_packet
net_buffer_length
байт, но может вырасти до
max_allowed_packet
байт, когда необходимо. Это значение по
умолчанию маленькое, но позволяет захватывать большие (возможно,
неправильные) пакеты. Вы должны увеличить это значение, если используете
большие столбцы BLOB
. Он должно быть столь же большим как самый
крупный BLOB
, который Вы хотите использовать. Текущий протокол
ограничивает max_allowed_packet
размером 16M.
max_binlog_cache_size
max_binlog_size
max_connections
mysqld
.
Подробности в разделе "11.2.5
Ошибка Too many connections
".
max_connect_errors
FLUSH HOSTS
.
max_delayed_threads
INSERT DELAYED
. Если Вы попробуете вставлять данные в новую
таблицу после того, как все потоки INSERT DELAYED
будут заняты,
строка будет вставлена, как будто атрибут DELAYED
не был
определен вовсе, то есть немедленно.
max_heap_table_size
max_join_size
max_join_size
, возвращают ошибку. Установите это значение, если
Ваши пользователи имеют тенденцию выполнять объединения, которые испытывают
недостаток предложения WHERE
, занимают много времени или
возвращают миллионы строк.
max_sort_length
BLOB
или TEXT
(только первые
max_sort_length
байтов из каждого значения реально используются,
остальное игнорируется вообще).
max_user_connections
max_tmp_tables
max_write_lock_count
myisam_recover_options
--myisam-recover
.
myisam_sort_buffer_size
REPAIR
или при создании индексов с помощью CREATE
INDEX
или ALTER TABLE
.
myisam_max_extra_sort_file_size
.
myisam_max_sort_file_size
REPAIR
,
ALTER TABLE
или LOAD DATA INFILE
. Если размер файла
больше, чем это значение, индекс будет создан через кэш ключа, который
является более медленным. ОБРАТИТЕ ВНИМАНИЕ, что этот
параметр задан в мегабайтах!
net_buffer_length
max_allowed_packet
байт.
net_read_timeout
write_timeout
. См. также
slave_read_timeout
.
net_retry_count
FreeBSD
, поскольку там внутренние прерывания посланы всем
серверным процессам чтения.
net_write_timeout
open_files_limit
mysqld
использует это значение, чтобы
резервировать описатели файла для применения с setrlimit()
. Если
это значение = 0, mysqld
резервирует
max_connections*5
или max_connections+table_cache*2
(используется большее из этих значений) число файлов. Вы должны попробовать
увеличивать это значение, если mysqld
выдает Вам ошибку
'Too many open files'.
pid_file
--pid-file
.
port
--port
.
protocol_version
record_buffer
record_rnd_buffer
record_buffer
.
query_buffer_size
safe_show_databases
skip_show_databases
.
server_id
--server-id
.
skip_locking
mysqld
использует внешнюю блокировку.
skip_networking
skip_show_databases
SHOW DATABASES
, если
пользователь не имеет привилегии PROCESS_PRIV
. Это может
улучшить защиту. См. также safe_show_databases
.
slave_read_timeout
slow_launch_time
Slow_launch_threads
будет увеличен.
socket
sort_buffer
ORDER BY
или GROUP BY
. Подробности в разделе
"11.4.4 Где MySQL
хранит временные файлы".
table_cache
mysqld
.
MySQL нуждается в двух описателях файла для каждой уникальной открытой
таблицы. Вы можете проверять, должны ли Вы увеличить кэш таблицы, анализируя
переменную Opened_tables
. Подробности в разделе
"4.10 Синтаксис SHOW
".
Удостоверьтесь, что Ваша операционная система может обрабатывать число
описателей файла, подразумеваемых установкой table_cache
. Если
table_cache
слишком велико, MySQL может исчерпать описатели
файла и начать сбоить.
table_type
thread_cache_size
thread_cache_size
потоков. Все новые потоки
сначала принимаются из кэша и только, когда кэш пуст, создаются новые. Эта
переменная может увеличиваться, чтобы улучшить эффективность, если Вы имеете
много новых подключений.
thread_concurrency
mysqld
вызовет thr_setconcurrency()
с этим значением. thr_setconcurrency()
разрешает прикладной
программе давать системе управления данные относительно желательного числа
потоков, которые должны быть выполнены в одно и то же время.
thread_stack
crash-me
, зависят от этого значения. Значение по
умолчанию достаточно большое для нормальной работы.
timezone
tmp_table_size
MyISAM
на диске.
Увеличьте значение tmp_table_size
, если Вы делаете много
продвинутых запросов GROUP BY
, и Вы имеете много памяти.
tmpdir
version
wait_timeout
interactive_timeout
.Раздел, который описывает настройку MySQL, содержит некоторую информацию относительно того, как настроить вышеупомянутые переменные.
SHOW LOGS
SHOW LOGS
показывает Вам информацию относительно состояния
существующих журналов. В настоящее время этот вызов отображает только
информацию относительно журналов Berkeley DB.
File
показывает полный путь к журналу.
Type
показывает тип журнала (BDB
для журналов
типа Berkeley DB).
Status
показывает состояние журнала (FREE
если
файл может быть удален, или IN USE
если файл необходим
подсистеме транзакций).SHOW PROCESSLIST
SHOW PROCESSLIST
показывает Вам, которые процессы работают.
Вы можете также получать эту информацию, используя команду mysqladmin
processlist
. Если Вы имеете привилегию process, Вы
можете видеть все процессы. Иначе Вы можете видеть только Ваши собственные
процессы. Если Вы не используете опцию FULL
, то только первые
100 символов каждого запроса будут показаны. Подробности в разделе
"4.9 Синтаксис KILL
".
Эта команда очень полезна, если Вы получаете сообщения об ошибках 'too
many connections' и хотите выяснить, что происходит. MySQL резервирует одно
подключение дополнительно для пользователя с привилегией
Process_priv
, чтобы гарантировать, что Вы всегда способны ко
входу в систему и ее проверке (эта ситуация не дает такую же привилегию всем
Вашим пользователям).
SHOW GRANTS
SHOW GRANTS FOR user
вносит в список команды, который должны
быть выданы, чтобы дублировать права пользователя. Например:
mysql> SHOW GRANTS FOR root@localhost; +---------------------------------------------------------------------+ | Grants for root@localhost | +---------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION | +---------------------------------------------------------------------+
SHOW CREATE TABLE
Показывает инструкцию CREATE TABLE
, которая создаст
данную таблицу. Например:
mysql> show create table t\G *************************** 1. row *************************** Table: t Create Table: CREATE TABLE t ( id int(11) default NULL auto_increment, s char(60) default NULL, PRIMARY KEY (id) ) TYPE=MyISAM
MySQL может, начиная с версии 3.22, читать заданные по умолчанию параметры запуска для клиентов и сервера из файлов опций.
MySQL читает заданные по умолчанию параметры из следующих файлов (в Unix):
Имя файла | Зачем он нужен |
/etc/my.cnf | Глобальные опции для всех |
DATADIR/my.cnf | Опции для сервера |
defaults-extra-file | Файл, определенный через --defaults-extra-file=# |
~/.my.cnf | Специфические для пользователей опции |
DATADIR
представляет собой каталог данных MySQL (обычно
/usr/local/mysql/data для бинарного дистрибутива или
/usr/local/var для установки из исходников). Обратите внимание,
что это тот каталог, который был определен в конфигурации, а не указан в
опции --datadir
при запуске mysqld
! Параметр
--datadir
не имеет никакого эффекта в то время, когда сервер
ищет файлы опций потому, что он их ищет прежде, чем обрабатывает любые
параметры командной строки.
MySQL читает заданные по умолчанию параметры из следующих файлов (только в ОС Windows):
Имя файла | Зачем он нужен |
windows-system-directory\my.ini | Глобальные опции |
C:\my.cnf | Глобальные опции |
C:\mysql\data\my.cnf | Опции для сервера |
Обратите внимание, что в Windows Вы должны определить все пути с
/
вместо \
. Если Вы используете \
, Вы
должны определить это дважды, поскольку \
символ ESC в MySQL.
MySQL пробует читать файлы опции в порядке, перечисленном выше. Если есть несколько файлов настроек, используется опция, определенная в том файле, который читается позже. Параметры, определенные в командной строке имеют приоритет над параметрами, определенными в любом файле опций. Некоторые параметры могут быть определены, используя системные переменные. Параметры, определенные в командной строке или в файлах опций имеют приоритет над значением соответствующей системной переменной.
Следующие программы поддерживают файлы опций: mysql
,
mysqladmin
, mysqld
, mysqldump
,
mysqlimport
, mysql.server
, myisamchk
и
myisampack
.
Вы можете использовать файлы опций, чтобы определить любую длинную опцию,
которую программа поддерживает! Выполните программу с параметром
--help
, чтобы получить список доступных параметров.
Файл опций может содержать строки следующих форм:
#comment
[group]
group
представляет собой имя программы или группы, для
которой Вы хотите устанавливать параметры. После строки группы любая строка
option
или set-variable
обращается к именованной
группе, пока не будет достигнут конец файла опций или другая строка группы.
option
--option
в командной строке.
option=value
--option=value
в командной строке.
set-variable = variable=value
--set-variable variable=value
в командной
строке. Этот синтаксис должен использоваться, чтобы установить переменную
mysqld
.Группа client
позволяет Вам определять параметры, которые
обращаются ко всей клиентуре MySQL (но не к mysqld
). Это
самая подходящая группа, чтобы определить в ней пароль, который Вы
используете, чтобы соединиться с сервером. Но удостоверьтесь, что файл опций
читаем и перезаписываем только Вами.
Обратите внимание, что для параметров и значений все конечные и начальные пробелы автоматически удалены. Вы можете использовать управляющие последовательности \b, \t, \n, \r, \\ и \s в Вашей строке (\s==пробел).
Имеется типичный глобальный файл опций:
[client] port=3306 socket=/tmp/mysql.sock [mysqld] port=3306 socket=/tmp/mysql.sock set-variable = key_buffer_size=16M set-variable = max_allowed_packet=1M [mysqldump] quick
Имеется типичный файл опций пользователя:
[client] # The following password will be sent to all standard MySQL clients password=my_password [mysql] no-auto-rehash set-variable=connect_timeout=2 [mysqlhotcopy] interactive-timeout
Если Вы имеете дистрибутив с исходниками, Вы найдете,
что типовые файлы конфигурации называются my-xxxx.cnf в каталоге
support-files. А вот в двоичном дистрибутиве смотрите в каталоге
DIR/support-files, где DIR
задает имя пути к каталогу
установки MySQL (обычно /usr/local/mysql). В настоящее время
имеются типовые файлы конфигурации для маленькой, средней, большой и очень
большой системы. Вы можете копировать my-xxxx.cnf в Ваш основной
каталог (переименуйте копию в .my.cnf), чтобы экспериментировать.
Вся клиентура MySQL, которая поддерживает файлы опций, использует и следующие параметры:
--no-defaults | Не читать любые файлы опций. |
--print-defaults | Печатать имя программы и все параметры, которые ей передаются. |
--defaults-file=full-path-to-default-file | Использовать только данный файл конфигурации. |
--defaults-extra-file=full-path-to-default-file | Читать этот файл конфигурации после глобального файла опций, но перед чтением файла настроек пользователя. |
Обратите внимание, что вышеупомянутые параметры должны быть первыми в
командной строке, чтобы они работали! Однако, --print-defaults
может использоваться непосредственно после команды
--defaults-xxx-file
.
В скриптах оболочки Вы можете использовать команду my_print_defaults, чтобы анализировать файлы конфигурации:
shell> my_print_defaults client mysql --port=3306 --socket=/tmp/mysql.sock --no-auto-rehash
Вышеупомянутый вывод содержит все параметры для групп client и mysql.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |