mysqld
Buy this Reference Manual in softcover from Barnes & Noble!
Иногда возникают обстоятельства, когда необходимо запустить несколько серверов на одном компьютере. Например, может понадобиться произвести тестирование новой версии 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.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 Переменные окружения).Add your own comment.