pg_ctl#
pg_ctl
pg_ctl — инициализировать, запустить, остановить или управлять сервером Tantor BE
Синтаксис
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 BE, запуска, остановки или перезапуска сервера базы данных Tantor BE (postgres), или отображения статуса работающего сервера. Хотя сервер можно запустить вручную, pg_ctl инкапсулирует такие задачи, как перенаправление вывода журнала и правильное отключение от терминала и группы процессов. Он также предоставляет удобные опции для контролируемого завершения работы.
Режим init или initdb создает новый
кластер баз данных Tantor BE, то есть,
коллекцию баз данных, которыми будет управлять один
экземпляр сервера. В этом режиме вызывается команда 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 режим вращает файл журнала сервера.
Для получения подробной информации о том, как использовать этот режим с внешними инструментами вращения журнала, см.
Раздел 23.3.
kill режим отправляет сигнал указанному процессу.
Это особенно полезно в Microsoft Windows,
где нет встроенной команды kill. Используйте
--help, чтобы увидеть список поддерживаемых имен сигналов.
register режим регистрирует сервер Tantor BE
в качестве системной службы в Microsoft Windows.
Опция -S позволяет выбрать тип запуска службы,
либо “auto” (автоматический запуск службы при загрузке системы),
либо “demand” (запуск службы по требованию).
unregister режим отменяет регистрацию системного сервиса
на Microsoft Windows. Это отменяет эффекты команды
register.
Опции
-c--core-filesПопытка разрешить создание файлов ядра при сбоях сервера на платформах, где это возможно, путем снятия любого мягкого ограничения на файлы ядра. Это полезно при отладке или диагностировании проблем, позволяя получить трассировку стека из сбойного процесса сервера.
-Ddatadir--pgdata=datadirУказывает местоположение файлов конфигурации базы данных в файловой системе. Если этот параметр не указан, используется переменная среды
PGDATA.-lfilename--log=filenameДобавьте вывод журнала сервера в файл
filename. Если файл не существует, он будет создан. Umask установлен в 077, поэтому доступ к файлу журнала по умолчанию запрещен для других пользователей.-mmode--mode=modeОпределяет режим завершения работы.
modeможет бытьsmart,fastилиimmediate, или первая буква одного из этих трех. Если этот параметр не указан, по умолчанию используетсяfast.-ooptions--options=optionsУказывает параметры, которые будут переданы непосредственно команде
postgres.-oможет быть указано несколько раз, и все указанные параметры будут переданы.Optionsобычно должны быть заключены в апострофы или двойные кавычки, чтобы гарантировать их передачу как группы.-oinitdb-options--options=initdb-optionsУказывает параметры, которые будут переданы непосредственно команде
initdb.-oможет быть указано несколько раз, и все указанные параметры будут переданы.Опции
initdb-optionsобычно должны быть заключены в апострофы или двойные кавычки, чтобы гарантировать их передачу как группы.-ppathУказывает местоположение исполняемого файла
postgres. По умолчанию исполняемый файлpostgresберется из того же каталога, что иpg_ctl, или, в случае неудачи, из жестко заданного каталога установки. Использование этой опции не требуется, если вы не делаете что-то необычное и получаете ошибки, что исполняемый файлpostgresне найден.В режиме
initэтот параметр аналогично указывает местоположение исполняемого файлаinitdb.-s--silentПечатайте только ошибки, без информационных сообщений.
-tseconds--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
-esourceИмя источника событий, которое pg_ctl должен использовать для записи в журнал событий при работе в качестве службы Windows. По умолчанию используется
PostgreSQL. Обратите внимание, что это управляет только сообщениями, отправляемыми самим pg_ctl; после запуска сервер будет использовать указанный источник событий, указанный в его параметре event_source. Если сервер не удалось запустить очень рано в процессе запуска, до установки этого параметра, он также может записывать в журнал с использованием имени источника событий по умолчаниюPostgreSQL.-NservicenameИмя системного сервиса для регистрации. Это имя будет использоваться как имя сервиса и отображаемое имя. По умолчанию используется
PostgreSQL.-PpasswordПароль для пользователя, от имени которого будет запущена служба.
-Sstart-typeНачальный тип системной службы.
start-typeможет бытьauto, илиdemand, или первая буква одного из этих двух. Если этот параметр не указан, по умолчанию используетсяauto.-UusernameИмя пользователя для запуска службы. Для пользователей домена используйте формат
DOMAIN\username.
Окружение
PGCTLTIMEOUTПо умолчанию ограничение на количество секунд ожидания завершения запуска или выключения. Если не установлено, значение по умолчанию составляет 60 секунд.
PGDATAМестоположение каталога с данными по умолчанию.
Большинство режимов pg_ctl требуют знания расположения каталога данных; поэтому опция -D обязательна, если не установлена переменная PGDATA.
См. postgres для получения дополнительных переменных, влияющих на сервер.
Файлы
postmaster.pidpg_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 statuspg_ctl: server is running (PID: 13718) /opt/tantor/db/16/bin/postgres "-D" "/opt/tantor/db/16/data" "-p" "5433" "-B" "128"
Вторая строка - это команда, которая будет вызвана в режиме перезапуска.