ОШИБКА PostgreSQL: не удалось открыть файл "base / ... / ..." - PullRequest
0 голосов
/ 04 июля 2018

Есть много таблиц queue_promotion_n, где n от 1 до 100. В таблице 73 есть ошибка с довольно простым запросом

SELECT count(DISTINCT queue_id)
FROM "queue_promotion_73"
WHERE status_new > NOW() - interval '3 days';

ОШИБКА: не удалось открыть файл «base / 16387 / 357386324.1» (целевой блок 200005): нет такого файла или каталога

Время работы БД 23 дня. Как это исправить?

1 Ответ

0 голосов
/ 21 апреля 2019
  1. Убедитесь, что у вас есть последние резервные копии (или убедитесь, что ваша реплика БД синхронизирована)
  2. PostgreSQL wiki рекомендует останавливать БД и rsync сохранять все файлы PostgreSQL в безопасном месте.

Файл, в котором физически хранится таблица, по-видимому, отсутствует. Вы можете проверить, где PostgreSQL хранит данные на диске, используя:

SELECT pg_relation_filepath('queue_promotion_73');
 pg_relation_filepath 
----------------------
 base/16387/357386324
(1 row)

Если вы уверены, что ваши жесткие диски / RAID-контроллер работают нормально, попробуйте восстановить таблицу. Хорошей идеей будет сначала попробовать это на реплике или резервной копии базы данных.

VACUUM FULL queue_promotion_73;

Проверьте еще раз путь связи:

SELECT pg_relation_filepath('queue_promotion_73');

он должен быть другим и, надеюсь, со всеми необходимыми файлами.

Причина может быть связана с аппаратной проблемой, проверьте целостность БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...