Spec-Zone.ru › MySQL 5.7

5.7.3 Запуск нескольких экземпляров MySQL на Unix

Примечание

В данном обсуждении используется mysqld_safe для запуска нескольких экземпляров MySQL. При установке MySQL с помощью RPM-распределения запуск и останов сервера на нескольких платформах Linux управляется системой systemd. На этих платформах mysqld_safe не устанавливается, так как он не нужен. Сведения о использовании systemd для управления несколькими экземплярами MySQL см. в разделе 2.5.10 «Управление сервером MySQL с помощью systemd».

Один из способов запуска нескольких экземпляров MySQL на Unix заключается в компиляции разных серверов с разными значениями по умолчанию для портов TCP/IP и файлов сокетов Unix, чтобы каждый из них прослушивал разные сетевые интерфейсы. Компиляция в разных базовых каталогах для каждой установки также автоматически приводит к раздельному, скомпилированному каталогу данных, файлу журнала и файлу PID для каждого сервера.

Предположим, что существующий сервер 5.6 настроен для стандартного номера порта TCP/IP (3306) и файла сокета Unix (/tmp/mysql.sock). Чтобы настроить новый сервер 5.7.44 с другими параметрами работы, используйте команду CMake, подобную этой:

$> cmake . -DMYSQL_TCP_PORT=port_number \
             -DMYSQL_UNIX_ADDR=file_name \
             -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.44

Здесь 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=dir_name в mysqld_safe, чтобы сервер использовал другой каталог данных.

В качестве альтернативы, поместите параметры для каждого сервера в отдельный файл параметров, а затем запустите каждый сервер с помощью параметра --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
$> mysqld --initialize --user=mysql
...set root password...
$> mysqld_safe --datadir=/path/to/datadir &

Это быстрый способ запуска второго сервера для тестирования. Преимущество этого метода заключается в том, что настройки переменных среды применяются ко всем клиентским программам, которые вы вызываете из той же оболочки. Таким образом, подключения для этих клиентов автоматически направляются на второй сервер.

Раздел 4.9 «Переменные окружения» содержит список других переменных среды, которые можно использовать для влияния на программы MySQL.

В Unix скрипт mysqld_multi предоставляет ещё один способ запуска нескольких серверов. См. раздел 4.3.4 «mysqld_multi — Управление несколькими серверами MySQL».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/multiple-unix-servers.html

Spec-Zone.ru

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