Руководство администратора по PostgreSQL | ||
---|---|---|
Предыдущий | Глава 7. Рабочая среда | Следующий |
Замечание: При содействии Massimo Dal Zotto
Необязательный файл data/pg_options содержит опции выполнения, используемые сервером для управления трассировкой сообщений и другие настраиваемые параметры сервера. Файл перечитывается сервером при приеме сигнала SIGHUP, что дает возможность изменять опции выполнения на лету без перезапуска Postgres. Опции, указанные в этом файле, могут быть флагами отладки, используемые пакетом трассировки (backend/utils/misc/trace.c) или числовыми параметрами, которые могут использоваться сервером для управления его работой.
Все опции pg_options при запуске сервера установлены в ноль. Новые или измененные опции будут читаться всеми новыми серверами при их запуске. Чтобы сделать действительными любые изменения для всех запущенных серверов, нужно послать SIGHUP в postmaster. Сигнал будет автоматически послан всем серверам. Также мы можем включить изменения только для определенных серверов, посылая им сигнал SIGHUP напрямую.
pg_options также можно указать в ключе -T Postgres:
postgres options -T "verbose=2,query,hostlookup-"
Функции, используемые для печати ошибок и сообщений отладки теперь могут использовать удобства syslog(2). Сообщения, печатающиеся в stdout или stderr, предваряются временной отметкой и pid сервера:
#timestamp #pid #message 980127.17:52:14.173 [29271] StartTransactionCommand 980127.17:52:14.174 [29271] ProcessUtility: drop table t; 980127.17:52:14.186 [29271] SIIncNumEntries: table is 70% full 980127.17:52:14.186 [29286] Async_NotifyHandler 980127.17:52:14.186 [29286] Waking up sleeping backend process 980127.19:52:14.292 [29286] Async_NotifyFrontEnd 980127.19:52:14.413 [29286] Async_NotifyFrontEnd done 980127.19:52:14.466 [29286] Async_NotifyHandler done
Этот формат улучшает читабельность logs и позволяет людям точно понять какой сервер что делал и в какое время. Это также облегчает написание простых сценариев awk или perl, которые проверяют log для обнаружения ошибок базы данных и проблем, или для вычисления временной статистики по транзакциям.
Сообщения, выводящиеся в syslog, используют log возможность LOG_LOCAL0. Использование syslog можно контролировать с помощью syslog pg_option. К сожалению, многие функции вызывают напрямую printf() для печати своих сообщений в stdout или stderr и этот вывод не может быть перенаправлен в syslog или иметь временных отметок. Рекомендуется, чтобы все вызовы printf замещались макросами PRINTF и вывод в stderr использовал бы EPRINTF, для того чтобы мы могли контролировать весь вывод в стандартном виде.
Формат файла pg_options следующий:
# comment option=integer_value # set value for option option # set option = 1 option+ # set option = 1 option- # set option = 0Заметьте, что ключевым словом также может быть аббревиатура названия опции, определённой в backend/utils/misc/trace.c.
Пример 7-1. Файл pg_options
Например мой файл pg_options содержит следующие значения:
verbose=2 query hostlookup showportnumber
В настоящий момент определены следующие опции:
Флаг глобальной трассировки. Допустимые значения:
Сообщения трассировки разрешаются индивидуально
Разрешены все сообщения трассировки
Запрещены все сообщения трассировки
Флаг подробностей. Допустимые значения:
Нет сообщений. По умолчанию.
Печатать информационные сообщения.
Печатать более информативные сообщения.
Флаг трассировки запроса. Допустимые значения:
Не печатать запрос.
Печатать сжатый запрос в одну строку.
Печатать полный запрос.
Печатать план запроса.
Печатать после разбора.
Печатать переписанный запрос.
Печатать статистику разборщика.
Печатать статистику планировщика.
Печатать статистику исполнителя.
В настоящий момент не используется, но необходима для использования в будущем.
Трассировка блокировок.
Трассировка блокировок пользователя.
Трассировка spin блокировок.
Трассировка уведомляющих функций.
В настоящий момент не используется.
В настоящий момент не используется.
Минимальный oid для трассировки блокировок.
Если oid не равно нулю, то трассировка блокировок.
В настоящий момент не используется.
Таймер проверки взаимных блокировок.
Флаг syslog. Допустимые значения:
Сообщения в stdout/stderr.
Сообщения в stdout/stderr и syslog.
Сообщения только в syslog.
Разрешить поиск имени хоста в ps_status.
Разрешить отображение номера порта в ps_status.
Разблокировка pg_listener после уведомления.
Удалять дубликаты кортежей из pg_listener.
Предыдущий | Начало | Следующий |
Запуск postmaster | В начало главы | Безопасность |