Платформы корпоративных информационных систем


Запуск нескольких демонов



Запуск нескольких демонов


Иногда может оказаться полезным запустить несколько серверов базы данных одновременно. Наиболее часто причиной этого служит желание увеличить производительность. Поскольку mSQL имеет однопо-точную архитектуру, она обрабатывает запросы последовательно. Если значительная часть обращений происходит лишь к одной из баз данных и даже таблиц, приложения, обращающиеся к другим базам данных или таблицам, могут простаивать длительное время в ожидании обработки запроса.

В многопоточном сервере, таком как MySQL, вы не столкнетесь с этой проблемой, но и в mSQL можно обойти ее, запустив несколько процессов mSQL. Недостатком такого решения является то, что к одной базе данных может обращаться только один демон. Без этого ограничения один демон мог бы переписывать изменения, вносимые другим. Осуществить такое ограничение можно, указав каждому работающему экземпляру msql2d отдельный исходный каталог для хранения баз данных. В mSQL 2 это можно сделать через параметры командной строки и файл конфигурации. Для mSQL 1 придется компилировать и устанавливать mSQL несколько раз в разные каталоги.

Чтобы установить для mSQL 2 второй каталог, используйте следующие команды:

mkdir -p /usr/local/second_database/msqldb/. tmp

ср /usr/local/Hughes/msql.conf /usr/local/Hughes/msql.acl\

/usr/local/second_database

chown -R msql /usr/local/second_database

Некоторые Unix-системы используют mkdirs вместо mkdir -p, в других же такая возможность может вообще отсутствовать, и тогда каждый каталог придется создавать отдельно. Вам придется также заменить идентификатор пользователя, под именем которого вы запускаете msql2d, если он отличен от «msql». В Windows и OS/2 процедура та же, за исключением названий команд и символа-разделителя пути.

Когда каталоги созданы и файлы скопированы, нужно отредактировать файл msql.conf из нового каталога, чтобы переменная Inst_Dir указывала на /usr/local/'second_database, а значение TCP_Port не конфликтовало с другими TCP-службами сервера. Значение Unix_Port можно не изменять, поскольку новый сокет будет образован в новом каталоге.

Для запуска нового демона введите ту же команду msql2d со следующими параметрами:

msql2d -f /usr/local/second_database/msql. conf

При работе с mSQL 1 положение немного сложнее. Придется откомпилировать и установить mSQL столько раз, сколько экземпляров mSQL вы хотите запускать. Все ваши утилиты будут работать с любым экземпляром сервера.

Файл конфигурации mSQL

Мы уже сталкивались с файлом конфигурации mSQL, но еще не вникали в мелкие подробности. В mSQL 1 все, кроме безопасности, определялось во время компиляции. В mSQL 2 есть файл конфигурации, позволяющий управлять поведением сервера mSQL во время работы. Ниже дан пример файла конфигурации.

[general]

Inst_Dir = c:\usr\local\Hughes

mSQL_User = msql

Admin_User = root

Pid_File = %I\msql2d.pid

TCP_Port = 1114

Unix_Port = %I\msql2.sock

[system]

Msync_Timer = 30

Host_Lookup = True

Read_0nly = False

Remote_Access = True

Local_Access = True

[w3-msql]

Auth_Host = NULL

Footer = True

Force_Private = False

Сценарий конфигурации разделен на секции, как ini-файл в Windows, состоящие из пар ключ-значение. Сейчас для нас представляет интерес только секция general.

Inst_Dir

Каталог, в который установлена mSQL. Более точно, это каталог, в котором mSQL ищет ваш ACL-файл, РID-файл для mSQL, и каталог msqldb, в котором размещаются каталоги баз данных. В результате можно поддерживать несколько серверов mSQL с единым набором исполняемых файлов.

mSQL_User

ID пользователя, от имени которого запускается процесс mSQL.

Admin_User

ID пользователя, которому разрешено выполнять команды администрирования, такие как msqladmin, обсуждаемая в следующем параграфе.

TCP_Port

Порт TCP/IP, который будет слушать сервер. В Unix номер порта, меньший 1024, можно выбрать, только если сервер mSQL запущен суперпользователем.

Unix_Port

Имя файла сокета Unix. В этом файле мы использовали переменную % 1% вместо Inst_Dir.









Начало  Назад  Вперед


Книжный магазин