Как исправить незафиксированный xmin до того, как xid cutoff должен быть заморожен, автоматическая очистка таблицы db.pg_catalog.pg_largeobject"

Журнал ошибок базы данных PostgreSQL генерирует эту ошибку весь день и по-прежнему продолжает ошибку до следующего дня

[23523] ERROR:  uncommitted xmin 53354897 from before xid cutoff 210760077 needs to be frozen
[23523] CONTEXT:  automatic vacuum of table "xxxx.pg_catalog.pg_largeobject"
[23523] ERROR:  uncommitted xmin 53354897 from before xid cutoff 210760077 needs to be frozen
[23523] CONTEXT:  automatic vacuum of table "xxxx.pg_catalog.pg_largeobject_metadata"

Ошибка связана с системными каталогами (pg_catalog.pg_largeobject, pg_catalog.pg_largeobject_metadata).

Мне нужна помощь о том, как это исправить или что будет затронуто, если я отключу автоочистку для этих 2 таблиц.

Примечание:

  • БД: PostgreSQL версии 11.6.
  • ОС: Red Hat Enterprise Linux Server версии 7.8.

person Suphisara Subsurit    schedule 04.02.2021    source источник


Ответы (1)


Вы столкнулись с повреждением данных, и если вы не предпримете никаких действий, вас ждет катастрофа: если автоочистка будет продолжать давать сбои (а это произойдет), вы в конечном итоге достаточно приблизитесь к зацикливанию идентификаторов транзакций, и ваша база данных перестанет принимать транзакции.

Создайте новый кластер базы данных, создайте дамп поврежденного кластера с помощью pg_dumpall, восстановите его в новый кластер и удалите старый.

Вы используете старую второстепенную версию (текущая версия 11.10), поэтому вам не хватает примерно года исправления ошибок. Причиной может быть программная ошибка или (чаще) аппаратная проблема.

person Laurenz Albe    schedule 04.02.2021
comment
Уважаемый Laurenz, Спасибо за предложение. Я попытался выполнить pg_basebackup и восстановить новую среду базы данных (UAT), но ошибки по-прежнему генерируются с тем же номером xmin, даже если нет соединения в новой среде. Итак, как убить xmin этого большого объекта? - person Suphisara Subsurit; 05.02.2021
comment
pg_basebackup не получится. Есть причина, по которой я сказал вам использовать pg_dumpall. - person Laurenz Albe; 05.02.2021