Процесс qhb

qhb - сервер базы данных QHB

Синтаксис

qhb [option...]

или

qhbmaster [option...]

Описание

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

Один экземпляр qhb всегда управляет данными только одного кластера базы данных. Кластер баз данных - это набор баз данных, который хранится в общей папке файловой системы («область данных»). В системе одновременно может работать несколько экземпляров qhb, если они используют разные области данных и разные коммуникационные порты (см. ниже). Когда qhb запускается, он должен знать местоположение области данных. Местоположение должно быть указано с помощью опции -D или переменной среды PGDATA - значение по умолчанию отсутствует. Как правило, -D или PGDATA указывает непосредственно на каталог области данных, созданный qhb_bootstrap. Другие возможные шаблоны файлов обсуждаются в главе Расположение файлов.

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

Команда qhb также может быть вызвана в однопользовательском режиме. Основное использование этого режима во время начального создания базы при помощи qhb_bootstrap. Иногда этот режим используется для отладки или аварийного восстановления; обратите внимание, что использование однопользовательского режима не совсем подходит для полноценной отладки сервера, так как не будет реалистичного межпроцессного взаимодействия, блокировок и т.п. При вызове в однопользовательском режиме из оболочки пользователь может вводить запросы, и результаты будут выводиться на экран, но в форме, которая более полезна для разработчиков, чем для конечных пользователей. В однопользовательском режиме пользователь сеанса будет установлен на пользователя с ID 1, и этому пользователю будут предоставлены неявные полномочия суперпользователя. Этот пользователь фактически не должен существовать, поэтому однопользовательский режим можно использовать для ручного восстановления после определенных видов случайного повреждения системных каталогов.

Параметры

qhb принимает следующие аргументы командной строки. Для подробного обсуждения вариантов обратитесь к разделу Конфигурация сервера. Вы можете сохранить ввод большинства этих параметров, настроив файл конфигурации. Некоторые (безопасные) параметры также могут быть установлены из подключающегося клиента в зависимости от приложения, чтобы применяться только для этого сеанса. Например, если установлена переменная среды PGOPTIONS, клиенты на основе libpq передадут эту строку на сервер, который будет интерпретировать ее как параметры командной строки qhb .

Общие параметры

ПараметрОписание
-B nbuffersУстанавливает количество общих буферов для использования процессами сервера. Значение по умолчанию для этого параметра выбирается автоматически qhb_bootstrap. Указание этой опции эквивалентно установке параметра конфигурации shared_buffers
-c name = valueУстанавливает именованный параметр времени выполнения. Параметры конфигурации, поддерживаемые QHB, описаны в главе 19. Большинство других параметров командной строки на самом деле являются краткими формами такого назначения параметров. -c может появляться несколько раз для установки нескольких параметров
-C nameПечатает значение указанного параметра времени выполнения и завершает работу. (Подробности смотрите в опции -c выше.) Это может быть использовано на работающем сервере и возвращает значения из qhb.conf, модифицированные любыми параметрами, предоставленными в этом вызове. Он не отражает параметры, предоставленные при запуске кластера. Этот параметр предназначен для других программ, которые взаимодействуют с экземпляром сервера, например qhb_ctl, для запроса значений параметров конфигурации. Пользовательские приложения должны вместо этого использовать SHOW или представление pg_settings
-d debug-levelУстанавливает уровень отладки. Чем выше установлено это значение, тем больше выходных данных отладки записывается в журнал сервера. Значения находятся в диапазоне от 1 до 5. Также возможно передать -d 0 для определенного сеанса, что предотвратит распространение уровня журнала родительского процесса qhb на этот сеанс
-D datadirОпределяет расположение файловой системы файлов конфигурации базы данных
-eУстанавливает стиль даты по умолчанию « Европейский », то есть DMY порядок полей ввода даты. Это также приводит к тому, что день печатается до месяца в определенных форматах вывода даты
-FОтключает вызовы fsync для повышения производительности, что может привести к повреждению данных в случае сбоя системы. Указание этого параметра эквивалентно отключению параметра конфигурации fsync. Прочтите подробную документацию перед использованием!
-h hostnameУказывает IP-имя хоста или адрес, по которому qhb должен прослушивать соединения TCP / IP от клиентских приложений. Значением также может быть список адресов через запятую или * для указания прослушивания на всех доступных интерфейсах. Пустое значение указывает, что не прослушивается ни один IP-адрес, и в этом случае для подключения к серверу могут использоваться только сокеты Unix-домена. По умолчанию прослушивание только на локальном хосте. Указание этой опции эквивалентно установке параметра конфигурации listen_addresses
-iПозволяет удаленным клиентам подключаться через соединения TCP / IP (интернет-домен). Без этой опции принимаются только локальные соединения. Эта опция эквивалентна установке *listen_addresses * * в qhb.conf или через -h .Эта опция устарела, так как она не позволяет получить доступ ко всем функциям listen_addresses. Обычно лучше установить listen_addresses напрямую
-k directoryУказывает каталог сокета Unix-домена, в котором qhb должен прослушивать соединения от клиентских приложений. Значение также может быть разделенным запятыми списком каталогов. Пустое значение указывает, что прослушивание не происходит ни в одном из сокетов Unix-домена, и в этом случае для подключения к серверу могут использоваться только сокеты TCP / IP. Значением по умолчанию обычно является /tmp, но его можно изменить во время сборки. Указание этой опции эквивалентно установке параметра конфигурации unix_socket_directories
-lВключает безопасные соединения с использованием SSL. QHB должен быть скомпилирован с поддержкой SSL, чтобы эта опция была доступна
-N max-connectionsУстанавливает максимальное количество клиентских подключений, которые принимает этот сервер. Значение по умолчанию для этого параметра выбирается автоматически qhb_bootstrap. Указание этой опции эквивалентно установке параметра конфигурации max_connections
-o extra-optionsАргументы в стиле командной строки, указанные в extra-options, передаются всем процессам сервера, запущенным этим процессом qhb. Пробелы внутри extra-options считаются отдельными аргументами, если они не экранированы обратной косой чертой ( \ ) - написать \ для представления буквального обратного слеша. Несколько аргументов также могут быть указаны с помощью многократного использования -o .Использование этой опции устарело- все параметры командной строки для серверных процессов можно указать непосредственно в командной строке qhb
-p portУказывает порт TCP / IP или расширение файла локального сокета домена Unix, на котором qhb должен прослушивать соединения от клиентских приложений. По умолчанию используется значение переменной среды PGPORT или, если PGPORT не установлен, то по умолчанию используется значение, установленное во время компиляции (обычно 5432). Если вы указываете порт, отличный от порта по умолчанию, то все клиентские приложения должны указывать один и тот же порт, используя либо параметры командной строки, либо PGPORT
-sВыводит информацию о времени и другую статистику в конце каждой команды. Это полезно для бенчмаркинга или для настройки количества буферов.
-S work-memОпределяет объем памяти, который будет использоваться внутренними сортировками и хэшами перед использованием временных файлов на диске
-VПоказать версию qhb и выйти
--name = valueУстанавливает именованный параметр времени выполнения - более короткая форма -c
--describe-configЭта опция выводит внутренние переменные конфигурации сервера, описания и значения по умолчанию в формате COPY разделителями табуляцией. Он предназначен в первую очередь для использования инструментами администрирования
-?Показать справку об аргументах командной строки qhb и выйти

Параметры для разработки

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

ПараметрОписание
-f { s i o b t n m h }Запрещает использование определенных методов сканирования и объединения: s и i отключают последовательное и индексное сканирование соответственно, o, b и t отключают сканирование только по индексу, сканирование по растровому индексу и сканирование TID соответственно, в то время как n, m и h отключают nested- loop, merge и hash присоединяются соответственно.Ни последовательное сканирование, ни объединение с вложенным циклом не могут быть полностью отключены; параметры -fs и -fn просто не -fn оптимизатору использовать эти типы планов, если у него есть какая-либо другая альтернатива
-nЭта опция предназначена для отладки проблем, которые приводят к аварийному завершению процесса сервера. Обычная стратегия в этой ситуации состоит в том, чтобы уведомить все другие серверные процессы о том, что они должны завершиться, а затем повторно инициализировать общую память и семафоры. Это связано с тем, что ошибочный процесс на сервере мог повредить некоторое общее состояние перед завершением. Эта опция указывает, что qhb не будет повторно инициализировать общие структуры данных. Опытный системный программист может затем использовать отладчик для проверки состояния совместно используемой памяти и семафора
-OПозволяет изменять структуру системных таблиц. Это используется qhb_bootstrap
-PИгнорируйте системные индексы при чтении системных таблиц, но обновляйте индексы при изменении таблиц. Это полезно при восстановлении с поврежденных системных индексов
-t paВывести статистику по времени для каждого запроса, относящегося к каждому из основных системных модулей. Эта опция не может использоваться вместе с опцией -s
-TЭта опция предназначена для отладки проблем, которые приводят к аварийному завершению процесса сервера. Обычная стратегия в этой ситуации состоит в том, чтобы уведомить все другие серверные процессы о том, что они должны завершиться, а затем повторно инициализировать общую память и семафоры. Это связано с тем, что ошибочный процесс на сервере мог повредить некоторое общее состояние перед завершением. Эта опция указывает, что qhb остановит все другие процессы сервера, отправив сигнал SIGSTOP, но не приведет к их завершению. Это позволяет системным программистам собирать дампы ядра всех процессов сервера вручную.
-v protocolЗадает номер версии протокола внешнего / внутреннего интерфейса, который будет использоваться для определенного сеанса. Эта опция предназначена только для внутреннего использования
-W secondsЗадержка, равная многим секундам, возникает при запуске нового серверного процесса после проведения процедуры аутентификации. Это сделано для того, чтобы дать возможность подключить к серверу процесс с помощью отладчика

Параметры для однопользовательского режима

Следующие параметры применимы только к однопользовательскому режиму (см. Однопользовательский режим ).

ПараметрОписание
--singleВыбирает однопользовательский режим. Это должен быть первый аргумент в командной строке.
databaseОпределяет имя базы данных для доступа. Это должен быть последний аргумент в командной строке. Если он опущен, по умолчанию используется имя пользователя.
-EВыведите все команды на стандартный вывод перед их выполнением.
-jИспользуйте точку с запятой, за которой следуют две новые строки, а не просто новая, в качестве ограничителя ввода команды.
-r filenameОтправьте весь вывод журнала сервера на filename. Эта опция учитывается только в том случае, если она указана в командной строке.

Переменные окружения

ПеременнаяОписание
PGCLIENTENCODINGКодировка символов по умолчанию, используемая клиентами. (Клиенты могут переопределить это индивидуально.) Это значение также можно установить в файле конфигурации.
PGDATAМестоположение каталога данных по умолчанию
PGDATESTYLEЗначение по умолчанию для параметра времени выполнения DateStyle. (Использование этой переменной среды устарело.)
PGPORTНомер порта по умолчанию (желательно установить в файле конфигурации)

Диагностика

Сообщение об ошибке, в котором упоминается semget или shmget, вероятно, указывает на то, что вам необходимо настроить ядро для предоставления достаточной общей памяти и семафоров. Вы можете отложить перенастройку ядра, уменьшив shared_buffers, чтобы уменьшить потребление разделяемой памяти QHB, и / или уменьшить max_connections, чтобы уменьшить потребление семафора.

Сообщение об ошибке, указывающее на то, что другой сервер уже запущен, следует тщательно проверить, например, с помощью команды

$ ps ax | grep qhb

или

$ ps -ef | grep qhb

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

Сообщение об ошибке, указывающее на невозможность привязки к порту, может указывать на то, что этот порт уже используется некоторым процессом, не связанным с QHB. Вы также можете получить эту ошибку, если завершите работу QHB и немедленно перезапустите его, используя тот же порт; в этом случае вы должны просто подождать несколько секунд, пока операционная система не закроет порт, прежде чем пытаться снова. Наконец, вы можете получить эту ошибку, если указать номер порта, который ваша операционная система считает зарезервированным. Например, многие версии Unix считают номера портов менее 1024 « доверенными » и разрешают только суперпользователю Unix доступ к ним.

Примечания

Командную утилиту qhb_ctl можно использовать для безопасного и удобного запуска и выключения сервера qhb.

Если это вообще возможно, не используйте SIGKILL для уничтожения основного сервера qhb. Это предотвратит освобождение qhb системных ресурсов (например, разделяемой памяти и семафоров), которые он хранит до завершения. Это может вызвать проблемы при запуске нового экземпляра qhb.

Для нормального завершения работы сервера qhb можно использовать сигналы SIGTERM, SIGINT или SIGQUIT. Первый будет ожидать завершения работы всех клиентов перед выходом, второй принудительно отключит все клиенты, а третий немедленно завершит работу без надлежащего завершения работы, что приведет к запуску восстановления во время перезапуска.

Сигнал SIGHUP перезагрузит файлы конфигурации сервера. Также возможно отправить SIGHUP на отдельный процесс сервера, но это обычно не имеет смысла.

Чтобы отменить текущий запрос, отправьте сигнал SIGINT процессу, выполняющему эту команду. Чтобы завершить внутренний процесс, отправьте SIGTERM этому процессу. Смотрите также pg_cancel_backend и pg_terminate_backend в главе Функции сигнализации сервера для вызываемых SQL эквивалентов этих двух действий.

Сервер qhb использует SIGQUIT чтобы указать подчиненным процессам сервера завершиться без обычной очистки. Этот сигнал не должен использоваться пользователями. Также неразумно отправлять SIGKILL на серверный процесс - основной процесс qhb будет интерпретировать это как сбой и заставит все родственные процессы завершиться как часть стандартной процедуры восстановления после сбоя.

Ошибки

Однопользовательский режим

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

qhb --single -D /usr/local/qhb/data other-options my_database

Укажите правильный путь к каталогу базы данных с помощью -D или убедитесь, что установлена переменная среды PGDATA. Также укажите имя конкретной базы данных, в которой вы хотите работать.

Обычно сервер однопользовательского режима обрабатывает символ новой строки как окончание ввода команды - о точка с запятой не является синтаксическим разделителем, как в qsql. Чтобы продолжить команду через несколько строк, надо использовать обратную косую черту перед каждой новой строкой, кроме последней. Обратная косая черта и соседний символ новой строки удаляются из команды ввода. Обратите внимание, что это произойдет, даже внутри строкового литерала или комментария.

Но если вы используете ключ командной строки -j, одиночная новая строка не завершает ввод команды - вместо этого используется последовательность : точка с запятой-и начало новой строки. То есть введите точку с запятой, за которой сразу следует полностью пустая строка. Обратная косая черта и последующая новая строка не обрабатывается специально в этом режиме. Опять же, нет никаких гарантий если такая последовательность появляется внутри строкового литерала или комментария.

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

Чтобы выйти из сеанса, введите EOF (обычно Control + D ). Если вы ввели какой-либо текст со времени последнего терминатора ввода команды, тогда EOF будет принят как терминатор ввода команды, и для выхода потребуется другой EOF .

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

Примеры

Чтобы запустить qhb в фоновом режиме, используя значения по умолчанию, введите:

$ nohup qhb >logfile 2>&1 </dev/null &

Чтобы запустить qhb с определенным портом, например, 1234:

$ qhb -p 1234

Чтобы подключиться к этому серверу с помощью qsql, укажите этот порт с параметром -p:

$ qsql -p 1234

или установите переменную окружения PGPORT :

$ export PGPORT=1234
$ qsql

Именованные параметры времени выполнения могут быть установлены в любом из следующих стилей:

$ qhb -c work_mem=1234
$ qhb --work-mem=1234

Любая форма переопределяет любую настройку для work_mem в qhb.conf. Обратите внимание, что подчеркивания в именах параметров могут быть записаны как подчеркивание или тире в командной строке. За исключением краткосрочных экспериментов, вероятно, лучше отредактировать параметр в qhb.conf чем полагаться на параметр командной строки для установки параметра.

Смотрите Также

qhb_bootstrap, qhb_ctl