mysqld_multi
Начиная с MariaDB 10.4.6, mariadbd-multi является символической ссылкой на mysqld_multi.
Начиная с MariaDB 10.5.2, mariadbd-multi — это имя сервера, а mysqld_multi — символическая ссылка.
Перед использованием mysqld_multi убедитесь, что вы понимаете значения параметров, передаваемых серверам mysqld, и почему вам нужно иметь отдельные процессы mysqld. Будьте осторожны, используя несколько серверов mysqld с одним каталогом данных. Используйте отдельные каталоги данных, если вы не знаете, что делаете. Запуск нескольких серверов с одним каталогом данных не даст вам дополнительной производительности в многопоточной системе.
Сценарий запуска mysqld_multi находится в дистрибутивах MariaDB на Linux и Unix. Это оболочка, предназначенная для управления несколькими процессами mysqld на одном хосте. Для работы нескольких процессов mysqld на одном хосте эти процессы должны:
- Использовать разные файлы сокетов Unix для локальных подключений.
- Использовать разные порты TCP/IP для сетевых подключений.
- Использовать разные каталоги данных.
- Использовать разные файлы идентификаторов процессов (указанные параметром
--pid-file), если используетсяmysqld_safeдля запускаmysqld.
mysqld_multi может запускать или останавливать серверы, или сообщать об их текущем статусе.
Использование mysqld_multi
Команда для использования mysqld_multi и общий синтаксис:
mysqld_multi [options] {start|stop|report} [GNR[,GNR] ...]
start, stop, и report указывают, какую операцию выполнить.
Вы можете указать, на каких серверах выполнить операцию, указав одно или несколько значений GNR. GNR относится к номеру группы опций, и это более подробно объясняется в разделе групп опций ниже. Если нет списка GNR, то mysqld_multi выполняет операцию для всех значений GNR найденных в его файлах опций.
Несколько значений GNR могут быть указаны в виде списка, разделённого запятыми. Значения GNR также могут быть указаны как диапазон, разделив числа дефисом. В списке GNR не должно быть пробельных символов.
Например:
Эта команда запускает один сервер, используя группу опций [mysqld17]:
mysqld_multi start 17
Эта команда останавливает несколько серверов, используя группы опций [mysqld8] и [mysqld10] по [mysqld13]:
mysqld_multi stop 8,10-13
Параметры
mysqld_multi поддерживает следующие параметры:
| Параметр | Описание |
|---|---|
--example |
Приведите пример файла конфигурации с дополнительной информацией. |
--help |
Отобразить справку и выйти. |
--log=filename |
Указать путь и имя файла журнала. Если файл существует, вывод журнала добавляется в него. |
--mysqladmin=prog_name |
Бинарник mariadb-admin для остановки серверов. Может быть указан в группах [mysqld#]. |
--mysqld=prog_name |
Бинарник mysqld для использования. Обратите внимание, что вы также можете указать mysqld_safe как значение для этого параметра. Если вы используете mysqld_safe для запуска сервера, вы можете включить параметры mysqld или ledir в соответствующей группе параметров [mysqldN]. Эти параметры указывают имя сервера, который должен запустить mysqld_safe, и имя каталога, где расположен сервер. Пример:[mysqld38]mysqld = mysqld-debugledir = /opt/local/mysql/libexec. |
--no-log |
Вывести в стандартный вывод вместо файла журнала. По умолчанию файл журнала включён. |
--password=password |
Пароль учетной записи MariaDB для использования при вызове mariadb-admin. Обратите внимание, что значение пароля является обязательным для этого параметра, в отличие от других программ MariaDB. |
--silent |
Беззвучный режим; отключение предупреждений. |
--tcp-ip |
Подключение к серверу MariaDB через порт TCP/IP вместо сокета UNIX. Это влияет на остановку и получение отчётов. Если файл сокета отсутствует, сервер может по-прежнему работать, но к нему можно получить доступ только через порт TCP/IP. По умолчанию подключение выполняется через сокет UNIX. Этот параметр влияет на операции остановки и получения отчётов. |
--user=username |
Имя пользователя учетной записи MariaDB для использования при вызове mariadb-admin. |
--verbose |
Более подробный режим. |
--version |
Отобразить информацию о версии и выйти. |
--wsrep-new-cluster |
Настройка кластера. Добавлено в MariaDB 10.1.15. |
Файлы опций
Помимо чтения опций из командной строки, mysqld_multi также может читать опции из файлов опций. Если неизвестный параметр предоставлен mysqld_multi в файле опций, то он игнорируется.
Следующие параметры относятся к тому, как инструменты командной строки MariaDB обрабатывают файлы опций. Они должны быть указаны в качестве первого аргумента в командной строке:
| Параметр | Описание |
|---|---|
--print-defaults |
Вывести список аргументов программы и выйти. |
--no-defaults |
Не читать параметры по умолчанию из файла опций. |
--defaults-file=# |
Читать только параметры по умолчанию из данного файла #. |
--defaults-extra-file=# |
Читать этот файл после чтения глобальных файлов. |
--defaults-group-suffix=# |
В дополнение к группам параметров по умолчанию, также читать группы параметров с этим суффиксом. |
Группы параметров
mysqld_safe считывает параметры из следующих групп параметров из файлов опций:
| Группа | Описание |
|---|---|
[mysqld_multi] |
Параметры, считываемые mysqld_multi, которые включают как сервер MariaDB, так и сервер MySQL. |
mysqld_multi также ищет в файлах опций группы параметров с именами, подобными [mysqldN], где N может быть любым положительным целым числом. Это число упоминается в дальнейшем как номер группы параметров или GNR:
| Группа | Описание |
|---|---|
[mysqldN] |
Параметры, считываемые экземпляром mysqld, управляемым mysqld_multi, которые включают как сервер MariaDB, так и сервер MySQL. N относится к экземпляру GNR. |
Значения GNR различают группы параметров друг от друга и используются в качестве аргументов к mysqld_multi для указания, какие серверы вы хотите запустить, остановить или получить отчёт о статусе. Значение GNR должно быть числом в конце имени группы параметров в файле опций. Например, GNR для группы параметров с именем [mysqld17] равно 17.
Параметры, перечисленные в этих группах параметров, такие же, как вы бы использовали в обычных группах параметров сервера для настройки mysqld. Однако при использовании нескольких серверов необходимо, чтобы каждый из них использовал своё значение для параметров, таких как файл сокета Unix и номер порта TCP/IP.
Группа параметров [mysqld_multi] может использоваться для параметров, необходимых для самого mysqld_multi. Группы параметров [mysqldN] могут использоваться для параметров, передаваемых конкретным экземплярам mysqld.
Обычные группы параметров сервера также могут использоваться для общих параметров, которые читаются всеми экземплярами:
| Группа | Описание |
|---|---|
[mysqld] |
Параметры, считываемые mysqld, которые включают как сервер MariaDB, так и сервер MySQL. |
[server] |
Параметры, считываемые сервером MariaDB. |
[mysqld-X.Y] |
Параметры, считываемые конкретной версией mysqld, которые включают как сервер MariaDB, так и сервер MySQL. Например, [mysqld-5.5]. |
[mariadb] |
Параметры, считываемые сервером MariaDB. |
[mariadb-X.Y] |
Параметры, считываемые конкретной версией сервера MariaDB. |
[client-server] |
Параметры, считываемые всеми клиентами MariaDB и сервером MariaDB. Это полезно для параметров, таких как сокет и порт, которые общие между сервером и клиентами. |
[galera] |
Параметры, считываемые сервером MariaDB, совместимым с Galera. Доступны на системах, скомпилированных с поддержкой Galera. |
Для примера настройки файла опций используйте эту команду:
mysqld_multi --example
Аутентификация и привилегии
Убедитесь, что учетная запись MariaDB, используемая для остановки процессов mysqld (с помощью утилиты mariadb-admin), имеет одинаковое имя пользователя и пароль для каждого сервера. Также убедитесь, что у этой учетной записи есть привилегия SHUTDOWN. Если у управляемых серверов разные имена пользователей или пароли для учетных записей администратора, вы можете создать на каждом сервере учетную запись с одинаковым именем пользователя и паролем. Например, вы можете настроить общую учетную запись multi_admin, выполнив следующие команды для каждого сервера:
shell> mysql -u root -S /tmp/mysql.sock -p Enter password: mysql> GRANT SHUTDOWN ON *.* -> TO ´multi_admin´@´localhost´ IDENTIFIED BY ´multipass´;
Измените параметры подключения соответствующим образом при подключении к каждому серверу. Обратите внимание, что часть имени учетной записи, относящаяся к имени хоста, должна позволять вам подключаться как multi_admin с хоста, на котором вы хотите запустить mysqld_multi.
Учетная запись пользователя
Убедитесь, что каталог данных для каждого сервера полностью доступен для Unix-учетной записи, от имени которой запускается конкретный процесс mysqld. Если вы запускаете скрипт mysqld_multi как Unix-учетную запись root, и если вы хотите, чтобы процесс mysqld запускался под другой Unix-учетной записью, вы можете использовать опцию --user с mysqld. Если вы указали опцию --user в файле опций, и вы не запустили скрипт mysqld_multi как Unix-учетную запись root, то будет выведено предупреждение, и процессы mysqld будут запущены под исходной Unix-учетной записью.
Не запускайте процесс mysqld как Unix-учетную запись root, если вы не знаете, что делаете.
Пример
Следующий пример показывает, как вы можете настроить файл опций для использования с mysqld_multi. Порядок запуска или остановки программ mysqld зависит от порядка их появления в файле опций. Номера групп не обязательно должны образовывать непрерывную последовательность. Первая и пятая группы [mysqldN] были намеренно опущены из примера, чтобы проиллюстрировать, что в файле опций могут быть «пропуски». Это дает вам больше гибкости.
# This file should probably be in your home dir (~/.my.cnf)
# or /etc/my.cnf
# Version 2.1 by Jani Tolonen
[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
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
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/mysqld_multi/