MySQL.RU .:. Одобрено лучшими российскими программистами
Справочное руководство по MySQL4.7.3 Mysqld_multi, программа для управления множеством серверов MySQL
4.7.3 Mysqld_multi , программа для управления множеством серверов MySQL
Программа mysqld_multi предназначена для управления несколькими процессами
mysqld , работающих на различных сокетах Unix и портах TCP/IP.
Программа будет искать группу(группы) [mysqld#] в `my.cnf' (или заданную(ые)
при помощи --config-file=... ), где # -любое положительное число, начиная с
1. Эти группы должны быть такими же, как и обычная группа [mysqld ]
(например содержать опции для 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, или о нескольких из них одновременно (см.
--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 section 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 section 4.7.2 safe_mysqld , оболочка mysqld .
Этот тест может пройти успешно, однако возможны и проблемы.
-
Не запускайте несколько демонов
mysqld с одной и тожй же директорией
данных. Используйте различные директории с данными, если Вы четко не
уверены в своих действиях!
-
Файл сокета и порт TCP/IP должны быть различными для каждого демона
mysqld .
-
Первая и пятая группы
mysqld были преднамеренно не включены в пример.
В файле конфигурации могут быть ``промежутки'' - это увеличивает
гибкость. Порядок, в котором запускаются или завершают работу демоны
mysqld , зависит от порядка, в котором они указаны в файле
конфигурации.
-
Когда нужно обратиться к некоторой группе (GNR) в этой программе,
просто используйте номер в конце имени группы (
[mysqld# <== ).
-
Для
mysqld можно использовать опцию --user , но для этого сценарий
mysqld_multi должен быть запущен от root . Наличие опции в файле
конфигурации не имеет значения; вы получите предупреждение только в
случаях, если не являетесь суперпользователем и демон mysqlds запущен
под вашим аккаунтом Unix. Важно: удостоверьтесь, что для pid-файла и
директории с данными имеется доступ для чтения+записи(+выполнения -
для директории с данными) для того пользователя Unix, который
запускает определенный процесс mysqld . Не используйте для этого
аккаунт root в Unix, если Вы не уверены в своих действиях!
-
Очень важно: удостоверьтесь, что вы понимаете значения опций, которые
передаются демонам
mysqld , и что осознаете то, почему могут быть нужны
отдельные процессы mysqld . Запуск нескольких демонов mysqld с одной
директорией данных не увеличит производительность в многопоточной
системе!
See section 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
See section 4.1.2 Файлы параметров `my.cnf'.
|