18.14. Обработка ошибок#
18.14. Обработка ошибок #
exit_on_error
(boolean
) #Если включено, любая ошибка приведет к завершению текущей сессии. По умолчанию это отключено, поэтому только критические ошибки приведут к завершению сессии.
restart_after_crash
(boolean
) #Когда установлено значение on, которое является значением по умолчанию, Tantor BE автоматически переинициализируется после сбоя бэкенда. Оставление этого значения включенным обычно является наилучшим способом максимизации доступности базы данных. Однако в некоторых случаях, например, когда Tantor BE вызывается кластерным программным обеспечением, может быть полезно отключить перезапуск, чтобы кластерное программное обеспечение могло получить контроль и выполнить любые необходимые действия.
Этот параметр может быть установлен только в файле
postgresql.conf
или в командной строке сервера.data_sync_retry
(boolean
) #Когда установлено значение off, которое является значением по умолчанию, Tantor BE будет вызывать ошибку уровня PANIC в случае неудачной записи измененных файлов данных на файловую систему. Это приводит к аварийному завершению сервера базы данных. Этот параметр может быть установлен только при запуске сервера.
На некоторых операционных системах статус данных в кеше страниц ядра становится неизвестным после сбоя записи обратно. В некоторых случаях они могут быть полностью забыты, что делает небезопасным повторную попытку; вторая попытка может быть отмечена как успешная, когда на самом деле данные были потеряны. В таких обстоятельствах единственным способом избежать потери данных является восстановление из WAL после любого сбоя, желательно после исследования причины сбоя и замены любого неисправного оборудования.
Если установлено значение on, Tantor BE вместо этого будет сообщать об ошибке, но продолжит работу, чтобы операция сброса данных могла быть повторена в последующей контрольной точке. Устанавливайте его в значение on только после изучения обработки операционной системой буферизованных данных в случае сбоя записи обратно.
recovery_init_sync_method
(enum
) #Когда установлено значение
fsync
, которое является значением по умолчанию, Tantor BE рекурсивно открывает и синхронизирует все файлы в каталоге данных перед началом восстановления после сбоя. Поиск файлов будет осуществляться по символическим ссылкам для каталога WAL и каждого настроенного табличного пространства (но не для других символических ссылок). Это предназначено для обеспечения долговременного хранения всех файлов WAL и данных на диске перед воспроизведением изменений. Это применяется при запуске кластера базы данных, который не был корректно завершен, включая копии, созданные с помощью pg_basebackup.На Linux вместо этого можно использовать
syncfs
, чтобы запросить операционную систему синхронизировать все файловые системы, содержащие каталог данных, файлы WAL и каждое табличное пространство (но не любые другие файловые системы, к которым можно обратиться через символические ссылки). Это может быть намного быстрее, чем настройкаfsync
, потому что не требуется открывать каждый файл по отдельности. С другой стороны, это может быть медленнее, если файловая система используется другими приложениями, которые изменяют много файлов, поскольку эти файлы также будут записываться на диск. Кроме того, в версиях Linux до 5.8 ошибки ввода-вывода, возникающие при записи данных на диск, могут не быть сообщены Tantor BE, и соответствующие сообщения об ошибке могут появляться только в журналах ядра.Этот параметр может быть установлен только в файле
postgresql.conf
или в командной строке сервера.