Как определить на ранних стадиях что в PostgreSQL что-то начало сбоить?
Добрый день!
Подскажите, пожалуйста, есть ли какие-то методики проверки БД и самого Postgres на ошибки?
Что-то типа самотестирования сервера БД?
В частности, столкнулся с ситуацией когда начались проблемы со служебными таблицами и я это заметил лишь тогда когда выдало ошибку на очередном бэкапе.
Проблема была в том, что начала сбоить карта памяти, на которой работал Postgres.
Согласен что можно использовать не карту памяти, а винчестер и т.п., но ничто не вечно и не идеально.
Потому хотелось бы иметь возможность выявлять подобные ошибки раньше, с тем чтобы иметь возможность нормально извлечь данные и либо поремонтировать, но, скорее, переустановить Postgres.
ky0 Да, я согласен что здесь не связано с конкретным сервером БД, но думаю мало ли, вдруг именно в нем что-то придумали для самодиагностики.
Отказоустойчивые хранилища это классно, но в данной ситуации хотелось бы более дешевое решение, т.к. нет возможности обеспечить качественное хранилище. Потому и встал вопрос по поводу диагностики или при запуске или периодической в процессе работы.
Если носитель информации - ненадежный - то к нему добавляют дополнительные коды типа Хэмминга которые восстанавливают поврежденные биты после сбоя. На 99% нормальных носителей это реализовано аппаратно. Если твоя флешка сбоит или не очень надежна то желательно купить новую. Если ты всё таки хочешь наковырять золота в навозе - посмотри в сторону утилиты par2 manpages.org/par2 она на десяток процентов увеличит размер твоих бэкапов но будет гарантировать фиксацию нескольких бит если такое будет. Она работает поверх обычной файловой системы и ее коды контроля будут просто дополнительными файлами рядышком.
А проверить восстановистя ли бэкап в принципе - невозможно. Как в той философской мысли - нельзя узнать какой пудинг пока ты его не съел. Поэтому и гарантировать целосность бэкапа на логическом уровне можно только проведя симуляцию его полного восстановления в БД.
mayton2019, спасибо за совет.
Но в данный момент меня беспокоит не столько вопрос как сохранить полученный бекап (я его могу скинуть на внешний носитель или отправить по сети периодически), а вопрос контроля работы самого сервера БД, чтобы вовремя иметь возможность что-то исправить.