4.1.4 Запуск нескольких серверов MySQL на одном компьютере
4.1.4 Запуск нескольких серверов MySQL на одном компьютере
Иногда возникают обстоятельства, когда необходимо запустить несколько серверов на одном компьютере. Например, может понадобиться произвести тестирование новой версии MySQL, не изменяя текущей установки программы. Или еще вариант: вы являетесь поставщиком услуг Internet, который хочет предоставить независимые установки MySQL для различных клиентов.
Если необходимо запустить несколько серверов, то проще всего
скомпилировать серверы с различными портами TCP/IP и файлами сокетов (see section 4.7.3 Mysqld_multi, программа для управления множеством серверов MySQL).
Предположим, что существующий сервер настроен на принятые по умолчанию номер порта и файл сокета. Настроим новый сервер при помощи команды configure следующим образом:
shell> ./configure --with-tcp-port=port_number \ --with-unix-socket-path=file_name \ --prefix=/usr/local/mysql-3.22.9
Здесь port_number и file_name должны отличаться от принятого по умолчанию номера порта и пути файла сокета, а значение --prefix должно указывать каталог установки, который отличается от того, в котором установлен текущий MySQL.
Проверить сокет, используемый установленным на данный момент сервером MySQL, можно при помощи следующей команды:
shell> mysqladmin -h hostname --port=port_number variables
Обратите внимание: если указать ``localhost'' как имя удаленного компьютера, mysqladmin по умолчанию будет использовать сокеты Unix вместо TCP/IP.
Если на используемом порту находится сервер MySQL, то будет выдан список самых важных настраиваемых переменных в MySQL, включая имя сокета.
Повторно компилировать новый сервер MySQL нет необходимости, его просто нужно запустить с другими параметрами для порта и сокета. Используемые порт и сокет можно изменить, указав их как параметры запуска для safe_mysqld:
shell> /path/to/safe_mysqld --socket=file_name --port=port_number
Модуль mysqld_multi может также в качестве аргумента принимать safe_mysqld (или mysqld) и передавать параметры из файла конфигурации для safe_mysqld и дальше для mysqld.
Если новый сервер запускается на том же каталоге базы данных, что и другой сервер с включенной записью в журналы, необходимо также указать имена файлов журналов для safe_mysqld при помощи параметров --log, --log-update или --log-slow-queries. Иначе оба сервера могут попытаться осуществить запись в один и тот же файл журнала.
Предупреждение
Предупреждение
Если для второго сервера понадобится использовать другой каталог базы данных, можно воспользоваться параметром --datadir=path для safe_mysqld.
Обратите внимание
Обратите внимание
Если нужно подсоединиться к серверу MySQL, который работает с портом, отличным от того, с которым откомпилирован ваш клиент, можно воспользоваться одним из следующих методов:
- Запустите клиент с параметрами --host 'hostname' --port=port_number, чтобы подсоединиться через TCP/IP, или [--host localhost --socket=file_name], чтобы подсоединиться через сокет Unix.
- В своей программе на языке C или Perl можно задать аргументы порта или сокета при подсоединении к серверу MySQL.
-
При использовании модуля Perl DBD::mysql можно прочитать параметры из
файлов параметров MySQL (see section 4.1.2 Файлы параметров `my.cnf').
$dsn = "DBI:mysql:test;mysql_read_default_group=client; mysql_read_default_file=/usr/local/mysql/data/my.cnf" $dbh = DBI->connect($dsn, $user, $password);
- Задайте переменные окружения MYSQL_UNIX_PORT и MYSQL_TCP_PORT, чтобы указать на сокет Unix и порт TCP/IP до запуска клиентов. Если обычно используются конкретные сокет или порт, команды для задания этих переменных окружения необходимо поместить в свой файл `.login' (see section F Переменные окружения).
- Укажите принятые по умолчанию сокет и порт TCP/IP в файле `.my.cnf' в своем домашнем каталоге (see section 4.1.2 Файлы параметров `my.cnf').