Spec-Zone.ru › MySQL 5.7

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 ищет группы с именем [mysqldN] в 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] и [mysqldN]. Группа [mysqld_multi] может использоваться для опций самого mysqld_multi. Группы [mysqldN] могут использоваться для опций, передаваемых конкретным экземплярам mysqld.

Группы [mysqld] или [mysqld_safe] могут использоваться для общих опций, считываемых всеми экземплярами mysqld или mysqld_safe. Вы можете указать опцию --defaults-file=file_name для использования другого файла конфигурации для данного экземпляра, в этом случае для этого экземпляра используются группы [mysqld] или [mysqld_safe] из этого файла.

mysqld_multi поддерживает следующие опции.

END_OF_DOCUMENT_MARKER ```
  • --help

    Формат командной строки --help
    Тип Булево
    Значение по умолчанию false

    Отобразить сообщение справки и выйти.

  • --example

    Формат командной строки --example
    Тип Булево
    Значение по умолчанию false

    Отобразить файл с образцом опций.

  • --log=file_name

    Формат командной строки --log=path
    Тип Имя файла
    Значение по умолчанию /var/log/mysqld_multi.log

    Указать имя файла журнала. Если файл существует, вывод журнала будет добавлен в него.

  • --mysqladmin=prog_name

    Формат командной строки --mysqladmin=file
    Тип Имя файла
    Значение по умолчанию [none]

    Бинарный файл mysqladmin для использования при остановке серверов.

  • --mysqld=prog_name

    Формат командной строки --mysqld=file
    Тип Имя файла
    Значение по умолчанию [none]

    Бинарный файл mysqld для использования. Обратите внимание, что вы можете также указать mysqld_safe в качестве значения для этой опции. Если вы используете mysqld_safe для запуска сервера, вы можете включить опции mysqld или ledir в соответствующей группе опций [mysqldN]. Эти опции указывают имя сервера, который mysqld_safe должен запустить, и имя каталога, где расположен сервер. (См. описания этих опций в разделе 4.3.2, «mysqld_safe — Скрипт запуска MySQL-сервера».) Пример:

    [mysqld38]
    mysqld = mysqld-debug
    ledir  = /opt/local/mysql/libexec
    
  • --no-log

    Формат командной строки --no-log
    Тип Булево
    Значение по умолчанию false

    Выводить информацию журнала в stdout вместо файла журнала. По умолчанию вывод направляется в файл журнала.

  • --password=password

    Формат командной строки --password=string
    Тип Строка
    Значение по умолчанию [none]

    Пароль учетной записи MySQL, который следует использовать при вызове mysqladmin. Обратите внимание, что значение пароля для этой опции обязательно, в отличие от других MySQL-программ.

  • --silent

    Формат командной строки --silent
    Тип Булево
    Значение по умолчанию false

    Тихий режим; отключение предупреждений.

  • --tcp-ip

    Формат командной строки --tcp-ip
    Тип Булево
    Значение по умолчанию false

    Подключение к каждому MySQL-серверу через TCP/IP-порт вместо файла Unix-соккета. (Если файл сокета отсутствует, сервер все равно может работать, но доступен только через TCP/IP-порт.) По умолчанию соединения устанавливаются с использованием файла Unix-соккета. Эта опция влияет на операции stop и report.

  • --user=user_name

    Формат командной строки --user=name
    Тип Строка
    Значение по умолчанию root

    Имя пользователя учетной записи MySQL, которое следует использовать при вызове mysqladmin.

  • --verbose

    Формат командной строки --verbose
    Тип Булево
    Значение по умолчанию false

    Более подробный режим.

  • --version

    Формат командной строки --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 -p
    Enter 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 зависит от порядка их появления в файле опций. Номера групп не обязательно должны образовывать непрерывную последовательность. Первая и пятая [mysqldN] группы намеренно опущены в примере, чтобы показать, что в файле опций могут быть “пропуски”. Это обеспечивает большую гибкость.

# 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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/mysqld-multi.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API