qhb_ctl

qhb_ctl — инициализировать, запустить, остановить или управлять сервером QHB

Синтаксис

qhb_ctl init[db] [-D каталог_данных] [-s] [-o параметры-initdb]

qhb_ctl start [-D каталог_данных] [-l имя_файла] [-W] [-t секунды] [-s] [-o параметры] [-p путь] [-c]

qhb_ctl stop [-D каталог_данных] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t секунды] [-s]

qhb_ctl restart [-D каталог_данных] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t секунды] [-s] [-o параметры] [-c]

qhb_ctl reload [-D каталог_данных] [-s]

qhb_ctl status [-D каталог_данных]

qhb_ctl promote [-D каталог_данных] [-W] [-t секунды] [-s]

qhb_ctl logrotate [-D каталог_данных] [-s]

qhb_ctl kill имя_сигнала id_процесса

Описание

qhb_ctl — это утилита для инициализации, запуска, остановки или перезапуска кластера базы данных QHB (qhb) или отображения состояния работающего сервера. Хотя сервер можно запустить вручную, qhb_ctl берет на себя такие задачи, как направление вывода в журнал и корректное выключение от терминала и группы процессов. Также она предоставляет удобные параметры для управления остановкой кластера.

Команда init, или initdb, создает новый кластер баз данных QHB, то есть коллекцию баз данных, которая будет управляться одним экземпляром сервера. Эта команда вызывает утилиту initdb. Подробную информацию см. в описании initdb.

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

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

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

Команда reload просто отправляет серверному процессу qhb сигнал SIGHUP, заставляя его перечитать свои файлы конфигурации (qhb.conf, qhb_hba.conf и т. д.). Это позволяет изменять параметры файла конфигурации, которым для вступления в силу не требуется полный перезапуск сервера.

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

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

Команда logrotate прокручивает файл журнала сервера. Подробнее о том, как использовать этот режим с внешними инструментами ротации журналов, см. в разделе Обслуживание файла журнала.

Команда kill отправляет сигнал заданному процессу. Для получения списка имен поддерживаемых сигналов воспользуйтесь ключом --help.

Параметры

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

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

-l имя_файла
--log=имя_файла
Направляет вывод сообщений сервера в файл имя_файла. Если файла еще не существует, он создается. При этом у umask устанавливается значение 077, поэтому доступ к файлу журнала другим пользователям по умолчанию запрещен.

-m режим
--mode=режим
Задает режим остановки кластера. Значением режим может быть smart, fast или immediate (или первая буква этих вариантов). Если этот параметр не указан, по умолчанию выбирается режим fast.

-o параметры
--options=параметры
Задает параметры, которые будут переданы непосредственно команде qhb. Флаг -o можно указывать несколько раз, передавая все имеющиеся параметры.

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

-o параметры-initdb
--options=параметры-initdb
Задает параметры, которые будут переданы непосредственно команде initdb. Флаг -o можно указывать несколько раз, передавая все имеющиеся параметры.

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

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

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

-s
--silent
Выводить только сообщения об ошибках, без информационных сообщений.

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

-V
--version
Вывести версию qhb_ctl и завершиться.

-w
--wait
Ждать завершения операции. Поддерживается (и действует по умолчанию) для команд start, stop, restart, promote и register.

В процессе ожидания qhb_ctl несколько раз проверяет PID-файл сервера, переключаясь в неактивный режим на короткое время между проверками. Запуск считается завершенным, когда PID-файл указывает на то, что сервер готов принимать подключения. Остановка считается завершенной, когда сервер удаляет свой PID-файл. Утилита qhb_ctl возвращает код завершения в зависимости от успеха запуска или остановки.

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

-W
--no-wait
Не ждать завершения операции. Этот параметр противоположен параметру -w.

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

-?
--help
Показать справку об аргументах командной строки qhb_ctl и завершиться.

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

Переменные среды

PGCTLTIMEOUT
Максимальное время (в секундах) ожидания запуска или остановки сервера по умолчанию. Если не задано, то по умолчанию это время составляет 60 секунд.

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

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

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

Файлы

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

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

Примеры

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

Запуск сервера и ожидание момента, когда он начнет принимать подключения:

$ qhb_ctl start

Запуск сервера на порту 5433 и без fsync:

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

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

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

$ qhb_ctl stop

Параметр -m позволяет управлять тем, как сервер будет остановлен:

$ qhb_ctl stop -m smart

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

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

$ qhb_ctl restart

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

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

Отображение состояния сервера

Вот пример вывода состояния qhb_ctl:

$ qhb_ctl status

qhb_ctl: server is running (PID: 13718)
/usr/local/qhb/bin/qhb "-D" "/var/lib/qhb/data" "-p" "5433" "-B" "128"

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

См. также

initdb, qhb