Spec-Zone.ru › MySQL 8.4

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

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

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

  • --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 должен запустить, и путь к каталогу, где находится сервер. (См. описания этих параметров в разделе 6.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

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

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

См. Раздел 6.2.2.2, “Использование файлов параметров”.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/mysqld-multi.html

Spec-Zone.ru

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