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

Сценарии и утилиты MySQL

Разбить на страницы
Показывать лекцию целиком

Обзор серверных сценариев и утилит

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

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

В следующем списке приводятся краткие описания серверных программ MySQL.

  • myisamchk

    Утилита, применяемая для описания, проверки, оптимизации и восстановления таблиц MySQL. Поскольку утилита myisamchk имеет много функций, она описывается отдельно.

  • make_binary_distribution

    Создает бинарную поставку откомпилированного кода MySQL. Эту версию при помощи FTP можно передать на сайт support.mysql.com в директорию /pub/mysql/Incoming, чтобы ею могли воспользоваться и другие пользователи MySQL.

  • mysqlbug

    Сценарий, составляющий отчет о возникшей в MySQL неполадке. Этот сценарий должен всегда использоваться для составления отчета для почтового списка рассылки MySQL.

  • mysqld

    Сам сервер MySQL, демон. Он должен работать постоянно.

  • mysql_install_db

    Создает таблицы привилегий MySQL с заданными по умолчанию привилегиями. Это обычно делается только один раз, при первой инсталляции MySQL в системе.

  • safe_mysqld , оболочка mysqld

    В MySQL 4.0 safe_mysqld был переименован в mysqld_safe.

    safe_mysqld — это сценарий, с помощью которого рекомендуется запускать демон mysqld на Unix. safe_mysqld служит для реализации неких дополнительных функций безопасности для mysqld, таких, как возможность перезапуска сервера при обнаружении ошибки и записи в журнал информации о процессе работы mysqld.

    Если не указаны опции -mysqld=# или -mysqld-version=#, safe_mysqld будет использовать исполняемый файл mysqld-max, если последний существует. Если mysqld-max не существует, safe_mysqld запустит mysqld. Это позволяет легко выяснить, что даст использование mysqld-max вместо mysqld: просто скопируйте mysqld-max поверх mysqld, и он будет работать.

    Как правило, редактировать сценарий safe_mysqld не следует, однако можно указать опции для safe_mysqld, поместив их в раздел [safe_mysqld] файла my.cnf. safe_mysqld будет считывать все опции из разделов файлов опций [mysqld], [server] и [safe_mysqld].

    Обратите внимание: все опции, которые вводятся в командной строке для safe_mysqld, передаются mysqld. Если требуется применить в safe_mysqld какие-либо опции, которые mysqld не поддерживает, эти опции нужно определить в файле опций.

    Большинство опций safe_mysqld - те же, что и у mysqld.

    Safe_mysqld поддерживает следующие опции:

    -ledir=path
    Путь к mysqld
    -log-error=path
    Записывать журнал ошибок в указанный файл
    -datadir=path, 
    -defaults-extra-file=path, 
    -defaults-file=path, 
    -log=path, 
    -pid-file=path
    Служебные пути для mysqld
    -no-defaults
     
    -open-files-limit=#
    Максимальное количество файлов, которые могут быть открыты mysqld. Значение передается ulimit -n. Обратите внимание: чтобы эта опция работала корректно, необходимо запустить safe_mysqld от пользователя root!
    -port=#
    Номер порта для сетевой связи
    -socket=path
    Сокет для связи
    -timezone=#
    Устанавливает переменную часового пояса ( TZ ) в значение, передаваемое в этом параметре
    -core-file-size=#
    Размер файла, который mysqld должен быть способен создать. Используйте ulimit -c
    -mysqld=mysqld-version
    Имя версии mysqld в каталоге ledir
    -user=#
    Имя пользователя

    Сценарий safe_mysqld написан таким образом, чтобы можно было запустить сервер, инсталлированный как из исходного кода, так и из бинарной поставки MySQL, даже если компоненты сервера, в зависимости от используемой инсталляции, будут размещены несколько по-другому. Для safe_mysqld требуется выполнение одного из следующих условий.

  • Сервер и базы данных можно обнаружить относительно каталога, в котором вызывается safe_mysqld. safe_mysqld ищет в своей рабочей директории bin и data (для бинарных дистрибутивов) или libexec и var (для дистрибутивов с исходным кодом). Это условие должно выполняться, если safe_mysqld запускается из директории, в которую инсталлирован MySQL (например /usr/local/mysql для бинарного дистрибутива).
  • Если сервер и базы данных не могут быть найдены относительно рабочей директории, safe_mysqld пытается найти их по абсолютным путям. Типичные местоположения — /usr/local/libexec и /usr/local/var. Действительные местоположения определяются при создании дистрибутива, из которого запускается safe_mysqld. Они должны быть корректными, если MySQL был инсталлирован в стандартное местоположение.
  • Поскольку safe_mysqld будет пытаться найти сервер и базы данных относительно собственной рабочей директории, можно инсталлировать двоичный дистрибутив MySQL куда угодно, при условии, что safe_mysqld будет запускаться из директории, в которой установлен MySQL:

    shell> cd mysql_installation_directory
    shell> bin/safe_mysqld

    Если safe_mysqld не может запустить сервер, даже в том случае, когда он вызывается из инсталляционной директории MySQL, сценарий safe_mysqld можно модифицировать так, чтобы он использовал верный путь к mysqld и опции путей, которые являются правильными для вашей системы. Обратите внимание: если в будущем вы будете делать апгрейд MySQL, новая версия safe_mysqld будет записана поверх старой, поэтому нужно сделать копию отредактированной версии, которую вы сможете затем установить повторно.

    Mysqld_multi, программа для управления множеством серверов MySQL

    Программа mysqld_multi предназначена для управления несколькими процессами mysqld, работающих на различных сокетах Unix и портах TCP/IP.

    Программа будет искать группу(группы) [mysqld#] в my.cnf (или заданных при помощи -config-file=... файлах), где # — любое положительное число, начиная с 1. Мы говорим про этот номер далее как про номер группы опций, или GNR. Номера групп различают группы опций одну от другой и используются как аргумент при запуске mysqld_multi чтобы указать, какие серверы вы хотите запустить, остановить или получить статус. Эти группы должны быть такими же, как и обычная группа [mysqld], но с такими портом, сокетом и т.д., которые требуются для каждого отдельного процесса mysqld.

    mysqld_multi запускается в таком синтаксисе:

    Использование: mysqld_multi [OPTIONS] {start|stop|report} [GNR,GNR,GNR...]
    или      mysqld_multi [OPTIONS] {start|stop|report} [GNR-GNR,GNR,GNR-GNR,...]

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

    shell> mysqld_multi -example

    В качестве разделителей в списке GNR применяются запятые, комбинации создаются при помощи тире. Последнее означает, что будут задействованы все номера GNR из диапазона GNR1-GNR2. Если не задан аргумент GNR, то все группы будут либо запущены, либо остановлены, либо будет выведен отчет об этих группах. Обратите внимание, что в списке GNR не должно быть никаких пропусков (пробелов, символов табуляции или пустых строк). Любые данные после пропуска будут игнорироваться.

    mysqld_multi поддерживает следующие опции:

    -config-file=...
    Альтернативный файл конфигурации ( config file ). Примечание: данный файл не влияет на собственные опции этой программы (группа [mysqld_multi] ), а только на группы [mysqld#]. Без этой опции поиск всех данных будет осуществляться только в обычном файле my.cnf
    -example
    Представляет пример файла конфигурации
    -log=...
    Файл журнала. Имя файла журнала и полный путь к нему. Примечание: если файл существует, записи будут добавляться в конец файла
    -mysqladmin=...
    Исполняемый файл mysqladmin, используемый для завершения работы сервера
    -mysqld=...
    Исполняемый файл mysqld, который будет использоваться. Обратите внимание: в этой опции можно также указывать safe_mysqld. Опции передаются mysqld. Необходимо только удостовериться, что в переменной окружения PATH имеется mysqld или что установлен safe_mysqld
    -no-log
    Вывод в stdout вместо журнала. По умолчанию журналы включены
    -password=...
    Пароль пользователя для доступа к mysqladmin
    -tcp-ip
    Подсоединение к серверу(ам) MySQL по TCP/IP вместо Unix-сокетов. Данная опция влияет на завершение работы сервера и создание отчетов. Если файл сокета отсутствует, сервер будет работать, но к нему можно будет обращаться только через порт TCP/IP. По умолчанию соединение осуществляется через сокет Unix
    -user=...
    Имя пользователя MySQL для mysqladmin
    -version
    Вывод номера версии и завершение работы

    myisampack, MySQL-генератор сжатых таблиц (только для чтения)

    Утилита myisampack используется для сжатия таблиц MyISAM, а утилита pack_isam — для сжатия таблиц ISAM. Поскольку таблицы ISAM являются устаревшими, здесь будет рассматриваться только myisampack.

    myisampack сжимает каждый столбец в таблице по отдельности. Информация, необходимая для декомпрессии столбцов, считывается в память при открытии таблицы. В результате обеспечивается более высокая производительность при доступе к отдельным записям, поскольку нужно распаковывать только одну запись, а не значительно больший по размеру дисковый блок, как при использовании программы Stacker в MS DOS. В среднем myisampack сжимает файл данных на 40%-70%.

    MySQL использует отображение в памяти ( mmap() ) для сжатых таблиц, а если mmap() не работает, возвращается назад к нормальному режиму чтения/записи.

    Обратите внимание на следующее:

  • После сжатия таблица доступна в режиме только для чтения. Это удобно, скажем, для записи на CD.
  • myisampack может также сжимать столбцы c типами BLOB или TEXT.
  • Утилиту myisampack можно запустить следующим образом:

    shell> myisampack [options] filename ...

    Каждое имя файла ( filename ) должно быть именем индексного файла ( .MYI ). Если вы не находитесь в директории базы данных, необходимо указать полный путь к файлу. Допускается опускать расширение .MYI.

    myisampack поддерживает следующие опции:

    -b, 
    
    -backup
    Создает резервную копию таблицы, присваивая ей имя tbl_name.OLD
    -#,
     
    -debug=debug_options
    Выводить журнал отладки. Строка debug_options часто принимает значение d:t:o,filename
    -f, 
    
    -force
    Сжатие таблицы происходит, даже если она увеличивается или если существует временный файл. Во время сжатия таблицы myisampack создает временный файл tbl_name.TMD. Если вы вручную прекратите выполнение myisampack, может оказаться, что файл tbl_name.TMD не будет удален. Обычно если myisampack обнаруживает существующий tbl_name.TMD, она прекращает работу и выдает ошибку. При указании опции -force myisampack сжимает таблицу в любом случае
    -j big_tbl_name, 
    
    -join=big_tbl_name
    Соединяет все таблицы, указанные в командной строке, в одну таблицу big_tbl_name. Все таблицы, подлежащие объединению, должны быть идентичными (одинаковые имена и типы столбцов, одинаковые индексы и т.д.)
    -p #, 
    -packlength=#
    Определяет разрядность поля, хранящего длину строки, в байтах. Может принимать значения 1, 2 или 3. ( myisampack хранит все строки с указателями длины размером в 1, 2, или 3 байта. В большинстве случаев myisampack способна определить правильное значение длины перед началом сжатия файла, но во время сжатия она может обнаружить, что может быть использована более короткая длина. В этом случае myisampack выведет сообщение о том, что в следующий раз при сжатии данного файла можно использовать более короткую длину записи.)
    -s, 
    
    -silent
    Молчаливый режим. Сообщения выводятся только при возникновении ошибок
    -t,
     
    -test
    Сжатие таблицы не выполняется, происходит только проверка процедуры сжатия
    -T dir_name, 
    
    -tmp_dir=dir_name
    Указанная директория используется как местоположение для создания временной таблицы
    -w,
    
    -wait
    Если таблица уже используется, подождать повторить попытку. Если сервер mysqld был вызван с опцией -skip-external-locking, то не самая лучшая идея — вызывать myisampack, если таблица может модифицироваться во время процесса сжатия

    Последовательность приведенных ниже команд иллюстрирует типичный сеанс сжатия таблицы:

    shell> ls -l station.*
    -rw-rw-r--   1 monty    my         994128 Apr 17 19:00 station.MYD
    -rw-rw-r--   1 monty    my          53248 Apr 17 19:00 station.MYI
    -rw-rw-r--   1 monty    my           5767 Apr 17 19:00 station.frm
    
    shell> myisamchk -dvv station
    
    MyISAM file:     station
    Isam-version:  2
    Creation time: 1996-03-13 10:08:58
    Recover time:  1997-02-02  3:06:43
    Data records:              1192  Deleted blocks:              0
    Datafile: Parts:           1192  Deleted data:                0
    Datafile pointer (bytes):     2  Keyfile pointer (bytes):     2
    Max datafile length:   54657023  Max keyfile length:   33554431
    Recordlength:               834
    Record format: Fixed length
    
    table description:
    Key Start Len Index   Type                       Root  Blocksize    Rec/key
    1   2     4   unique  unsigned long              1024       1024          1
    2   32    30  multip. text                      10240       1024          1
    
    Field Start Length Type
    1     1     1
    2     2     4
    
    ... ... ... ...
    ... ... ... ...
    
    56    827   4
    57    831   4
    
    shell> myisampack station.MYI
    Compressing station.MYI: (1192 records)
    - Calculating statistics
    
    normal:     20  empty-space:      16  empty-zero:        12  empty-fill:  11
    pre-space:   0  end-space:        12  table-lookups:      5  zero:         7
    Original trees:  57  After join: 17
    - Compressing file
    87.14%
    
    shell> ls -l station.*
    -rw-rw-r--   1 monty    my         127874 Apr 17 19:00 station.MYD
    -rw-rw-r--   1 monty    my          55296 Apr 17 19:04 station.MYI
    -rw-rw-r--   1 monty    my           5767 Apr 17 19:00 station.frm
    
    shell> myisamchk -dvv station
    
    MyISAM file:     station
    Isam-version:  2
    Creation time: 1996-03-13 10:08:58
    Recover time:  1997-04-17 19:04:26
    Data records:              1192  Deleted blocks:              0
    Datafile: Parts:           1192  Deleted data:                0
    Datafilepointer (bytes):      3  Keyfile pointer (bytes):     1
    Max datafile length:   16777215  Max keyfile length:     131071
    Recordlength:               834
    Record format: Compressed
    
    table description:
    Key Start Len Index   Type                       Root  Blocksize    Rec/key
    1   2     4   unique  unsigned long             10240       1024          1
    2   32    30  multip. text                      54272       1024          1
    
    Field Start Length Type                         Huff tree  Bits
    1     1     1      constant                             1     0
    2     2     4      zerofill(1)                          2     9
    3     6     4      no zeros, zerofill(1)                2     9
    4     10    1                                           3     9
    5     11    20     table-lookup                         4     0
    6     31    1                                           3     9
    7     32    30     no endspace, not_always              5     9
    
    ... ... ... ...
    ... ... ... ...
    
    53    805   1                                          17     1
    54    806   1                                           3     9
    55    807   20     no empty                             3     9
    56    827   4      no zeros, zerofill(2)                2     9
    57    831   4      no zeros, zerofill(1)                2     9

    Ниже приведено описание вывода myisampack:

    normal
    Количество столбцов, для которых не используется никакого дополнительного сжатия
    empty-space
    Количество столбцов, содержащих пустые значения; они занимают по 1 биту
    empty-zero
    Количество целочисленных столбцов, в которых содержатся только двоичные нули ( ascii 0 ); каждый из них будет занимать 1 бит
    empty-fill
    Количество целочисленных столбцов, значения которых не полностью занимают отведенную для них разрядность в байтах; тип этих столбцов изменяется на тип с меньшей разрядностью (например, столбец INTEGER может быть изменен на MEDIUMINT )
    pre-space
    Количество десятичных столбцов, которые хранятся с начальными пробелами. В этом случае каждое значение будет содержать число ведущих пробелов
    end-space
    Количество столбцов, имеющих много оконечных пробелов. В этом случае каждое значение будет содержать число таких пробелов
    table-lookup
    Столбец имеет только небольшое количество различающихся значений, которые перед сжатием Хаффмана ( Huffman ) конвертируются в ENUM
    zero
    Количество столбцов, все значения которых являются нулями
    Original trees
    Начальное количество деревьев Хаффмана
    After join
    Количество различных деревьев Хаффмана, оставленных после соединения деревьев для сохранения небольшого пространства в заголовках

    После сжатия таблицы myisamchk -dvv выводит дополнительную информацию по каждому полю.

  • Type

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

    constant
    Все строки содержат одинаковое значение
    no endspace
    Не сохраняются замыкающие пробелы
    no endspace,	
    not_always
    Не сохраняются замыкающие пробелы и не производится сжатие за счет замыкающих пробелов для всех значений
    no endspace, 
    no empty
    Не сохраняются замыкающие пробелы. Не сохраняются пустые значения
    table-lookup
    Столбец был преобразован к ENUM
    zerofill(n)
    В значении n главных байтов всегда являются 0 и не сохранены.
    no zeros
    Не сохраняются нули.
    always zero
    Значения 0 хранятся в 1 бите.
  • Huff tree

    Дерево Хаффмана, связанное с полем.

  • Bits

    Количество битов, используемых в дереве Хаффмана.

  • После запуска pack_isam/myisampack нужно запустить isamchk/myisamchk для повторного создания индекса. В это время можно также отсортировать индексные блоки и создать статистику, необходимую для более эффективной работы оптимизатора MySQL:

    myisamchk -rq -analyze -sort-index table_name.MYI
    isamchk -rq -analyze -sort-index table_name.ISM

    После установки сжатой таблицы в директорию базы данных MySQL нужно проделать операцию mysqladmin flush-tables, чтобы сервер mysqld начал использовать новую таблицу.

    Для распаковки сжатой таблицы можно использовать опцию -unpack isamchk или myisamchk.

    Обзор клиентских сценариев и утилит

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

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

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

    Все программы MySQL принимают множество различных опций.

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

    В приведенном ниже списке дано краткое описание клиентских программ MySQL.

    msql2mysql
    Сценарий оболочки операционной системы, преобразующий программы базы данных mSQL к виду, приемлемому для MySQL. Он не обрабатывает всех случаев, но с него хорошо начинать такое преобразование
    mysqlaccess
    Сценарий, который проверяет привилегии доступа для комбинации значений хоста, пользователя и базы данных
    mysqladmin
    Утилита для выполнения административных функций, таких, как создание или удаление баз данных, перезагрузка таблиц привилегий, запись на диск содержимого таблиц, находящегося в буфере, повторное открытие файлов журналов. Утилита mysqladmin может также использоваться для получения информации с сервера о номере версии, процессах и состоянии сервера
    mysqldump
    Выводит содержимое базы данных MySQL в виде файла с SQL-операторами или в виде текстовых файлов с символом табуляции в качестве разделителя
    mysqlimport
    Импортирует текстовые файлы в соответствующие таблицы, используя команду LOAD DATA INFILE
    >mysqlshow
    Отображает информацию о существующих базах данных, таблицах, полях и индексах
    replace
    Служебная программа, использующаяся в сценарии msql2mysql, но имеющая также более широкое применение. Утилита replace изменяет строки, находящиеся в файлах или в стандартных входных данных. Использует принцип конечного автомата, чтобы в первую очередь найти соответствие длинных строк. Может применяться для замены строк

    Утилита командной строки mysql

    Утилита командной строки mysql является простой SQL-оболочкой (с возможностями библиотеки readline проекта GNU). Она поддерживает интерактивный и неинтерактивный режимы. В интерактивном режиме результаты запроса представляются в 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', и нажмите клавишу "Ввод".

    Утилита командной строки mysql поддерживает следующие параметры.

    -?, -help
    Вывод справочной информации об использовании программы и выход из нее
    -A, -no-auto-rehash
    Отключает автоматическое рехеширование. Rehash следует использовать для получения хеша таблиц и полей. Это обеспечивает более быстрый старт mysql
    -prompt=...
    Устанавливает приглашение на ввод команд в заданном формате
    -b, -no-beep
    Выключает звуковой сигнал об ошибке
    -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
    Выключает именованные команды. Следует использовать только команды вида \* либо применять именованные команды только в начале строки, заканчивающейся символом ';'
    -i, -ignore-space
    Игнорировать пробел после имен функций
    -h, -host=...
    Подсоединиться к базе данных на указанном хосте
    -H, -html
    Вывести выходные данные в виде HTML
    -X, -xml
    Вывести выходные данные в виде XML
    -L, -skip-line-numbers
    Не указывать номера строк для ошибок. Полезно для сравнения результирующих файлов, включающих сообщения об ошибках
    -no-pager
    Блокирует пейджер (программа постраничного вывода) и выводит результат в стандартный вывод stdout (в Unix)
    -no-tee
    Блокирует выходной файл. Смотрите также команду \h (интерактивная помощь)
    -n, -unbuffered
    Очищать буфер после каждого запроса
    -N, -skip-column-names
    Не указывать имена столбцов в результатах
    -o, -one-database
    Обновить только базу данных, установленную по умолчанию. Позволяет пропускать обновления другой базы данных в журнале обновления
    -pager[=...]
    Устанавливает тип данных вывода. По умолчанию это переменная окружения PAGER. Ее возможные значения - less, more, cat [> имя файла], и т.д.
    -p[password], -
    password[=...]
    Пароль, используемый при подсоединении к серверу баз данных. Если в командной строке пароль не указан, то он запрашивается у пользователя. При использовании краткой формы -p не оставляйте пробел между параметром и значением пароля
    -P порт, -port=порт
    Номер порта TCP/IP, используемый для подсоединения
    -q, -quick
    Не кэшировать результат. Выводить его строка за строкой так, как он приходит от сервера. Это может замедлить скорость работы сервера, если вывод результата будет приостановлен. Файл истории не используется
    -s, -silent
    Режим молчания. Выводить только сообщения об ошибках
    -S -socket=...
    Файл сокета, используемый для подсоединения
    -t -table
    Выводить результат в табличном формате. Установлено по умолчанию для непакетного режима
    -tee=...
    Присоединить что-либо к выходному файлу. Смотрите также команду \h (интерактивная помощь). Этот параметр не работает в пакетном режиме
    -u, -user=#
    Имя пользователя MySQL, если этот пользователь не является активным в данное время

    mysqladmin, администрирование MySQL-сервера.

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

    shell> mysqladmin [ПАРАМЕТРЫ] command [command-option] command ...

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

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

  • create databasename

    Создать новую базу данных.

  • drop databasename

    Удалить базу данных и все ее таблицы.

  • extended-status

    Выдает расширенный отчет о состоянии сервера (более полный, чем при команде status ).

  • flush-hosts

    Сбросить и перезагрузить хосты.

  • flush-logs

    Сбросить на диск и переоткрыть все журналы.

  • flush-tables

    Закрыть все открытые таблицы.

  • flush-privileges

    Перечитать таблицы привилегий.

  • kill id,id,...

    Завершить потоки mysql с указанными thread-id.

  • 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 Количество секунд с момента запуска MySQL-сервера
    Threads Количество активных потоков (клиентов)
    Questions Количество вопросов от клиентов с момента запуска программы mysqld
    Slow queries Количество запросов, потребовавших большее количество секунд, чем установлено в конфигурации ключом long_query_time
    Opens Количество таблиц, открытых программой mysqld
    Flush table Количество выполненных команд flush ..., refresh, reload
    Open tables Количество таблиц, открытых в данное время
    Memory in use Память, используемая непосредственно программой mysqld (доступно только в случае компиляции MySQL с установленным значением -with-debug=full )
    Max memory used Максимальный объем памяти, использованный непосредственно программой mysqld (доступно только в случае компиляции MySQL с установленным значением -with-debug=full )

    При выполнении 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.

  • Чаще всего утилита mysqldump используется для получения резервной копии всех баз данных.

    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 ...] > my_databases.sql

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

    mysqldump -all-databases > all_databases.sql

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

    Утилита mysqlhotcopy представляет собой Perl-сценарий, использующий SQL-команды LOCK TABLES, FLUSH TABLES и Unix-утилиты 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 поддерживает следующие опции:

  • -u, -user=#

    Имя пользователя для входа в базу данных.

  • -p, -password=#

    Используемый пароль при подсоединении к серверу.

  • -P, -port=#

    Номер порта, используемого для подсоединения к локальному серверу.

  • -S, -socket=#

    Номер сокета, используемого для подсоединения к локальному серверу.

  • -keepold

    Не удалять предыдущий результат (только что переименованный) после выполнения команды.

  • -q, -quiet

    Выводить только сообщения об ошибках.

  • -debug

    Разрешить отладку.

  • -n, -dryrun

    Сообщать о действиях без их выполнения.

  • -regexp=#

    Копировать все базы данных с именами, встречающимися в функции regexp.

  • -checkpoint=#

    Внести проверочную запись в предусмотренную таблицу базы данных.

  • -flushlog

    Записать на диск данные журналов из буфера, как только все таблицы заблокируются.

  • -tmpdir=#

    Временная директория (вместо /tmp ).

  • А также некоторые другие. Более полное описание данного сценария можно посмотреть в документации по языку программирования Perl.

    Сценарий mysqlhotcopy берет информацию для групп [client] и [mysqlhotcopy] из файлов опций.

    Для выполнения программы mysqlhotcopy необходимы доступ для записи в директорию, куда будет помещена копия, и привилегия выполнения команды SELECT для копируемых таблиц и команды RELOAD для MySQL-сервера (чтобы выполнить FLUSH TABLES ).

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

    Утилита mysqlimport обеспечивает интерфейс командной строки для SQL-оператора LOAD DATA INFILE. Большинство параметров mysqlimport полностью соответствует аналогичным параметрам для оператора LOAD DATA INFILE.

    Утилита mysqlimport вызывается следующим образом:

    shell> mysqlimport [параметры] database textfile1 [textfile2 ...]

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

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

  • -c, -columns=...

    Эта опция принимает в качестве аргумента список разделенных запятыми имен полей. Данный список полей используется для создания соответствующей команды LOAD DATA INFILE, которая затем посылается в MySQL.

  • -C, -compress

    Использовать компрессию в связи между клиентом и сервером, если они оба поддерживают сжатие.

  • -#, -debug[=option_string]

    Отслеживать прохождение программы (для отладки).

  • -d, -delete

    Удалить данные из таблицы перед импортированием текстового файла.

  • -f, -force

    Игнорировать ошибки. Например, если таблица для текстового файла не существует, продолжать обработку остающихся файлов. Без параметра -force утилита mysqlimport прекращает работу при отсутствии таблицы.

  • -h host_name, -host=host_name

    Импортировать данные в MySQL-сервер на указанном хосте. Значение хоста по умолчанию — localhost.

  • -l, -lock-tables

    Заблокировать все таблицы для записи перед обработкой любых текстовых файлов. Это обеспечивает синхронизацию всех таблиц на сервере.

  • -L, -local

    Читать входящие файлы из клиента. По умолчанию предполагается, что текстовые файлы расположены на сервере при подсоединении к localhost (значение хоста по умолчанию).

  • -pyour_pass, -password[=your_pass]

    Используемый пароль при подключении к серверу. Если аргумент =your_pass не введен, mysqlimport предложит ввести пароль.

  • -P port_num, -port=port_num

    Номер порта TCP/IP, используемого для подсоединения к хосту.

  • -r, -replace

    Опции -replace и -ignore управляют обработкой поступающих на вход записей, которые дублируют имеющиеся записи по значениям уникальных ключей. Если задано значение -replace, новые строки заменяют существующие с тем же самым значением уникального ключа. Если задано значение -ignore, входные строки, которые дублируют существующую строку по значению уникального ключа, пропускаются. Если же ни одна из опций не задана, то при обнаружении ключа-дубликата возникает ошибка и остаток текстового файла игнорируется.

  • -s, -silent

    Режим молчания. Выводить только сообщения об ошибках.

  • -u user_name, -user=user_name

    Имя пользователя MySQL-сервера, используемое при подсоединении к серверу. Значением по умолчанию является имя для входа в Unix.

  • mysqlshow, просмотр баз данных, таблиц и столбцов

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

    Аналогичную информацию можно получить с помощью программы mysql, используя команду SHOW.

    Утилита mysqlshow вызывается следующим образом:

    shell> mysqlshow [ПАРАМЕТРЫ] [database [table [column]]]
  • Если имя базы данных не указано, то выдается список всех существующих баз данных.
  • Если не указана таблица — показываются все таблицы, найденные в этой базе данных.
  • Если не задан столбец — показываются все найденные в таблице столбцы и представленные в виде столбцов данные.
  • Следует отметить, что в более новых версиях MySQL пользователь может просмотреть только те базы/таблицы/столбцы, для которых у него имеются соответствующие привилегии.

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

    Это может вызвать путаницу при попытке просмотреть столбцы таблицы с символом _, так как в таком случае mysqlshow покажет только имена таблиц, совпадающие с шаблоном. Ситуацию можно легко исправить добавлением дополнительного символа % в конец командной строки (как отдельного аргумента).

    perror, разъяснение кодов ошибок

    Для большинства системных ошибок, помимо внутреннего текстового сообщения MySQL, можно также выводить номер кода системной ошибки в одном из следующих стилей: message ... (errno: #) или message ... (Errcode: #).

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

    perror выводит описание кода системной ошибки или код ошибки обработчика таблиц MyISAM/ISAM.

    perror вызывается следующим образом:

    shell> perror [ПАРАМЕТРЫ] [ERRORCODE [ERRORCODE...]]

    Пример:

    shell> perror 13 64
    Error code 13: Доступ запрещен
    Error code 64: Компьютер не находится в сети

    Следует учитывать, что сообщения об ошибках в большинстве своем являются системно-зависимыми!

    Запуск SQL-команд из текстового файла

    Обычно клиент mysql используется в интерактивном режиме, например, следующим образом:

    shell> mysql database

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

    shell> mysql database < text_file

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

    shell> mysql < text_file

    Если программа mysql уже работает, можно запустить файл с SQL-сценарием, используя команду source:

    mysql> source filename;
    Страницы:

    Обзор серверных сценариев и утилит

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

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

    В следующем списке приводятся краткие описания серверных программ MySQL.

  • myisamchk

    Утилита, применяемая для описания, проверки, оптимизации и восстановления таблиц MySQL. Поскольку утилита myisamchk имеет много функций, она описывается отдельно.

  • make_binary_distribution

    Создает бинарную поставку откомпилированного кода MySQL. Эту версию при помощи FTP можно передать на сайт support.mysql.com в директорию /pub/mysql/Incoming, чтобы ею могли воспользоваться и другие пользователи MySQL.

  • mysqlbug

    Сценарий, составляющий отчет о возникшей в MySQL неполадке. Этот сценарий должен всегда использоваться для составления отчета для почтового списка рассылки MySQL.

  • mysqld

    Сам сервер MySQL, демон. Он должен работать постоянно.

  • mysql_install_db

    Создает таблицы привилегий MySQL с заданными по умолчанию привилегиями. Это обычно делается только один раз, при первой инсталляции MySQL в системе.

  • safe_mysqld , оболочка mysqld

    В MySQL 4.0 safe_mysqld был переименован в mysqld_safe.

    safe_mysqld — это сценарий, с помощью которого рекомендуется запускать демон mysqld на Unix. safe_mysqld служит для реализации неких дополнительных функций безопасности для mysqld, таких, как возможность перезапуска сервера при обнаружении ошибки и записи в журнал информации о процессе работы mysqld.

    Если не указаны опции -mysqld=# или -mysqld-version=#, safe_mysqld будет использовать исполняемый файл mysqld-max, если последний существует. Если mysqld-max не существует, safe_mysqld запустит mysqld. Это позволяет легко выяснить, что даст использование mysqld-max вместо mysqld: просто скопируйте mysqld-max поверх mysqld, и он будет работать.

    Как правило, редактировать сценарий safe_mysqld не следует, однако можно указать опции для safe_mysqld, поместив их в раздел [safe_mysqld] файла my.cnf. safe_mysqld будет считывать все опции из разделов файлов опций [mysqld], [server] и [safe_mysqld].

    Обратите внимание: все опции, которые вводятся в командной строке для safe_mysqld, передаются mysqld. Если требуется применить в safe_mysqld какие-либо опции, которые mysqld не поддерживает, эти опции нужно определить в файле опций.

    Большинство опций safe_mysqld - те же, что и у mysqld.

    Safe_mysqld поддерживает следующие опции:

    -ledir=path
    Путь к mysqld
    -log-error=path
    Записывать журнал ошибок в указанный файл
    -datadir=path, 
    -defaults-extra-file=path, 
    -defaults-file=path, 
    -log=path, 
    -pid-file=path
    Служебные пути для mysqld
    -no-defaults
     
    -open-files-limit=#
    Максимальное количество файлов, которые могут быть открыты mysqld. Значение передается ulimit -n. Обратите внимание: чтобы эта опция работала корректно, необходимо запустить safe_mysqld от пользователя root!
    -port=#
    Номер порта для сетевой связи
    -socket=path
    Сокет для связи
    -timezone=#
    Устанавливает переменную часового пояса ( TZ ) в значение, передаваемое в этом параметре
    -core-file-size=#
    Размер файла, который mysqld должен быть способен создать. Используйте ulimit -c
    -mysqld=mysqld-version
    Имя версии mysqld в каталоге ledir
    -user=#
    Имя пользователя

    Сценарий safe_mysqld написан таким образом, чтобы можно было запустить сервер, инсталлированный как из исходного кода, так и из бинарной поставки MySQL, даже если компоненты сервера, в зависимости от используемой инсталляции, будут размещены несколько по-другому. Для safe_mysqld требуется выполнение одного из следующих условий.

  • Сервер и базы данных можно обнаружить относительно каталога, в котором вызывается safe_mysqld. safe_mysqld ищет в своей рабочей директории bin и data (для бинарных дистрибутивов) или libexec и var (для дистрибутивов с исходным кодом). Это условие должно выполняться, если safe_mysqld запускается из директории, в которую инсталлирован MySQL (например /usr/local/mysql для бинарного дистрибутива).
  • Если сервер и базы данных не могут быть найдены относительно рабочей директории, safe_mysqld пытается найти их по абсолютным путям. Типичные местоположения — /usr/local/libexec и /usr/local/var. Действительные местоположения определяются при создании дистрибутива, из которого запускается safe_mysqld. Они должны быть корректными, если MySQL был инсталлирован в стандартное местоположение.
  • Поскольку safe_mysqld будет пытаться найти сервер и базы данных относительно собственной рабочей директории, можно инсталлировать двоичный дистрибутив MySQL куда угодно, при условии, что safe_mysqld будет запускаться из директории, в которой установлен MySQL:

    shell> cd mysql_installation_directory
    shell> bin/safe_mysqld

    Если safe_mysqld не может запустить сервер, даже в том случае, когда он вызывается из инсталляционной директории MySQL, сценарий safe_mysqld можно модифицировать так, чтобы он использовал верный путь к mysqld и опции путей, которые являются правильными для вашей системы. Обратите внимание: если в будущем вы будете делать апгрейд MySQL, новая версия safe_mysqld будет записана поверх старой, поэтому нужно сделать копию отредактированной версии, которую вы сможете затем установить повторно.

    Mysqld_multi, программа для управления множеством серверов MySQL

    Программа mysqld_multi предназначена для управления несколькими процессами mysqld, работающих на различных сокетах Unix и портах TCP/IP.

    Программа будет искать группу(группы) [mysqld#] в my.cnf (или заданных при помощи -config-file=... файлах), где # — любое положительное число, начиная с 1. Мы говорим про этот номер далее как про номер группы опций, или GNR. Номера групп различают группы опций одну от другой и используются как аргумент при запуске mysqld_multi чтобы указать, какие серверы вы хотите запустить, остановить или получить статус. Эти группы должны быть такими же, как и обычная группа [mysqld], но с такими портом, сокетом и т.д., которые требуются для каждого отдельного процесса mysqld.

    mysqld_multi запускается в таком синтаксисе:

    Использование: mysqld_multi [OPTIONS] {start|stop|report} [GNR,GNR,GNR...]
    или      mysqld_multi [OPTIONS] {start|stop|report} [GNR-GNR,GNR,GNR-GNR,...]

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

    shell> mysqld_multi -example

    В качестве разделителей в списке GNR применяются запятые, комбинации создаются при помощи тире. Последнее означает, что будут задействованы все номера GNR из диапазона GNR1-GNR2. Если не задан аргумент GNR, то все группы будут либо запущены, либо остановлены, либо будет выведен отчет об этих группах. Обратите внимание, что в списке GNR не должно быть никаких пропусков (пробелов, символов табуляции или пустых строк). Любые данные после пропуска будут игнорироваться.

    mysqld_multi поддерживает следующие опции:

    -config-file=...
    Альтернативный файл конфигурации ( config file ). Примечание: данный файл не влияет на собственные опции этой программы (группа [mysqld_multi] ), а только на группы [mysqld#]. Без этой опции поиск всех данных будет осуществляться только в обычном файле my.cnf
    -example
    Представляет пример файла конфигурации
    -log=...
    Файл журнала. Имя файла журнала и полный путь к нему. Примечание: если файл существует, записи будут добавляться в конец файла
    -mysqladmin=...
    Исполняемый файл mysqladmin, используемый для завершения работы сервера
    -mysqld=...
    Исполняемый файл mysqld, который будет использоваться. Обратите внимание: в этой опции можно также указывать safe_mysqld. Опции передаются mysqld. Необходимо только удостовериться, что в переменной окружения PATH имеется mysqld или что установлен safe_mysqld
    -no-log
    Вывод в stdout вместо журнала. По умолчанию журналы включены
    -password=...
    Пароль пользователя для доступа к mysqladmin
    -tcp-ip
    Подсоединение к серверу(ам) MySQL по TCP/IP вместо Unix-сокетов. Данная опция влияет на завершение работы сервера и создание отчетов. Если файл сокета отсутствует, сервер будет работать, но к нему можно будет обращаться только через порт TCP/IP. По умолчанию соединение осуществляется через сокет Unix
    -user=...
    Имя пользователя MySQL для mysqladmin
    -version
    Вывод номера версии и завершение работы

    myisampack, MySQL-генератор сжатых таблиц (только для чтения)

    Утилита myisampack используется для сжатия таблиц MyISAM, а утилита pack_isam — для сжатия таблиц ISAM. Поскольку таблицы ISAM являются устаревшими, здесь будет рассматриваться только myisampack.

    myisampack сжимает каждый столбец в таблице по отдельности. Информация, необходимая для декомпрессии столбцов, считывается в память при открытии таблицы. В результате обеспечивается более высокая производительность при доступе к отдельным записям, поскольку нужно распаковывать только одну запись, а не значительно больший по размеру дисковый блок, как при использовании программы Stacker в MS DOS. В среднем myisampack сжимает файл данных на 40%-70%.

    MySQL использует отображение в памяти ( mmap() ) для сжатых таблиц, а если mmap() не работает, возвращается назад к нормальному режиму чтения/записи.

    Обратите внимание на следующее:

  • После сжатия таблица доступна в режиме только для чтения. Это удобно, скажем, для записи на CD.
  • myisampack может также сжимать столбцы c типами BLOB или TEXT.
  • Утилиту myisampack можно запустить следующим образом:

    shell> myisampack [options] filename ...

    Каждое имя файла ( filename ) должно быть именем индексного файла ( .MYI ). Если вы не находитесь в директории базы данных, необходимо указать полный путь к файлу. Допускается опускать расширение .MYI.

    myisampack поддерживает следующие опции:

    -b, 
    
    -backup
    Создает резервную копию таблицы, присваивая ей имя tbl_name.OLD
    -#,
     
    -debug=debug_options
    Выводить журнал отладки. Строка debug_options часто принимает значение d:t:o,filename
    -f, 
    
    -force
    Сжатие таблицы происходит, даже если она увеличивается или если существует временный файл. Во время сжатия таблицы myisampack создает временный файл tbl_name.TMD. Если вы вручную прекратите выполнение myisampack, может оказаться, что файл tbl_name.TMD не будет удален. Обычно если myisampack обнаруживает существующий tbl_name.TMD, она прекращает работу и выдает ошибку. При указании опции -force myisampack сжимает таблицу в любом случае
    -j big_tbl_name, 
    
    -join=big_tbl_name
    Соединяет все таблицы, указанные в командной строке, в одну таблицу big_tbl_name. Все таблицы, подлежащие объединению, должны быть идентичными (одинаковые имена и типы столбцов, одинаковые индексы и т.д.)
    -p #, 
    -packlength=#
    Определяет разрядность поля, хранящего длину строки, в байтах. Может принимать значения 1, 2 или 3. ( myisampack хранит все строки с указателями длины размером в 1, 2, или 3 байта. В большинстве случаев myisampack способна определить правильное значение длины перед началом сжатия файла, но во время сжатия она может обнаружить, что может быть использована более короткая длина. В этом случае myisampack выведет сообщение о том, что в следующий раз при сжатии данного файла можно использовать более короткую длину записи.)
    -s, 
    
    -silent
    Молчаливый режим. Сообщения выводятся только при возникновении ошибок
    -t,
     
    -test
    Сжатие таблицы не выполняется, происходит только проверка процедуры сжатия
    -T dir_name, 
    
    -tmp_dir=dir_name
    Указанная директория используется как местоположение для создания временной таблицы
    -w,
    
    -wait
    Если таблица уже используется, подождать повторить попытку. Если сервер mysqld был вызван с опцией -skip-external-locking, то не самая лучшая идея — вызывать myisampack, если таблица может модифицироваться во время процесса сжатия

    Последовательность приведенных ниже команд иллюстрирует типичный сеанс сжатия таблицы:

    shell> ls -l station.*
    -rw-rw-r--   1 monty    my         994128 Apr 17 19:00 station.MYD
    -rw-rw-r--   1 monty    my          53248 Apr 17 19:00 station.MYI
    -rw-rw-r--   1 monty    my           5767 Apr 17 19:00 station.frm
    
    shell> myisamchk -dvv station
    
    MyISAM file:     station
    Isam-version:  2
    Creation time: 1996-03-13 10:08:58
    Recover time:  1997-02-02  3:06:43
    Data records:              1192  Deleted blocks:              0
    Datafile: Parts:           1192  Deleted data:                0
    Datafile pointer (bytes):     2  Keyfile pointer (bytes):     2
    Max datafile length:   54657023  Max keyfile length:   33554431
    Recordlength:               834
    Record format: Fixed length
    
    table description:
    Key Start Len Index   Type                       Root  Blocksize    Rec/key
    1   2     4   unique  unsigned long              1024       1024          1
    2   32    30  multip. text                      10240       1024          1
    
    Field Start Length Type
    1     1     1
    2     2     4
    
    ... ... ... ...
    ... ... ... ...
    
    56    827   4
    57    831   4
    
    shell> myisampack station.MYI
    Compressing station.MYI: (1192 records)
    - Calculating statistics
    
    normal:     20  empty-space:      16  empty-zero:        12  empty-fill:  11
    pre-space:   0  end-space:        12  table-lookups:      5  zero:         7
    Original trees:  57  After join: 17
    - Compressing file
    87.14%
    
    shell> ls -l station.*
    -rw-rw-r--   1 monty    my         127874 Apr 17 19:00 station.MYD
    -rw-rw-r--   1 monty    my          55296 Apr 17 19:04 station.MYI
    -rw-rw-r--   1 monty    my           5767 Apr 17 19:00 station.frm
    
    shell> myisamchk -dvv station
    
    MyISAM file:     station
    Isam-version:  2
    Creation time: 1996-03-13 10:08:58
    Recover time:  1997-04-17 19:04:26
    Data records:              1192  Deleted blocks:              0
    Datafile: Parts:           1192  Deleted data:                0
    Datafilepointer (bytes):      3  Keyfile pointer (bytes):     1
    Max datafile length:   16777215  Max keyfile length:     131071
    Recordlength:               834
    Record format: Compressed
    
    table description:
    Key Start Len Index   Type                       Root  Blocksize    Rec/key
    1   2     4   unique  unsigned long             10240       1024          1
    2   32    30  multip. text                      54272       1024          1
    
    Field Start Length Type                         Huff tree  Bits
    1     1     1      constant                             1     0
    2     2     4      zerofill(1)                          2     9
    3     6     4      no zeros, zerofill(1)                2     9
    4     10    1                                           3     9
    5     11    20     table-lookup                         4     0
    6     31    1                                           3     9
    7     32    30     no endspace, not_always              5     9
    
    ... ... ... ...
    ... ... ... ...
    
    53    805   1                                          17     1
    54    806   1                                           3     9
    55    807   20     no empty                             3     9
    56    827   4      no zeros, zerofill(2)                2     9
    57    831   4      no zeros, zerofill(1)                2     9

    Ниже приведено описание вывода myisampack:

    normal
    Количество столбцов, для которых не используется никакого дополнительного сжатия
    empty-space
    Количество столбцов, содержащих пустые значения; они занимают по 1 биту
    empty-zero
    Количество целочисленных столбцов, в которых содержатся только двоичные нули ( ascii 0 ); каждый из них будет занимать 1 бит
    empty-fill
    Количество целочисленных столбцов, значения которых не полностью занимают отведенную для них разрядность в байтах; тип этих столбцов изменяется на тип с меньшей разрядностью (например, столбец INTEGER может быть изменен на MEDIUMINT )
    pre-space
    Количество десятичных столбцов, которые хранятся с начальными пробелами. В этом случае каждое значение будет содержать число ведущих пробелов
    end-space
    Количество столбцов, имеющих много оконечных пробелов. В этом случае каждое значение будет содержать число таких пробелов
    table-lookup
    Столбец имеет только небольшое количество различающихся значений, которые перед сжатием Хаффмана ( Huffman ) конвертируются в ENUM
    zero
    Количество столбцов, все значения которых являются нулями
    Original trees
    Начальное количество деревьев Хаффмана
    After join
    Количество различных деревьев Хаффмана, оставленных после соединения деревьев для сохранения небольшого пространства в заголовках

    После сжатия таблицы myisamchk -dvv выводит дополнительную информацию по каждому полю.

  • Type

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

    constant
    Все строки содержат одинаковое значение
    no endspace
    Не сохраняются замыкающие пробелы
    no endspace,	
    not_always
    Не сохраняются замыкающие пробелы и не производится сжатие за счет замыкающих пробелов для всех значений
    no endspace, 
    no empty
    Не сохраняются замыкающие пробелы. Не сохраняются пустые значения
    table-lookup
    Столбец был преобразован к ENUM
    zerofill(n)
    В значении n главных байтов всегда являются 0 и не сохранены.
    no zeros
    Не сохраняются нули.
    always zero
    Значения 0 хранятся в 1 бите.
  • Huff tree

    Дерево Хаффмана, связанное с полем.

  • Bits

    Количество битов, используемых в дереве Хаффмана.

  • После запуска pack_isam/myisampack нужно запустить isamchk/myisamchk для повторного создания индекса. В это время можно также отсортировать индексные блоки и создать статистику, необходимую для более эффективной работы оптимизатора MySQL:

    myisamchk -rq -analyze -sort-index table_name.MYI
    isamchk -rq -analyze -sort-index table_name.ISM

    После установки сжатой таблицы в директорию базы данных MySQL нужно проделать операцию mysqladmin flush-tables, чтобы сервер mysqld начал использовать новую таблицу.

    Для распаковки сжатой таблицы можно использовать опцию -unpack isamchk или myisamchk.

    Обзор клиентских сценариев и утилит

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

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

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

    Все программы MySQL принимают множество различных опций.

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

    В приведенном ниже списке дано краткое описание клиентских программ MySQL.

    msql2mysql
    Сценарий оболочки операционной системы, преобразующий программы базы данных mSQL к виду, приемлемому для MySQL. Он не обрабатывает всех случаев, но с него хорошо начинать такое преобразование
    mysqlaccess
    Сценарий, который проверяет привилегии доступа для комбинации значений хоста, пользователя и базы данных
    mysqladmin
    Утилита для выполнения административных функций, таких, как создание или удаление баз данных, перезагрузка таблиц привилегий, запись на диск содержимого таблиц, находящегося в буфере, повторное открытие файлов журналов. Утилита mysqladmin может также использоваться для получения информации с сервера о номере версии, процессах и состоянии сервера
    mysqldump
    Выводит содержимое базы данных MySQL в виде файла с SQL-операторами или в виде текстовых файлов с символом табуляции в качестве разделителя
    mysqlimport
    Импортирует текстовые файлы в соответствующие таблицы, используя команду LOAD DATA INFILE
    >mysqlshow
    Отображает информацию о существующих базах данных, таблицах, полях и индексах
    replace
    Служебная программа, использующаяся в сценарии msql2mysql, но имеющая также более широкое применение. Утилита replace изменяет строки, находящиеся в файлах или в стандартных входных данных. Использует принцип конечного автомата, чтобы в первую очередь найти соответствие длинных строк. Может применяться для замены строк

    Утилита командной строки mysql

    Утилита командной строки mysql является простой SQL-оболочкой (с возможностями библиотеки readline проекта GNU). Она поддерживает интерактивный и неинтерактивный режимы. В интерактивном режиме результаты запроса представляются в 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', и нажмите клавишу "Ввод".

    Утилита командной строки mysql поддерживает следующие параметры.

    -?, -help
    Вывод справочной информации об использовании программы и выход из нее
    -A, -no-auto-rehash
    Отключает автоматическое рехеширование. Rehash следует использовать для получения хеша таблиц и полей. Это обеспечивает более быстрый старт mysql
    -prompt=...
    Устанавливает приглашение на ввод команд в заданном формате
    -b, -no-beep
    Выключает звуковой сигнал об ошибке
    -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
    Выключает именованные команды. Следует использовать только команды вида \* либо применять именованные команды только в начале строки, заканчивающейся символом ';'
    -i, -ignore-space
    Игнорировать пробел после имен функций
    -h, -host=...
    Подсоединиться к базе данных на указанном хосте
    -H, -html
    Вывести выходные данные в виде HTML
    -X, -xml
    Вывести выходные данные в виде XML
    -L, -skip-line-numbers
    Не указывать номера строк для ошибок. Полезно для сравнения результирующих файлов, включающих сообщения об ошибках
    -no-pager
    Блокирует пейджер (программа постраничного вывода) и выводит результат в стандартный вывод stdout (в Unix)
    -no-tee
    Блокирует выходной файл. Смотрите также команду \h (интерактивная помощь)
    -n, -unbuffered
    Очищать буфер после каждого запроса
    -N, -skip-column-names
    Не указывать имена столбцов в результатах
    -o, -one-database
    Обновить только базу данных, установленную по умолчанию. Позволяет пропускать обновления другой базы данных в журнале обновления
    -pager[=...]
    Устанавливает тип данных вывода. По умолчанию это переменная окружения PAGER. Ее возможные значения - less, more, cat [> имя файла], и т.д.
    -p[password], -
    password[=...]
    Пароль, используемый при подсоединении к серверу баз данных. Если в командной строке пароль не указан, то он запрашивается у пользователя. При использовании краткой формы -p не оставляйте пробел между параметром и значением пароля
    -P порт, -port=порт
    Номер порта TCP/IP, используемый для подсоединения
    -q, -quick
    Не кэшировать результат. Выводить его строка за строкой так, как он приходит от сервера. Это может замедлить скорость работы сервера, если вывод результата будет приостановлен. Файл истории не используется
    -s, -silent
    Режим молчания. Выводить только сообщения об ошибках
    -S -socket=...
    Файл сокета, используемый для подсоединения
    -t -table
    Выводить результат в табличном формате. Установлено по умолчанию для непакетного режима
    -tee=...
    Присоединить что-либо к выходному файлу. Смотрите также команду \h (интерактивная помощь). Этот параметр не работает в пакетном режиме
    -u, -user=#
    Имя пользователя MySQL, если этот пользователь не является активным в данное время

    mysqladmin, администрирование MySQL-сервера.

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

    shell> mysqladmin [ПАРАМЕТРЫ] command [command-option] command ...

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

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

  • create databasename

    Создать новую базу данных.

  • drop databasename

    Удалить базу данных и все ее таблицы.

  • extended-status

    Выдает расширенный отчет о состоянии сервера (более полный, чем при команде status ).

  • flush-hosts

    Сбросить и перезагрузить хосты.

  • flush-logs

    Сбросить на диск и переоткрыть все журналы.

  • flush-tables

    Закрыть все открытые таблицы.

  • flush-privileges

    Перечитать таблицы привилегий.

  • kill id,id,...

    Завершить потоки mysql с указанными thread-id.

  • 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 Количество секунд с момента запуска MySQL-сервера
    Threads Количество активных потоков (клиентов)
    Questions Количество вопросов от клиентов с момента запуска программы mysqld
    Slow queries Количество запросов, потребовавших большее количество секунд, чем установлено в конфигурации ключом long_query_time
    Opens Количество таблиц, открытых программой mysqld
    Flush table Количество выполненных команд flush ..., refresh, reload
    Open tables Количество таблиц, открытых в данное время
    Memory in use Память, используемая непосредственно программой mysqld (доступно только в случае компиляции MySQL с установленным значением -with-debug=full )
    Max memory used Максимальный объем памяти, использованный непосредственно программой mysqld (доступно только в случае компиляции MySQL с установленным значением -with-debug=full )

    При выполнении 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.

  • Чаще всего утилита mysqldump используется для получения резервной копии всех баз данных.

    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 ...] > my_databases.sql

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

    mysqldump -all-databases > all_databases.sql

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

    Утилита mysqlhotcopy представляет собой Perl-сценарий, использующий SQL-команды LOCK TABLES, FLUSH TABLES и Unix-утилиты 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 поддерживает следующие опции:

  • -u, -user=#

    Имя пользователя для входа в базу данных.

  • -p, -password=#

    Используемый пароль при подсоединении к серверу.

  • -P, -port=#

    Номер порта, используемого для подсоединения к локальному серверу.

  • -S, -socket=#

    Номер сокета, используемого для подсоединения к локальному серверу.

  • -keepold

    Не удалять предыдущий результат (только что переименованный) после выполнения команды.

  • -q, -quiet

    Выводить только сообщения об ошибках.

  • -debug

    Разрешить отладку.

  • -n, -dryrun

    Сообщать о действиях без их выполнения.

  • -regexp=#

    Копировать все базы данных с именами, встречающимися в функции regexp.

  • -checkpoint=#

    Внести проверочную запись в предусмотренную таблицу базы данных.

  • -flushlog

    Записать на диск данные журналов из буфера, как только все таблицы заблокируются.

  • -tmpdir=#

    Временная директория (вместо /tmp ).

  • А также некоторые другие. Более полное описание данного сценария можно посмотреть в документации по языку программирования Perl.

    Сценарий mysqlhotcopy берет информацию для групп [client] и [mysqlhotcopy] из файлов опций.

    Для выполнения программы mysqlhotcopy необходимы доступ для записи в директорию, куда будет помещена копия, и привилегия выполнения команды SELECT для копируемых таблиц и команды RELOAD для MySQL-сервера (чтобы выполнить FLUSH TABLES ).

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

    Утилита mysqlimport обеспечивает интерфейс командной строки для SQL-оператора LOAD DATA INFILE. Большинство параметров mysqlimport полностью соответствует аналогичным параметрам для оператора LOAD DATA INFILE.

    Утилита mysqlimport вызывается следующим образом:

    shell> mysqlimport [параметры] database textfile1 [textfile2 ...]

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

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

  • -c, -columns=...

    Эта опция принимает в качестве аргумента список разделенных запятыми имен полей. Данный список полей используется для создания соответствующей команды LOAD DATA INFILE, которая затем посылается в MySQL.

  • -C, -compress

    Использовать компрессию в связи между клиентом и сервером, если они оба поддерживают сжатие.

  • -#, -debug[=option_string]

    Отслеживать прохождение программы (для отладки).

  • -d, -delete

    Удалить данные из таблицы перед импортированием текстового файла.

  • -f, -force

    Игнорировать ошибки. Например, если таблица для текстового файла не существует, продолжать обработку остающихся файлов. Без параметра -force утилита mysqlimport прекращает работу при отсутствии таблицы.

  • -h host_name, -host=host_name

    Импортировать данные в MySQL-сервер на указанном хосте. Значение хоста по умолчанию — localhost.

  • -l, -lock-tables

    Заблокировать все таблицы для записи перед обработкой любых текстовых файлов. Это обеспечивает синхронизацию всех таблиц на сервере.

  • -L, -local

    Читать входящие файлы из клиента. По умолчанию предполагается, что текстовые файлы расположены на сервере при подсоединении к localhost (значение хоста по умолчанию).

  • -pyour_pass, -password[=your_pass]

    Используемый пароль при подключении к серверу. Если аргумент =your_pass не введен, mysqlimport предложит ввести пароль.

  • -P port_num, -port=port_num

    Номер порта TCP/IP, используемого для подсоединения к хосту.

  • -r, -replace

    Опции -replace и -ignore управляют обработкой поступающих на вход записей, которые дублируют имеющиеся записи по значениям уникальных ключей. Если задано значение -replace, новые строки заменяют существующие с тем же самым значением уникального ключа. Если задано значение -ignore, входные строки, которые дублируют существующую строку по значению уникального ключа, пропускаются. Если же ни одна из опций не задана, то при обнаружении ключа-дубликата возникает ошибка и остаток текстового файла игнорируется.

  • -s, -silent

    Режим молчания. Выводить только сообщения об ошибках.

  • -u user_name, -user=user_name

    Имя пользователя MySQL-сервера, используемое при подсоединении к серверу. Значением по умолчанию является имя для входа в Unix.

  • mysqlshow, просмотр баз данных, таблиц и столбцов

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

    Аналогичную информацию можно получить с помощью программы mysql, используя команду SHOW.

    Утилита mysqlshow вызывается следующим образом:

    shell> mysqlshow [ПАРАМЕТРЫ] [database [table [column]]]
  • Если имя базы данных не указано, то выдается список всех существующих баз данных.
  • Если не указана таблица — показываются все таблицы, найденные в этой базе данных.
  • Если не задан столбец — показываются все найденные в таблице столбцы и представленные в виде столбцов данные.
  • Следует отметить, что в более новых версиях MySQL пользователь может просмотреть только те базы/таблицы/столбцы, для которых у него имеются соответствующие привилегии.

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

    Это может вызвать путаницу при попытке просмотреть столбцы таблицы с символом _, так как в таком случае mysqlshow покажет только имена таблиц, совпадающие с шаблоном. Ситуацию можно легко исправить добавлением дополнительного символа % в конец командной строки (как отдельного аргумента).

    perror, разъяснение кодов ошибок

    Для большинства системных ошибок, помимо внутреннего текстового сообщения MySQL, можно также выводить номер кода системной ошибки в одном из следующих стилей: message ... (errno: #) или message ... (Errcode: #).

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

    perror выводит описание кода системной ошибки или код ошибки обработчика таблиц MyISAM/ISAM.

    perror вызывается следующим образом:

    shell> perror [ПАРАМЕТРЫ] [ERRORCODE [ERRORCODE...]]

    Пример:

    shell> perror 13 64
    Error code 13: Доступ запрещен
    Error code 64: Компьютер не находится в сети

    Следует учитывать, что сообщения об ошибках в большинстве своем являются системно-зависимыми!

    Запуск SQL-команд из текстового файла

    Обычно клиент mysql используется в интерактивном режиме, например, следующим образом:

    shell> mysql database

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

    shell> mysql database < text_file

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

    shell> mysql < text_file

    Если программа mysql уже работает, можно запустить файл с SQL-сценарием, используя команду source:

    mysql> source filename;
    Вернуться к учебному плану