7.8.3 Запуск нескольких экземпляров MySQL на Unix
В данном обсуждении используется mysqld_safe для запуска нескольких экземпляров MySQL. При установке MySQL с помощью дистрибутива RPM запуск и остановка сервера на некоторых платформах Linux управляются systemd. На этих платформах mysqld_safe не устанавливается, так как он не требуется. Для получения информации о использовании systemd для управления несколькими экземплярами MySQL см. Раздел 2.5.9, «Управление сервером MySQL с помощью systemd».
Один из способов запуска нескольких экземпляров MySQL на Unix — это компиляция разных серверов с разными значениями по умолчанию для портов TCP/IP и файлов сокетов Unix, чтобы каждый из них прослушивал разные сетевые интерфейсы. Компиляция в разных базовых каталогах для каждой установки также автоматически приводит к раздельному, скомпилированному каталогу данных, файлу журнала и расположению файла PID для каждого сервера.
Предположим, что существующий сервер 9.1 настроен на стандартный порт TCP/IP (3306) и файл сокета Unix (/tmp/mysql.sock). Для настройки нового сервера 9.2.0 с другими параметрами используйте команду CMake примерно такого вида:
$> cmake . -DMYSQL_TCP_PORT=port_number \
-DMYSQL_UNIX_ADDR=file_name \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-9.2.0
Здесь port_number и file_name должны отличаться от стандартного номера порта TCP/IP и пути к файлу сокета Unix, а значение CMAKE_INSTALL_PREFIX должно указывать на каталог установки, отличный от каталога, в котором расположена существующая установка MySQL.
Если у вас есть сервер MySQL, прослушивающий заданный номер порта, вы можете использовать следующую команду, чтобы узнать используемые операционные параметры для нескольких важных настраиваемых переменных, включая базовый каталог и имя файла сокета Unix:
$> mysqladmin --host=host_name --port=port_number variables
Используя информацию, отображенную этой командой, вы можете узнать, какие значения параметров не следует использовать при настройке дополнительного сервера.
Если вы укажете localhost в качестве имени хоста, mysqladmin по умолчанию использует файл сокета Unix, а не TCP/IP. Чтобы явно указать протокол передачи, используйте опцию --protocol={TCP|SOCKET|PIPE|MEMORY}.
Вам не нужно компилировать новый сервер MySQL только для запуска с другим файлом сокета Unix и номером порта TCP/IP. Также можно использовать один и тот же двоичный файл сервера и запускать каждый вызов с разными значениями параметров во время выполнения. Один из способов сделать это — использовать параметры командной строки:
$> mysqld_safe --socket=file_name --port=port_number
Для запуска второго сервера укажите разные значения опций --socket и --port и передайте опцию --datadir= в mysqld_safe, чтобы сервер использовал другой каталог данных.dir_name
В качестве альтернативы, поместите параметры для каждого сервера в разные файлы параметров, а затем запустите каждый сервер с помощью опции --defaults-file, которая указывает путь к соответствующему файлу параметров. Например, если файлы параметров для двух экземпляров сервера имеют имена /usr/local/mysql/my.cnf и /usr/local/mysql/my.cnf2, запустите серверы так:
$> mysqld_safe --defaults-file=/usr/local/mysql/my.cnf
$> mysqld_safe --defaults-file=/usr/local/mysql/my.cnf2
Другой способ достижения аналогичного эффекта — использование переменных среды для задания имени файла сокета Unix и номера порта TCP/IP:
$> MYSQL_UNIX_PORT=/tmp/mysqld-new.sock
$> MYSQL_TCP_PORT=3307
$> export MYSQL_UNIX_PORT MYSQL_TCP_PORT
$> bin/mysqld --initialize --user=mysql
$> mysqld_safe --datadir=/path/to/datadir &
Это быстрый способ запуска второго сервера для тестирования. Преимущество этого метода заключается в том, что настройки переменных среды применяются ко всем клиентским программам, которые вы вызываете из той же оболочки. Таким образом, подключения для этих клиентов автоматически направляются на второй сервер.
Раздел 6.9, «Переменные среды», содержит список других переменных среды, которые вы можете использовать для управления программами MySQL.
В Unix скрипт mysqld_multi предоставляет еще один способ запуска нескольких серверов. См. Раздел 6.3.4, «mysqld_multi — Управление несколькими серверами MySQL».
© 2025 Oracle
Licensed under the GPLv2 License.