4.3.4 mysqld_multi — Управление несколькими серверами MySQL
mysqld_multi предназначен для управления несколькими процессами mysqld, которые слушают подключения по разным файлам Unix-сокет и портам TCP/IP. Он может запускать или останавливать серверы или сообщать об их текущем состоянии.
Для некоторых платформ Linux, установка MySQL из пакетов RPM или Debian включает поддержку systemd для управления запуском и остановкой сервера MySQL. На этих платформах mysqld_multi не устанавливается, поскольку он не требуется. Для получения информации об использовании systemd для управления несколькими экземплярами MySQL см. Раздел 2.5.10, «Управление сервером MySQL с systemd».
mysqld_multi ищет группы с именем [mysqld в N]my.cnf (или в файле, указанном опцией --defaults-file). N может быть любым положительным целым числом. Это число в дальнейшем будет называться номером группы опций или GNR. Номера групп различают группы опций и используются в качестве аргументов для mysqld_multi для указания, какие серверы нужно запустить, остановить или получить отчет о статусе. Опции, перечисленные в этих группах, такие же, как и в группе [mysqld], используемой для запуска mysqld. (См., например, Раздел 2.9.5, «Автоматический запуск и остановка MySQL».) Однако при использовании нескольких серверов необходимо, чтобы каждый из них использовал собственное значение для таких опций, как файл Unix-сокет и номер порта TCP/IP. Более подробную информацию о том, какие опции должны быть уникальными для каждого сервера в среде с несколькими серверами, см. в Разделе 5.7, «Запуск нескольких экземпляров 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]
Для получения дополнительной информации об этих и других опциях файла опций, см. Раздел 4.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 поддерживает следующие опции.
END_OF_DOCUMENT_MARKER ```-
Формат командной строки --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 должен запустить, и имя каталога, где расположен сервер. (См. описания этих опций в разделе 4.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Тихий режим; отключение предупреждений.
-
Формат командной строки --tcp-ipТип Булево Значение по умолчанию falseПодключение к каждому MySQL-серверу через TCP/IP-порт вместо файла Unix-соккета. (Если файл сокета отсутствует, сервер все равно может работать, но доступен только через TCP/IP-порт.) По умолчанию соединения устанавливаются с использованием файла Unix-соккета. Эта опция влияет на операции
stopиreport. -
Формат командной строки --user=nameТип Строка Значение по умолчанию rootИмя пользователя учетной записи MySQL, которое следует использовать при вызове mysqladmin.
-
Формат командной строки --verboseТип Булево Значение по умолчанию falseБолее подробный режим.
-
Формат командной строки --versionТип Булево Значение по умолчанию falseОтобразить информацию о версии и выйти.
Некоторые заметки о mysqld_multi:
-
Самое важное: Перед использованием mysqld_multi убедитесь, что вы понимаете значение параметров, передаваемых серверам mysqld, и почему вам необходимо иметь отдельные процессы mysqld. Будьте осторожны при использовании нескольких серверов mysqld с одинаковым каталогом данных. Используйте отдельные каталоги данных, если вы не уверены в своих действиях. Запуск нескольких серверов с одинаковым каталогом данных не обеспечит дополнительной производительности в многопоточной системе. См. Раздел 5.7, «Запуск нескольких экземпляров MySQL на одной машине».
ВажноУбедитесь, что каталог данных каждого сервера полностью доступен для Unix-аккаунта, от имени которого запускается конкретный процесс mysqld. Не используйте Unix-аккаунт
rootдля этой цели, если вы не уверены в своих действиях. См. Раздел 6.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';См. Раздел 6.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
См. Раздел 4.2.2.2, «Использование файлов опций».
© 2025 Oracle
Licensed under the GPLv2 License.