|
Документация 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 (mysqlds) на различных
компьютерах с доступом к одному каталогу данных через сетевую файловую
систему обычно не приводит ни к чему хорошему! Проблема состоит в том,
что сетевая файловая система становится узким местом для передачи данных.
Она не предназначена для такого использования. И даже в этом случае
придется искать решение, которое позволит обеспечить отсутствие конфликтов
между двумя или более модулями mysqld. На данный момент не существует
платформы, которая обеспечивает на 100% надежную блокировку доступа к
файлам (обычно демон lockd) во всех возможных ситуациях. Кроме того,
существует еще одна опасность при использовании сетевой файловой системы:
эта система может еще больше усложнить работу программы lockd. Поэтому
лучше смотреть на вещи проще и забыть об этой идее. Оптимальным решением
будет использование одного компьютера с несколькими центральными
процессорами и с операционной системой, которая эффективно управляет
потоками.
Если нужно подсоединиться к серверу 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').
Документация Apache Документация MySQL Документация PHP
|