Опубликован: 16.04.2007 | Уровень: специалист | Доступ: платный
Лекция 5:

Сценарии и утилиты 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
Вывод номера версии и завершение работы
Александра Каева
Александра Каева
Дмитрий Черепенин
Дмитрий Черепенин

Какого года данный курс?

Евгений Вершинин
Евгений Вершинин
Россия, Нижний Новгород, Нижегородский государственный технический университет, 2008
Aleksandr Arshinskyi
Aleksandr Arshinskyi
Россия