Spec-Zone .ru
спецификации, руководства, описания, API

5.6.3. Выполнение Экземпляров MySQL Multiple на Unix

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

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

shell> cmake . -DMYSQL_TCP_PORT=port_number \             -DMYSQL_UNIX_ADDR=file_name
        \             -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.2

Здесь, port_number и file_name должно отличаться от значения по умолчанию номер порта TCP/IP и имя пути к файлу сокета Unix, и CMAKE_INSTALL_PREFIX значение должно определить каталог установки, отличающийся от того, под которым располагается существующая установка MySQL.

Если у Вас есть сервер MySQL, слушающий на данном номере порта, можно использовать следующую команду, чтобы узнать, какие операционные параметры это использует для нескольких важных конфигурируемых переменных, включая основной каталог и имя файла сокета Unix:

shell> mysqladmin --host=host_name --port=port_number
        variables

С информацией, выведенной на экран той командой, можно сказать что значения опции не использовать, конфигурируя дополнительный сервер.

Если Вы определяете localhost как имя хоста, mysqladmin значения по умолчанию к использованию Unix снабжают сокетом соединение файла, а не TCP/IP. Чтобы явно определить протокол соединения, используйте --protocol={TCP|SOCKET|PIPE|MEMORY} опция.

Вы не должны скомпилировать новый сервер MySQL только, чтобы запустить с различного файла сокета Unix и номера порта TCP/IP. Также возможно использовать тот же самый двоичный файл сервера и запустить каждый вызов этого с различными значениями параметра во времени выполнения. Один способ сделать так при использовании параметров командной строки:

shell> mysqld_safe --socket=file_name --port=port_number

Чтобы запустить второй сервер, обеспечьте отличающийся --socket и --port значения опции, и передача a --datadir=path опция к mysqld_safe так, чтобы сервер использовал различный каталог данных.

Альтернативно, поместите опции для каждого сервера в различном файле опции, затем запустите каждый сервер, используя a --defaults-file опция, которая определяет путь к соответствующему файлу опции. Например, если файлы опции для двух экземпляров сервера называют /usr/local/mysql/my.cnf и /usr/local/mysql/my.cnf2, запустите серверы как это: команда:

shell> mysqld_safe
        --defaults-file=/usr/local/mysql/my.cnfshell> mysqld_safe
        --defaults-file=/usr/local/mysql/my.cnf2

Другой способ достигнуть подобного эффекта состоит в том, чтобы использовать переменные окружения, чтобы установить имя файла сокета Unix и номер порта TCP/IP:

shell> MYSQL_UNIX_PORT=/tmp/mysqld-new.sockshell> MYSQL_TCP_PORT=3307shell> export
        MYSQL_UNIX_PORT MYSQL_TCP_PORTshell> mysql_install_db
        --user=mysqlshell> mysqld_safe --datadir=/path/to/datadir
        &

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

Раздел 2.12, "Переменные окружения", включает список других переменных окружения, которые можно использовать, чтобы влиять на программы MySQL.

На Unix mysqld_multi сценарий обеспечивает другой способ запустить многократные серверы. См. Раздел 4.3.4, "mysqld_multi — Серверы MySQL Manage Multiple" .