qhb_ctl
qhb_ctl — инициализировать, запустить, остановить или управлять сервером QHB
Синтаксис
qhb_ctl qhb_bootstrap [-D каталог_данных] [-s] [-o параметры-qhb_bootstrap ]
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 берет на себя такие задачи, как перенаправление вывода журнала и корректное отключение от терминала и группы процессов. Помимо этого она предоставляет удобные параметры для управления остановкой кластера.
Команда qhb_bootstrap
или init
(initdb
) создает новый кластер баз данных
QHB, то есть коллекцию баз данных, которая будет управляться
одним экземпляром сервера. Эта команда вызывает утилиту qhb_bootstrap или
initdb соответственно. Подробную информацию см. на справочных страницах
утилит qhb_bootstrap и 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 параметры-qhb_bootstrap
--options=параметры-qhb_bootstrap
Задает параметры, которые будут переданы непосредственно команде qhb_bootstrap
.
Указав ключ -o несколько раз, можно передать все имеющиеся параметры.
Обычно параметры-qhb_bootstrap следует заключать в апострофы или кавычки,
чтобы они гарантированно передавались группой.
-o параметры-initdb
--options=параметры-initdb
Задает параметры, которые будут переданы непосредственно команде initdb
. Указав
ключ -o несколько раз, можно передать все имеющиеся параметры.
Обычно параметры-initdb следует заключать в апострофы или кавычки, чтобы они
гарантированно передавались группой.
-p путь
Указывает расположение исполняемого файла qhb. По умолчанию исполняемый файл
qhb берется из того же каталога, что и qhb_ctl, или, если это
невозможно, из встроенного каталога установки. Использовать этот параметр
необязательно, кроме случаев, когда вы делаете что-то необычное или получаете
сообщения, что исполняемый файл qhb не найден.
В режиме qhb_bootstrap
или init
этот параметр аналогичным образом указывает
расположение исполняемого файла qhb_bootstrap или initdb соответственно.
-s
--silent
Выводить только сообщения об ошибках, без информационных сообщений.
-t секунды
--timeout=секунды
Задает максимальное время (в секундах) ожидания завершения операции (см. параметр
-w). По умолчанию используется значение переменной среды PGCTLTIMEOUT
или, если оно не задано, 60 секунд.
-V
--version
Вывести версию qhb_ctl и завершиться.
-w
--wait
Ждать завершения операции. Поддерживается (и действует по умолчанию) для команд
start
, stop
, restart
и promote
.
В процессе ожидания 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_ctl, как и большинство других утилит QHB, также использует переменные окружения, поддерживаемые libpq (см. раздел Переменные среды).
Список дополнительных переменных, влияющих на сервер, см. на справочной странице утилиты 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"
Во второй строке показана команда, которая будет выполнена в режиме перезапуска.