pg_ctl#

pg_ctl

pg_ctl

pg_ctl — инициализировать, запустить, остановить или управлять сервером Tantor SE

Синтаксис

pg_ctl init[db] [-D datadir] [-s] [-o initdb-options]

pg_ctl start [-D datadir] [-l filename] [-W] [-t seconds] [-s] [-o options] [-p path] [-c]

pg_ctl stop [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t seconds] [-s]

pg_ctl restart [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t seconds] [-s] [-o options] [-c]

pg_ctl reload [-D datadir] [-s]

pg_ctl status [-D datadir]

pg_ctl promote [-D datadir] [-W] [-t seconds] [-s]

pg_ctl logrotate [-D datadir] [-s]

pg_ctl kill signal_name process_id

На операционной системе Microsoft Windows также:

pg_ctl register [-D datadir] [-N servicename] [-U username] [-P password] [-S a[uto] | d[emand] ] [-e source] [-W] [-t seconds] [-s] [-o options]

pg_ctl unregister [-N servicename]

Описание

pg_ctl - это утилита для инициализации кластера базы данных Tantor SE, запуска, остановки или перезапуска сервера базы данных Tantor SE (postgres), или отображения статуса работающего сервера. Хотя сервер можно запустить вручную, pg_ctl инкапсулирует такие задачи, как перенаправление вывода журнала и правильное отключение от терминала и группы процессов. Он также предоставляет удобные опции для контролируемого завершения работы.

Режим init или initdb создает новый кластер баз данных Tantor SE, то есть, коллекцию баз данных, которыми будет управлять один экземпляр сервера. В этом режиме вызывается команда initdb. Подробности см. в разделе initdb.

start режим запускает новый сервер. Сервер запускается в фоновом режиме, и его стандартный ввод привязывается к /dev/null (или nul в Windows). В системах, основанных на Unix, по умолчанию стандартный вывод и стандартная ошибка сервера отправляются в стандартный вывод (а не в стандартную ошибку) pg_ctl. Стандартный вывод pg_ctl затем должен быть перенаправлен в файл или передан в другой процесс, такой как программа вращения журналов rotatelogs; в противном случае postgres будет записывать свой вывод в управляющий терминал (из фонового режима) и не покинет группу процессов оболочки. В Windows по умолчанию стандартный вывод и стандартная ошибка сервера отправляются в терминал. Эти поведения по умолчанию можно изменить, используя -l для добавления вывода сервера в файл журнала. Рекомендуется использовать либо -l, либо перенаправление вывода.

stop режим выключает сервер, работающий в указанном каталоге данных. С помощью опции -m можно выбрать один из трех методов выключения. Режим Smart запрещает новые подключения, а затем ожидает отключения всех существующих клиентов. Если сервер находится в горячем режиме ожидания, восстановление и потоковая репликация будут прекращены после отключения всех клиентов. Режим Fast (по умолчанию) не ожидает отключения клиентов. Все активные транзакции откатываются, клиенты принудительно отключаются, а затем сервер выключается. Режим Immediate немедленно прерывает все процессы сервера без чистого выключения. Этот выбор приведет к циклу восстановления после аварийного завершения при следующем запуске сервера

restart режим эффективно выполняет остановку, за которой следует запуск. Это позволяет изменять параметры командной строки postgres или изменять параметры файла конфигурации, которые нельзя изменить без перезапуска сервера. Если при запуске сервера использовались относительные пути в командной строке, restart может завершиться неудачей, если pg_ctl выполняется в той же текущем каталоге, что и при запуске сервера.

reload режим просто отправляет процесс сервера postgres сигнал SIGHUP, заставляя его перечитать свои файлы конфигурации (postgresql.conf, pg_hba.conf и т. д.). Это позволяет изменять параметры конфигурационных файлов, которые не требуют полной перезагрузки сервера, чтобы вступить в силу.

status mode проверяет, работает ли сервер в указанном каталоге данных. Если да, то отображаются PID сервера и параметры командной строки, которые использовались для его запуска. Если сервер не работает, pg_ctl возвращает код завершения 3. Если не указан доступный каталог данных, pg_ctl возвращает код завершения 4.

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

logrotate режим вращает файл журнала сервера. Для получения подробной информации о том, как использовать этот режим с внешними инструментами вращения журнала, см. Раздел 24.3.

kill режим отправляет сигнал указанному процессу. Это особенно полезно в Microsoft Windows, где нет встроенной команды kill. Используйте --help, чтобы увидеть список поддерживаемых имен сигналов.

register режим регистрирует сервер Tantor SE в качестве системной службы в Microsoft Windows. Опция -S позволяет выбрать тип запуска службы, либо auto (автоматический запуск службы при загрузке системы), либо demand (запуск службы по требованию).

unregister режим отменяет регистрацию системного сервиса на Microsoft Windows. Это отменяет эффекты команды register.

Опции

-c
--core-files

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

-D datadir
--pgdata=datadir

Указывает местоположение файлов конфигурации базы данных в файловой системе. Если этот параметр не указан, используется переменная среды PGDATA.

-l filename
--log=filename

Добавьте вывод журнала сервера в файл filename. Если файл не существует, он будет создан. Umask установлен в 077, поэтому доступ к файлу журнала по умолчанию запрещен для других пользователей.

-m mode
--mode=mode

Определяет режим завершения работы. mode может быть smart, fast или immediate, или первая буква одного из этих трех. Если этот параметр не указан, по умолчанию используется fast.

-o options
--options=options

Указывает параметры, которые будут переданы непосредственно команде postgres. -o может быть указано несколько раз, и все указанные параметры будут переданы.

Options обычно должны быть заключены в апострофы или двойные кавычки, чтобы гарантировать их передачу как группы.

-o initdb-options
--options=initdb-options

Указывает параметры, которые будут переданы непосредственно команде initdb. -o может быть указано несколько раз, и все указанные параметры будут переданы.

Опции initdb-options обычно должны быть заключены в апострофы или двойные кавычки, чтобы гарантировать их передачу как группы.

-p path

Указывает местоположение исполняемого файла postgres. По умолчанию исполняемый файл postgres берется из того же каталога, что и pg_ctl, или, в случае неудачи, из жестко заданного каталога установки. Использование этой опции не требуется, если вы не делаете что-то необычное и получаете ошибки, что исполняемый файл postgres не найден.

В режиме init этот параметр аналогично указывает местоположение исполняемого файла initdb.

-s
--silent

Печатайте только ошибки, без информационных сообщений.

-t seconds
--timeout=seconds

Указывает максимальное количество секунд ожидания при ожидании завершения операции (см. опцию -w). По умолчанию устанавливается значение переменной среды PGCTLTIMEOUT или, если она не установлена, 60 секунд.

-V
--version

Выведите версию pg_ctl и завершите работу.

-w
--wait

Ожидайте завершения операции. Это поддерживается для режимов start, stop, restart, promote и register и является значением по умолчанию для этих режимов.

Когда ожидает, pg_ctl повторно проверяет файл PID сервера, засыпая на короткое время между проверками. Запуск считается завершенным, когда файл PID указывает, что сервер готов принимать соединения. Завершение считается завершенным, когда сервер удаляет файл PID. pg_ctl возвращает код завершения, основанный на успешности запуска или завершения.

Если операция не завершается в течение времени ожидания (см. опцию -t), то pg_ctl завершается с ненулевым статусом выхода. Но обратите внимание, что операция может продолжаться в фоновом режиме и в конечном итоге завершиться успешно.

-W
--no-wait

Не ждите завершения операции. Это противоположность опции -w.

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

В предыдущих версиях PostgreSQL это было значение по умолчанию, за исключением режима stop.

-?
--help

Показать справку о командной строке аргументов pg_ctl и выйти.

Если указана опция, которая является допустимой, но не относится к выбранному режиму работы, pg_ctl игнорирует ее.

Опции для Windows

-e source

Имя источника событий, которое pg_ctl должен использовать для записи в журнал событий при работе в качестве службы Windows. По умолчанию используется PostgreSQL. Обратите внимание, что это управляет только сообщениями, отправляемыми самим pg_ctl; после запуска сервер будет использовать указанный источник событий, указанный в его параметре event_source. Если сервер не удалось запустить очень рано в процессе запуска, до установки этого параметра, он также может записывать в журнал с использованием имени источника событий по умолчанию PostgreSQL.

-N servicename

Имя системного сервиса для регистрации. Это имя будет использоваться как имя сервиса и отображаемое имя. По умолчанию используется PostgreSQL.

-P password

Пароль для пользователя, от имени которого будет запущена служба.

-S start-type

Начальный тип системной службы. start-type может быть auto, или demand, или первая буква одного из этих двух. Если этот параметр не указан, по умолчанию используется auto.

-U username

Имя пользователя для запуска службы. Для пользователей домена используйте формат DOMAIN\username.

Окружение

PGCTLTIMEOUT

По умолчанию ограничение на количество секунд ожидания завершения запуска или выключения. Если не установлено, значение по умолчанию составляет 60 секунд.

PGDATA

Местоположение каталога с данными по умолчанию.

Большинство режимов pg_ctl требуют знания расположения каталога данных; поэтому опция -D обязательна, если не установлена переменная PGDATA.

pg_ctl, как и большинство других утилит Tantor SE, также использует переменные среды, поддерживаемые libpq (см. Раздел 32.15).

См. postgres для получения дополнительных переменных, влияющих на сервер.

Файлы

postmaster.pid

pg_ctl анализирует этот файл в каталоге данных, чтобы определить, работает ли сервер в настоящее время.

postmaster.opts

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

Примеры

Запуск сервера

Для запуска сервера, дождитесь, пока сервер примет соединения:

$ pg_ctl start

Для запуска сервера с использованием порта 5433 и без выполнения функции fsync, используйте:

$ pg_ctl -o "-F -p 5433" start

Остановка сервера

Чтобы остановить сервер, используйте:

$ pg_ctl stop

Опция -m позволяет управлять тем, как сервер завершает работу:

$ pg_ctl stop -m smart

Перезапуск сервера

Перезапуск сервера практически эквивалентен остановке сервера и его повторному запуску, за исключением того, что по умолчанию pg_ctl сохраняет и повторно использует параметры командной строки, которые были переданы предыдущему запущенному экземпляру. Чтобы перезапустить сервер с использованием тех же параметров, что и ранее, используйте:

$ pg_ctl restart

Если указана опция -o, она заменяет все предыдущие опции. Для перезапуска с использованием порта 5433 и отключения fsync при перезапуске:

$ pg_ctl -o "-F -p 5433" restart

Показ состояния сервера

Вот пример вывода статуса от pg_ctl:

$ pg_ctl status

pg_ctl: server is running (PID: 13718)
/usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data" "-p" "5433" "-B" "128"

Вторая строка - это команда, которая будет вызвана в режиме перезапуска.

См. также

initdb, postgres