6.3.4 mysqld_multi — Управление несколькими серверами MySQL
mysqld_multi предназначен для управления несколькими процессами mysqld, которые слушают подключения по разным файлам Unix-сокет и портам TCP/IP. Он может запускать или останавливать серверы или сообщать об их текущем состоянии.
Для некоторых платформ Linux, установка MySQL из пакетов RPM или Debian включает поддержку systemd для управления запуском и остановкой сервера MySQL. На этих платформах mysqld_multi не устанавливается, так как он не нужен. Для получения информации об использовании systemd для обработки нескольких экземпляров MySQL, см. Раздел 2.5.9, «Управление сервером MySQL с помощью systemd».
mysqld_multi ищет группы с именем [mysqld в N]my.cnf (или в файле, указанном опцией --defaults-file). N может быть любым положительным целым числом. Это число в дальнейшем будет упоминаться как номер группы опций или GNR. Номера групп различают группы опций и используются в качестве аргументов для mysqld_multi для указания, какие серверы нужно запустить, остановить или получить отчет о состоянии. Опции, перечисленные в этих группах, такие же, как и в группе [mysqld], используемой для запуска mysqld. (См., например, Раздел 2.9.5, «Автоматический запуск и остановка MySQL».) Однако при использовании нескольких серверов необходимо, чтобы каждый из них использовал собственные значения для опций, таких как файл Unix-сокет и номер порта TCP/IP. Дополнительную информацию о том, какие опции должны быть уникальными для каждого сервера в многосерверной среде, см. в Разделе 7.8, «Запуск нескольких экземпляров MySQL на одном компьютере».
Для вызова mysqld_multi используйте следующий синтаксис:
mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]
start, stop, reload (остановка и перезапуск) и report указывают, какую операцию выполнить. Вы можете выполнить заданную операцию для одного сервера или нескольких серверов, в зависимости от списка GNR, который следует за именем опции. Если такого списка нет, mysqld_multi выполняет операцию для всех серверов в файле опций.
Каждое значение GNR представляет собой номер группы опций или диапазон номеров групп. Значение должно соответствовать числу в конце имени группы в файле опций. Например, GNR для группы, названной [mysqld17], равно 17. Для указания диапазона чисел разделите первое и последнее число дефисом. Значение GNR, равное 10-13, представляет группы от [mysqld10] до [mysqld13]. Несколько групп или диапазонов групп можно указать в командной строке, разделяя их запятыми. В списке GNR не должно быть пробелов; все, что следует за пробелом, игнорируется.
Эта команда запускает один сервер, используя группу опций [mysqld17]:
mysqld_multi start 17
Эта команда останавливает несколько серверов, используя группы опций [mysqld8] и [mysqld10] по [mysqld13]:
mysqld_multi stop 8,10-13
Для примера настройки файла опций используйте эту команду:
mysqld_multi --example
mysqld_multi ищет файлы опций следующим образом:
-
С опцией
--no-defaultsфайлы опций не читаются.Формат командной строки --no-defaultsТип Булево Значение по умолчанию false -
С опцией
--defaults-file=читается только указанный файл.file_nameФормат командной строки --defaults-file=filenameТип Имя файла Значение по умолчанию [none] -
В противном случае файлы опций из стандартного списка расположений читаются, включая любой файл, указанный опцией
--defaults-extra-file=, если он задан. (Если опция задаётся несколько раз, используется последнее значение.)file_nameФормат командной строки --defaults-extra-file=filenameТип Имя файла Значение по умолчанию [none]
Дополнительную информацию об этих и других опциях файлов см. в Разделе 6.2.2.3, «Опции командной строки, влияющие на обработку файлов опций».
Читаемые файлы опций ищутся группы [mysqld_multi] и [mysqld. Группа N][mysqld_multi] может использоваться для опций самого mysqld_multi. Группы [mysqld могут использоваться для опций, передаваемых конкретным экземплярам mysqld.N]
Группы [mysqld] или [mysqld_safe] могут использоваться для общих опций, читаемых всеми экземплярами mysqld или mysqld_safe. Вы можете указать опцию --defaults-file= для использования другого файла конфигурации для данного экземпляра, в этом случае группы file_name[mysqld] или [mysqld_safe] из этого файла будут использоваться для этого экземпляра.
mysqld_multi поддерживает следующие опции.
-
Формат командной строки --helpТип Булево Значение по умолчанию falseОтобразить сообщение справки и выйти.
-
Формат командной строки --exampleТип Булево Значение по умолчанию falseОтобразить файл примера опций.
-
Формат командной строки --log=pathТип Имя файла Значение по умолчанию /var/log/mysqld_multi.logУказать имя файла журнала. Если файл существует, выходные данные журнала будут добавлены к нему.
-
Формат командной строки --mysqladmin=fileТип Имя файла Значение по умолчанию [none]Бинарный файл mysqladmin для использования при остановке серверов.
-
Формат командной строки --mysqld=fileТип Имя файла Значение по умолчанию [none]Бинарный файл mysqld для использования. Обратите внимание, что вы также можете указать mysqld_safe в качестве значения для этого параметра. Если вы используете mysqld_safe для запуска сервера, вы можете включить параметры
mysqldилиledirв соответствующей группе параметров[mysqld. Эти параметры указывают имя сервера, который mysqld_safe должен запустить, и путь к каталогу, где находится сервер. (См. описания этих параметров в разделе 6.3.2, «mysqld_safe — Скрипт запуска MySQL-сервера».) Пример:N][mysqld38] mysqld = mysqld-debug ledir = /opt/local/mysql/libexec
-
Формат командной строки --no-logТип Булево Значение по умолчанию falseВыводить информацию журнала в
stdout, а не в файл журнала. По умолчанию вывод отправляется в файл журнала. -
Формат командной строки --password=stringТип Строка Значение по умолчанию [none]Пароль учетной записи MySQL, которую использовать при вызове mysqladmin. Обратите внимание, что значение пароля для этого параметра обязательно, в отличие от других MySQL-программ.
-
Формат командной строки --silentТип Булево Значение по умолчанию falseТихий режим; отключение предупреждений.
Некоторые замечания о mysqld_multi:
END_OF_DOCUMENT_MARKER-
Самое важное: Перед использованием mysqld_multi убедитесь, что вы понимаете значения параметров, передаваемых серверам mysqld, и почему вам нужно иметь отдельные процессы mysqld. Остерегайтесь опасностей использования нескольких серверов mysqld с одним каталогом данных. Используйте отдельные каталоги данных, если вы не уверены, что делаете. Запуск нескольких серверов с одним каталогом данных не даст вам дополнительной производительности в многопоточной системе. См. Раздел 7.8, “Запуск нескольких экземпляров MySQL на одном компьютере”.
ВажноУбедитесь, что каталог данных для каждого сервера полностью доступен для учетной записи Unix, от имени которой запущен конкретный процесс mysqld. Не используйте учетную запись Unix
rootдля этого, если вы не уверены, что делаете. См. Раздел 8.1.5, “Как запустить MySQL как обычного пользователя”. -
Убедитесь, что учетная запись MySQL, используемая для остановки серверов mysqld (с помощью программы mysqladmin), имеет одинаковое имя пользователя и пароль для каждого сервера. Также убедитесь, что у учетной записи есть право
SHUTDOWN. Если у управляемых вами серверов разные имена пользователей или пароли для учетных записей администратора, вы можете создать учетную запись на каждом сервере с одинаковым именем пользователя и паролем. Например, вы можете настроить общуюmulti_adminучетную запись, выполнив следующие команды для каждого сервера:$>
mysql -u root -S /tmp/mysql.sock -pEnter password: mysql>CREATE USER 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';mysql>GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost';См. Раздел 8.2, “Управление доступом и учетными записями”. Вы должны сделать это для каждого сервера mysqld. Измените параметры подключения соответственно при подключении к каждому из них. Обратите внимание, что имя хоста в имени учетной записи должно позволить вам подключаться как
multi_adminс хоста, на котором вы хотите запустить mysqld_multi. Файл сокета Unix и номер порта TCP/IP должны быть различными для каждого mysqld. (В качестве альтернативы, если у хоста несколько сетевых адресов, вы можете установить системную переменную
bind_address, чтобы разные серверы прослушивали разные интерфейсы.)Параметр
--pid-fileочень важен, если вы используете mysqld_safe для запуска mysqld (например,--mysqld=mysqld_safe). Каждый mysqld должен иметь свой собственный файл идентификатора процесса. Преимущество использования mysqld_safe вместо mysqld заключается в том, что mysqld_safe отслеживает процесс mysqld и перезапускает его, если процесс завершается из-за сигнала, отправленного с помощьюkill -9или по другим причинам, таким как ошибка сегментации.Возможно, вам захочется использовать параметр
--userдля mysqld, но для этого вам нужно запустить скрипт mysqld_multi как суперпользователь Unix (root). Наличие параметра в файле параметров не имеет значения; вы просто получите предупреждение, если вы не являетесь суперпользователем, и процессы mysqld запускаются под вашей собственной учетной записью Unix.
Следующий пример показывает, как вы можете настроить файл параметров для использования с mysqld_multi. Порядок запуска или остановки программ mysqld зависит от порядка их появления в файле параметров. Номера групп не обязательно должны образовывать непрерывную последовательность. Первая и пятая [mysqld группы были намеренно опушены из примера, чтобы проиллюстрировать, что в файле параметров могут быть “пропуски”. Это дает вам большую гибкость. N]
# This is an example of a my.cnf file for mysqld_multi.
# Usually this file is located in home dir ~/.my.cnf or /etc/my.cnf
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = multi_admin
password = my_password
[mysqld2]
socket = /tmp/mysql.sock2
port = 3307
pid-file = /usr/local/mysql/data2/hostname.pid2
datadir = /usr/local/mysql/data2
language = /usr/local/mysql/share/mysql/english
user = unix_user1
[mysqld3]
mysqld = /path/to/mysqld_safe
ledir = /path/to/mysqld-binary/
mysqladmin = /path/to/mysqladmin
socket = /tmp/mysql.sock3
port = 3308
pid-file = /usr/local/mysql/data3/hostname.pid3
datadir = /usr/local/mysql/data3
language = /usr/local/mysql/share/mysql/swedish
user = unix_user2
[mysqld4]
socket = /tmp/mysql.sock4
port = 3309
pid-file = /usr/local/mysql/data4/hostname.pid4
datadir = /usr/local/mysql/data4
language = /usr/local/mysql/share/mysql/estonia
user = unix_user3
[mysqld6]
socket = /tmp/mysql.sock6
port = 3311
pid-file = /usr/local/mysql/data6/hostname.pid6
datadir = /usr/local/mysql/data6
language = /usr/local/mysql/share/mysql/japanese
user = unix_user4
См. Раздел 6.2.2.2, “Использование файлов параметров”.
© 2025 Oracle
Licensed under the GPLv2 License.