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
Попытка разрешить создание файлов ядра при сбоях сервера на платформах, где это возможно, путем снятия любого мягкого ограничения на файлы ядра. Это полезно при отладке или диагностировании проблем, позволяя получить трассировку стека из сбойного процесса сервера.
-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
.
См. 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"
Вторая строка - это команда, которая будет вызвана в режиме перезапуска.