Программа mysqld_multi
предназначена для управления
несколькими процессами
mysqld, работающих на
различных сокетах Unix и портах TCP/IP.
Программа будет искать
группу(группы) [mysqld#] в
my.cnf (или заданных при
помощи --config-file=... файлах),
где # - любое
положительное число, начиная с 1. Мы
говорим про этот номер далее как
про номер группы опций, или GNR.
Номера групп различают группы
опций одну от другой и
используются как аргумент при
запуске mysqld_multi чтобы
указать, какие сервера вы хотите
запустить, остановить или получить
статус об. Эти группы должны быть
такими же, как и обычная группа
[mysqld] (например содержать
опции для 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
Представляет пример файла конфигурации.
--help
Выводит справочную информацию и завершает работу.
--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
Вывод номера версии и завершение работы.
Некоторые примечания относительно mysqld_multi:
Удостоверьтесь, что
пользователь MySQL,
останавливающий mysqld
(например, при помощи
mysqladmin), имеет один
пароль и имя пользователя для
всех директорий данных, к
которым производится доступ
(имеется в виду - к базе данных
mysql). Убедитесь также,
что пользователь имеет
привилегию Shutdown_priv!
Если имеется несколько
директорий с данными и несколько
различных баз данных
mysql с различными
паролями для пользователя
root в MySQL, можно создать
некоего общего пользователя
multi_admin для всех, с
одинаковым паролем (см. ниже).
Сделать это можно так:
shell> mysql -u root -S /tmp/mysql.sock -proot_password -e
"GRANT SHUTDOWN ON *.* TO multi_admin@localhost IDENTIFIED BY
See Раздел 4.2.6, «Как работает система привилегий». Эти действия
нужно выполнять для каждого
mysqld для каждой
имеющейся директории данных (для
этого нужно выбрать другой сокет
-S=...).
pid-файл играет очень
важную роль, если для запуска
mysqld используется
сценарий safe_mysqld
(например, --mysqld=safe_mysqld).
Преимущество использования
safe_mysqld вместо
mysqld заключается в том,
что safe_mysqld ``бережет''
каждый процесс mysqld и
перезапустит его, если
mysqld-процесс умрет по
сигналу 9 или подобному
(например, в случае ошибки
сегментации - хотя, конечно, уж
этой ошибки MySQL в принципе
совершать не должен;).
Пожалуйста, обратите внимание:
может оказаться, что сценарий
safe_mysqld требуется
запускать из определенного
каталога. Это означает, что
прежде чем запустить
mysqld_multi, прийдется
перейти в нужный каталог. Если
при запуске возникнут проблемы,
пожалуйста, просмотрите
сценарий safe_mysqld.
Обратите внимание на следующие
строки:
-------------------------------------------------------------------------- MY_PWD=`pwd` Check if we are starting this relative (for the binary release) if test -d /data/mysql -a -f ./share/mysql/english/errmsg.sys -a -x ./bin/mysqld -------------------------------------------------------------------------- See Раздел 4.7.2, «safe_mysqld, оболочкаmysqld».
Этот тест может пройти успешно, однако возможны и проблемы.
Не запускайте несколько демонов
mysqld с одной и тожй же
директорией данных. Используйте
различные директории с данными,
если Вы четко не уверены в своих
действиях!
Файл сокета и порт TCP/IP должны
быть различными для каждого
демона mysqld.
Первая и пятая группы
mysqld были
преднамеренно не включены в
пример. В файле конфигурации
могут быть ``промежутки'' - это
увеличивает гибкость. Порядок, в
котором запускаются или
завершают работу демоны
mysqld, зависит от
порядка, в котором они указаны в
файле конфигурации.
Когда нужно обратиться к
некоторой группе (GNR) в этой
программе, просто используйте
номер в конце имени группы.
Например, GNR для группы
[mysqld17] - 17.
Для mysqld можно
использовать опцию --user,
но для этого сценарий
mysqld_multi должен быть
запущен от root. Наличие
опции в файле конфигурации не
имеет значения; вы получите
предупреждение только в случаях,
если не являетесь
суперпользователем и демон
mysqlds запущен под
вашим
аккаунтом Unix.
Важно:
удостоверьтесь, что для
pid-файла и директории с
данными имеется доступ для
чтения+записи(+выполнения - для
директории с данными) для
того
пользователя Unix, который
запускает определенный процесс
mysqld.
Не используйте
для этого аккаунт root в
Unix, если Вы не уверены в своих
действиях!
Очень важно:
удостоверьтесь, что вы понимаете
значения опций, которые
передаются демонам
mysqld, и что осознаете
то, почему могут быть нужны
отдельные процессы
mysqld. Запуск нескольких
демонов mysqld с одной
директорией данных не увеличит
производительность в
многопоточной системе!
See Раздел 4.1.4, «Запуск нескольких серверов MySQL на одном компьютере».
Пример файла конфигурации для
mysqld_multi.
# Этот файл может находиться в вашей домашней директории (~/.my.cnf) или /etc/my.cnf # Version 2.1 by Jani Tolonen [mysqld_multi] mysqld = /usr/local/bin/safe_mysqld mysqladmin = /usr/local/bin/mysqladmin user = multi_admin password = multipass [mysqld2] socket = /tmp/mysql.sock2 port = 3307 pid-file = /usr/local/mysql/var2/hostname.pid2 datadir = /usr/local/mysql/var2 language = /usr/local/share/mysql/english user = john [mysqld3] socket = /tmp/mysql.sock3 port = 3308 pid-file = /usr/local/mysql/var3/hostname.pid3 datadir = /usr/local/mysql/var3 language = /usr/local/share/mysql/swedish user = monty [mysqld4] socket = /tmp/mysql.sock4 port = 3309 pid-file = /usr/local/mysql/var4/hostname.pid4 datadir = /usr/local/mysql/var4 language = /usr/local/share/mysql/estonia user = tonu [mysqld6] socket = /tmp/mysql.sock6 port = 3311 pid-file = /usr/local/mysql/var6/hostname.pid6 datadir = /usr/local/mysql/var6 language = /usr/local/share/mysql/japanese user = jani
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
