19.14. Обработка ошибок#

19.14. Обработка ошибок

19.14. Обработка ошибок

exit_on_error (boolean)

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

restart_after_crash (boolean)

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

Этот параметр может быть установлен только в файле postgresql.conf или в командной строке сервера.

data_sync_retry (boolean)

Когда установлено значение off, которое является значением по умолчанию, Tantor SE будет вызывать ошибку уровня PANIC в случае неудачной записи измененных файлов данных на файловую систему. Это приводит к аварийному завершению сервера базы данных. Этот параметр может быть установлен только при запуске сервера.

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

Если установлено значение on, Tantor SE вместо этого будет сообщать об ошибке, но продолжит работу, чтобы операция сброса данных могла быть повторена в последующей контрольной точке. Устанавливайте его в значение on только после изучения обработки операционной системой буферизованных данных в случае сбоя записи обратно.

recovery_init_sync_method (enum)

Когда установлено значение fsync, которое является значением по умолчанию, Tantor SE рекурсивно открывает и синхронизирует все файлы в каталоге данных перед началом восстановления после сбоя. Поиск файлов будет осуществляться по символическим ссылкам для каталога WAL и каждого настроенного табличного пространства (но не для других символических ссылок). Это предназначено для обеспечения долговременного хранения всех файлов WAL и данных на диске перед воспроизведением изменений. Это применяется при запуске кластера базы данных, который не был корректно завершен, включая копии, созданные с помощью pg_basebackup.

На Linux вместо этого можно использовать syncfs, чтобы запросить операционную систему синхронизировать все файловые системы, содержащие каталог данных, файлы WAL и каждое табличное пространство (но не любые другие файловые системы, к которым можно обратиться через символические ссылки). Это может быть намного быстрее, чем настройка fsync, потому что не требуется открывать каждый файл по отдельности. С другой стороны, это может быть медленнее, если файловая система используется другими приложениями, которые изменяют много файлов, поскольку эти файлы также будут записываться на диск. Кроме того, в версиях Linux до 5.8 ошибки ввода-вывода, возникающие при записи данных на диск, могут не быть сообщены Tantor SE, и соответствующие сообщения об ошибке могут появляться только в журналах ядра.

Этот параметр может быть установлен только в файле postgresql.conf или в командной строке сервера.