понедельник, 31 декабря 2012 г.

pg_ctl

Имя

pg_ctl - инициализирует, запускает, останавливает и управляет PostgreSQL сервером

Краткий обзор

pg_ctl init[db] [-s] [-D datadir] [-o initdb-options]
pg_ctl start [-w] [-t seconds] [-s] [-D datadir] [-I filename] [-o options] [-p path] [-c]
pg_ctl stop [-W] [-t seconds] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate]]
pg_ctl restart [-w] [-t seconds] [-s] [-D datadir] [-c] [-m s[mart] | f[ast] | i[mmediate]] [-o options]
pg_ctl reload [-s] [-D datadir]
pg_ctl status [-D datadir]
pg_ctl promote [-s] [-D datadir]
pg_ctl kill signal_name process_id
pg_ctl register [-N servicename] [-U username] [-P password] [-D datadir] [-S a[uto] | d[emand]] [-w] [-t seconds] [-s] [-ooptions]
pg_ctl unregister [-N servicename]

Описание

pg_ctl - это утилита для инициализации кластера БД PostgreSQL, запуска, остановки или перезапуска сервера (postgres), или отображения статуса запущенного сервера. Хотя сервер может быть запущен вручную, pg_ctl включает в себя такие возможности, как перенаправления вывода логов и корректное отключение от терминала. Кроме того это общепринятый способ остановки сервера.
Режимы init или initdb создаёт новый кластер БД PostgreSQL. Кластер БД - это набор БД, которые управляются одним экземпляром сервера. Этот режим использует команду initdb.
В режиме start запускается новый сервер. Запуск происходит в фоне и стандартный ввод прикрепляется к /dev/null (или nul в Windows). На UNIX-подобных системах по умолчанию стандартный вывод и вывод ошибок посылаются на стандартный вывод pg_ctl (а не на стандартный вывод ошибок). Стандартный вывод pg_ctl должен быть затем перенаправлен в файл или канал к другому процессу, например программе, ротирующей логи вроде rotatelogs. В противном случае postgres будет выводить информацию на управляющий терминал (из фонового режима) и не покинет группу процессов оболочки. На Windows по умолчанию стандартный вывод и вывод ошибок отправляются на терминал. Это поведение по умолчанию может быть изменено при помощи опции -l, чтобы перенаправить вывод сервера в файл логов. Рекомендуется использовать либо -l, либо перенаправление вывода.
В режиме stop запущенный в указанной директории сервер будет остановлен. Три разных метода остановки могут быть определены при помощи опции -m. Режим smart (по умолчанию) ожидает отключения всех активных клиентов и создания резервных копий онлайн перед отключением. Если сервер находится в режиме "горячего" резерва, восстановление и потоковая репликация будут прерваны сразу после отключения клиентов. Режим fast не ожидает отлючения клиентов и прерывает все создания резервных копий онлайн. Все активные транзакции откатываются назад, клиенты принудительно отключаются и сервер останавливается. Режим immediate немендленно останавливает сервер, без какой-либо подготовки. В результате, при следующем запуске будет запущен режим восстановления.
Режим restart сначала останавливает сервер, после чего снова запускает его. Таким образом можно изменить опции командной строки postgres.
Режим reload просто посылает процессу postgres сигнал SIGHUP, указывающий на необходимость перечитать конфигурационные файлы (postgresql.conf, pg_hba.conf и т.д.). Это позволяет изменить те опции конфигурации сервера, которые не требуют перезагрузки.
Режим status проверяет запущен ли сервер в указанной директории. Если сервер запущен, то отображаются его PID и опции командной строки.
В режиме promote резервный сервер, запущенный в указанной директории, выходит из режима восстановления и начинает выполнять операции на чтение-запись.
Режим kill позволяет послать сигнал указанному процессу. Особенно важно это для Microsoft Windows, где нет команды kill. Используйте --help чтобы увидеть список поддерживаемых сигналов.
Режим register позволяет Вам зарегистрировать сервис в Microsoft Windows. Опция -S позволяет выбрать тип запуска сервиса "auto" (автоматический запуск сервиса при запуске системы) или "demand" (запуск сервиса вручную).
Режим unregister позволяет отменить регистрацию сервиса в Microsoft Windows. Другими словами, это отменяет результат команды register.

Опции



На тех платформах, где это возможно, пытается разрешить серверу создавать core файлы при падении, поднимая лимиты на эти файлы (by lifting any soft resource limit placed on core files). Это полезно при отладке или диагностике проблемы, позволяя отслеживать стек упавшего процесса сервера.
-D datadir
Определяет расположение файлов БД. Если не указан, то используется переменная окружения PGDATA.
-l filename
Направляет вывод лога сервера в filename. Если файла не существует, то он создаётся. Права доступа устанавливаются в 077, так что доступ к файлу логов по умолчанию закрыт для других пользователей.
-m mode
Определяет режим выключения сервера. mode может быть smart, fast или immediate, причём можно указать только первую букву режима. Если не указано - используется режим smart
-o options
Определяет опции, которые будут переданы непосредственно команде postgres
Эти опции скорее всего должны быть окружены одинарными или двойными кавычками, чтобы они точно были переданы как одна группа параметров
-o initdb-options
Определяет опции, которые будут переданы непосредственно команде initdb.
Эти опции скорее всего должны быть окружены одинарными или двойными кавычками, чтобы они точно были переданы как одна группа параметров
-p path
Задаёт расположение исполняемого файла postgres. По умолчанию он находится в той же папке, что и pg_ctl или же, если его там нет, то в папке установки. Потребность использовать эту опцию может возникнуть только если Вы делаете что-то странное и получаете сообщение об ошибке, что postgres не найден.
В режиме init эта опция аналогичным образом определяет место initdb.
-s
Выводит только сообщения об ошибках, без информационных сообщений
-t
Максимальное количество секунд ожидания запуска или остановки сервера. По умолчанию - 60 секунд
-w
Ожидать завершения запуска или выключения. Ожидание - опция по умолчанию для завершения работы, но не для запуска. В процессе ожидания запуска pg_ctl периодически пытается подключиться к серверу. В процессе ожидания выключения pg_ctl ждёт, пока сервер удалит свой PID файл. pg_ctl возвращает код выхода в зависимости от успеха запуска или завершения
-W
Не ожидать завершения запуска или выключения. Опция по умолчанию для режимов start и restart

Опции для Windows

-N servicename
Имя системного сервиса для регистрации. Это имя будем использоваться и как имя сервиса и как название для отображения
-P password
Пароль для пользователя, который будет запускать сервис
-S start-type
Тип запуска сервиса "auto" (автоматический запуск сервиса при запуске системы) или "demand" (запуск сервиса вручную). Можно использовать первую букву названия типа. Если не указано - используется тип auto.
-U username
Имя пользователя для запуска сервиса. Для доменных имён используйте формат DOMAIN\username

Окружение

PGDATA
Место хранения данных
Эта утилита, как и многие другие утилиты PostgreSQL, использует переменные окружения, поддерживаемые libpq (см раздел 31.13). Более подробно об переменных сервера написано в postgres.

Файлы

postmaster.pid
Наличие этого файла в папке данных помогает pg_ctl определить, запущен ли данный сервер
postmaster.opts
Если этот файл присутствует в папке данных, pg_ctl (в режиме restart) передаст содержимое этого файла в качестве опций postgres, если только это не переопределено опцией -o. Содержимое этого файла так же отображается в режиме status.

Примеры

Запуск сервера
Для запуска сервера:
$ pg_ctl start
Для запуска сервера и ожидания пока сервер начнёт принимать соединения:
$ pg_ctl -w start
Для запуска сервера на порте 5433 и без fsync:
$ pg_ctl -o "-F -p 5433" start
Остановка сервера сервера
Для остановки сервера:
$ pg_ctl stop
Опция -m позволяет контролировать способ остановки сервера:
$pg_ctl stop -m fast
Перезапуск сервера
Перзапуск сервера практически эквивалентен остановке сервера и последующему запуску, за исключением того, что pg_ctl сохраняет и заново использует опции командной строки, которые были переданы для предыдущего запуска. Для перезапуска сервера в простейшем случае:
$ pg_ctl restart
Для перезапуска сервера, ожидания его выключения и включения заново:
$ pg_ctl -w restart
Для перезапуска с запуском на порту 5433 и без использования fsync:
$ pg_ctl -o "-F -p 5433" restart
Просмотр статуса сервера
Вот простой пример вывода статуса:
$ pg_ctl status
pg_ctl: server is running (PID: 13718)
/usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data" "-p" "5433" "-B" "128"
Эта командная строка и будет использоваться в режиме restart

См также

Комментариев нет:

Отправить комментарий