Перейти к основному содержимому

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

примечание

Эта страница переведена при помощи нейросети GigaChat.

exit_on_error (boolean)

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

restart_after_crash (boolean)

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

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

data_sync_retry (boolean)

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

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

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

recovery_init_sync_method (enum)

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

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

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