19.16. Обработка ошибок #
exit_on_error
(boolean
) #Если этот параметр включён, любая ошибка приведёт к прерыванию текущего сеанса. По умолчанию он отключён, так что сеанс будет прерываться только при критических ошибках.
restart_after_crash
(boolean
) #Когда этот параметр включён (это состояние по умолчанию), Postgres Pro будет автоматически перезагружаться после сбоя серверного процесса. Такой вариант позволяет обеспечить максимальную степень доступности базы данных. Однако в некоторых обстоятельствах, например, когда Postgres Pro управляется кластерным ПО, такую перезагрузку лучше отключить, чтобы кластерное ПО могло вмешаться и выполнить, возможно, более подходящие действия.
Задать этот параметр можно только в
postgresql.conf
или в командной строке при запуске сервера.data_sync_retry
(boolean
) #При выключенном значении этого параметра (по умолчанию) Postgres Pro будет выдавать ошибку уровня PANIC в случае неудачи при попытке сохранить изменённые данные в файловой системе. В результате сервер баз данных остановится аварийно. Задать этот параметр можно только при запуске сервера.
В некоторых операционных системах состояние данных в кеше внутри ядра оказывается неопределённым при ошибке записи. В каких-то случаях эти данные могут быть просто утеряны, и повторять попытку записи небезопасно: вторая попытка может оказаться успешной, тогда как на деле данные не сохранены. В этих обстоятельствах единственный способ избежать потери данных — восстановить их из WAL после такого сбоя, но перед этим желательно выяснить причину проблемы и, возможно, заменить нерабочее оборудование.
Если включить этот параметр, Postgres Pro в случае сбоя при записи выдаст ошибку, но продолжит работу в расчёте повторить операцию сохранения данных при последующей контрольной точке. Включать его следует, только если достоверно известно, как поступает система с данными в буфере при ошибке записи.
recovery_init_sync_method
(enum
) #Со значением
fsync
(это значение по умолчанию), Postgres Pro будет рекурсивно открывать и синхронизировать все файлы в каталоге данных до начала восстановления после сбоя. Поиск файлов будет осуществляться по символическим ссылкам для каталога WAL и каждого настроенного табличного пространства (но не другим символическим ссылкам). Это делается для того, чтобы убедиться, что все файлы WAL и данных надёжно сохранены на диске перед воспроизведением изменений, и применяется при запуске кластера базы данных, который не был остановлен штатным образом (это касается и копий созданных программой pg_basebackup).В Linux возможен вариант
syncfs
, когда от ОС требуется синхронизировать каждую из файловых систем, содержащих каталог данных, файлы WAL и табличные пространства (но не те файловые системы, которые подключены по символическим ссылкам). При этом не нужно открывать каждый отдельный файл, поэтому данный вариант может работать гораздо быстрее, чемfsync
. С другой стороны, он может быть медленнее, если файловую систему совместно используют и другие приложения, изменяющие множество файлов, поскольку эти файлы также будут записываться на диск. Более того, Linux версий до 5.8 может не всегда сообщать Postgres Pro об ошибках ввода-вывода, произошедших при записи данных на диск, так что соответствующие сообщения можно увидеть только в журналах ядра.Задать этот параметр можно только в
postgresql.conf
или в командной строке при запуске сервера.crash_info
(boolean
) #Если установлено значение по умолчанию
on
, Postgres Pro записывает диагностическую информацию о сбое сервера в файл.Этот параметр можно задать только при запуске сервера.
crash_info_dump
(text
) #Указывает разделённый запятыми список текстовых строк, содержащих источники данных для аварийных дампов. Возможны следующие значения строк:
queries
— тексты запросовmemory_context
— контекст памятиsystem
— информация об ОСmodule
— информация о модулях, загруженных в процессpostgres
cpuinfo
— информация о процессореvirtual_memory
— информация о виртуальной памяти
Значение по умолчанию —
system,module,queries,memory_context
.Этот параметр можно задать только при запуске сервера.
crash_info_location
(string
) #Указывает каталог, в котором должна храниться информация о сбое сервера. При значении
stderr
информация о сбое отправляется в каталог stderr. Если в этом параметре указана пустая строка''
(по умолчанию), используется каталог$PGDATA/crash_info
. Если нужно сохранять файлы в другом месте, заранее создайте целевой каталог и выдайте соответствующие права.Этот параметр можно задать только при запуске сервера.