Самоучитель по SQL-сервер в Linux



Сценарий SysV

Сценарий SysV работает аналогично pg_ctl. В сущности, он играет роль управляющей программы для выполнения команд pg_ctl. Главное отличие заключается в том, что сценарий SysV запускается пользователем root, а не пользователем, запускающим PostgreSQL (например, postgres). Сценарий самостоятельно переключает идентификаторы пользователей в нужный момент.

По сравнению с ручным вызовом команд pg_ctl сценарии SysV упрощает процедуры запуска и завершения PostgreSQL. Файл сценария postgresql в каталоге /etc/re.d/init.d хранится в вид обычного текста и может редактироваться в любом стандартном текстовом редакторе. В нем можно легко найти процедуры запуска и завершения, а также добавить или убрать часто используемые аргументы вызова pg_ctl. Вызов postgresql с общим параметром start или stop значительно проще вызова команд pg_ctl с несколькими аргументами.

Инструкции по установке сценария postgresql приведены в главе 2. В зависимости от конфигурации компьютера может существовать несколько способов выполнения установленного сценария. Помните, что настоящее имя файла сценария SysV в каталоге /etc/rc.d/init.d/ выбирается произвольно. Обычно сценарию присваиваются имена postgresql и postgres.

Запуск сценария может осуществляться командой service, если она поддерживается в вашей системе. Команда имеет следующий синтаксис:

service postgresql { start | stop | restart status }

Команда servi се принимает только аргументы, перечисленные в фигурных скобках. Любые другие значения отвергаются. Конфигурацию всех перечисленных режимов можно изменить, отредактировав сценарий (например, /etc/rc.d/init.d/ postgresql). В листинге 9.5 приведен пример запуска PostgreSQL командой service.

Листинг 9.5. Запуск PostgreSQL командой service

[root@booktown -]# service postgresql start

Starting PostgreSQL: ok [root@booktown -]#

Если команда service не поддерживается в вашей системе, сценарий postgresql можно вызвать вручную с указанием полного пути:

/etc/re.d/init.d/postgresql { start | stop | restart | status }

В листинге 9.6 состояние серверного процесса PostgreSQL проверяется прямым вызовом сценария postgresql с указанием полного пути. Предполагается, что в вашей системе стартовые сценарии SysV хранятся в каталоге /etc/rc.d/init.d/.

Листинг 9.6. Проверка состояния PostgreSQL с использованием сценария postgresql

[root@booktown -]# /etc/re.d/init.d/postgresql status

pg_ctl: postmaster is running (pid: 13238)

Command line was:

/usr/local/pgsql/bin/postmaster '-D' '/usr/local/pgsql/data'

[root@booktown -]#

Как видно из результатов, сценарий SysV всего лишь является удобной «оболочкой» для вызова команд приложения pg_ctl, описанного в предыдущем подразделе.

Прямое обращение к postmaster

Программа postmaster представляет собой многопользовательский серверный модуль базы данных PostgreSQL. Именно к этому процессу в конечном счете подключаются клиенты PostgreSQL.

Обычно исполняемый файл postmaster не вызывается напрямую, а обращения к нему производятся косвенным образом через сценарии pg_ctl и SysV, о которых говорилось выше. Тем не менее в определенные моменты эти сценарии все же обращаются к postmaster напрямую, поэтому информация о том, что такое модуль postmaster и как он работает, поможет вам в настройке системы PostgreSQL.

В любой момент времени postmaster работает с одним кластером баз данных, хотя вы можете открыть на разных портах несколько экземпляров postmaster, каждый из которых будет работать со своим кластером.

Синтаксис командной строки postmaster:

postmaster [ -А { 0 | 1 } ] [ -В буферы ] [ -с имя=значение ]

[ -d уровень_отладки ] [ -D каталог_цанных ] [ -F ] [ -h хост ]

[ -i ] [ -k каталог ] [ -1 ] [ -N макс_подключений ]

[ -о параметры ] [ -р порт ] [ -S ] [ -n | -s ]

Ниже описаны ключи программы postmaster для PostgreSQL версии 7.1.x.

  • -А { 0 | 1 }. Флаг проверки отладочных директив на стадии выполнения. Позволяет выполнять отладку, если соответствующий ключ был указан во время компиляции. Флаг -А используется только опытными программистами, работающими над самим пакетом PostgreSQL.
  • -В буферы. Количество дисковых буферов в общей памяти, выделяемых для использования postmaster. По умолчанию — 64.

ПРИМЕЧАНИЕ

Значение ключа -В должно быть по крайней мере вдвое больше значения, передаваемого с ключом -N.

  • -с имя=значение. Произвольные параметры времени выполнения. Ключ позволяет переопределить любой параметр конфигурации, находящийся в файле postgresql.conf (в каталоге данных кластера).
  • -d уровенъ_отладки. Объем отладочного вывода, регистрируемого серверным процессом. По умолчанию равен 0. Чем больше число, тем подробнее вывод. Обычно значения 4 или ниже оказывается вполне достаточно, хотя при уровне 4 сохраняемые отладочные данные могут быстро заполнить все свободное место на диске.

ПРИМЕЧАНИЕ

Если стандартные потоки вывода и ошибок не были перенаправлены от postmaster в файл (на уровне командного интерпретатора или в pg_ctl при помощи ключа -1), вся отладочная информация выводится на управляющем терминале процесса postmaster.

  • -D каталог. Каталог данных кластера. Если каталог не задан, postmaster использует либо значение переменной среды PGDATA, либо подкаталог /data каталога, указанного в переменной POSTGRESHOME. Если вторая переменная также не существует, используется стандартный каталог, заданный на стадии компиляции (например, /usr/local/pgsql/data).
  • -F. Запрет isync. Ключ повышает быстродействие, но повышает риск порчи данных при внезапных сбоях оборудования или операционной системы. Хорошенько подумайте, прежде чем устанавливать этот флаг!
  • -h хост. Адрес, по которому осуществляется прослушивание. По умолчанию PostgreSQL ведет прослушивание по всем настроенным адресам, включая local host.
  • -i. Активизация клиентских подключений через TCP/IP. Если ключ не задан, postmaster принимает подключения только от сокетов локального домена.
  • -k каталог. Каталог доменного сокета Unix, в котором postmaster прослушивает локальные подключения. По умолчанию равен /tmp/.
  • -1. Активизация подключений SSL. Используется в сочетании с ключом -1.

ПРИМЕЧАНИЕ

Чтобы использовать ключ -1, необходимо откомпилировать PostgreSQL с поддержкой SSL.

  • -N макс_соединеиий. Максимальное количество серверных процессов, одновременно обслуживаемых процессом postmaster. По умолчанию — 32. Максимально возможное значение параметра равно 1024. Проследите за тем, чтобы количество выделенных буферов соответствовало максимальному количеству одновременных подключений (параметр -В должен быть по крайней мере вдвое больше параметра -N).
  • -о параметры. Параметры, передаваемые процессом postmaster серверным процессам postgres при запуске. Список параметров приведен в приложении Б. При передаче нескольких параметров строка должна заключаться в кавычки.
  • -р порт. Номер порта TCP/IP (или расширение файла сокета), по которому данный экземпляр postmaster должен принимать подключения. Если ключ не задан, значение берется из переменной среды PGPORT или значения по умолчанию, заданного на стадии компиляции (обычно 5432).
  • -S. Флаг подавления вывода. PostgreSQL отключается от терминального сеанса пользователя, создает собственную группу процессов и перенаправляет свои стандартные потоки вывода и ошибок в /dev/null.

ВНИМАНИЕ

Ключ -S затрудняет диагностику ошибок, поскольку весь трассировочный и отладочный вывод, обычно порождаемый процессом postmaster и его производными процессами, теряется.

Для любознательных программистов стоит добавить, что у программы postmaster также имеются два отладочных ключа:

  • -n. Ключ -п запрещает повторную инициализацию общих структур данных. Далее средствами отладки программист получает информацию о состоянии памяти на момент сбоя.
  • -s. Процесс postmaster останавливает серверные процессы без их завершения сигналом SIGSTOP. Серверные процессы остаются в памяти, что позволяет программисту вручную получить дамп каждого процесса и проанализировать их по отдельности.



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