Comments 2
Вроде более удобным способом можно удалять гланды - https://postgreshelp.com/postgresql-checksum/?source=post_page-----33806f44b1c4-------------------------------
Хотя, честно говоря, сам таким еще не страдал не пробовал - т.к. бэкапы, enabled pg_checksum, и standby db для критичных данных.
Спасибо за статью, действительно очень интересно и похоже чем-то. чексумы полезно по идее, когда standby есть. Хотя может если бы тут чексумы были включены, то база просто бы подняла лапки вверх и мы бы заметили проблему раньше.
А расчёт более удобного - сомнительно. Наверное лучше сначала через мой способ пройти - когда наглядно видно блоки, а потом уж зачищать их через dd.
delete from check_corruption where ctid='(0,6)’;
у меня кстати не срабатывало, я пробовал. Какие-то строчки удалились, какие-то - нет.
скриптик который в статье там описывается find_bad_row() - по сути я на баше +- написал, бонусом получил не только последнюю прочитавшуюся ctid, но и чуть больше
а вот zero_damaged_pages это прям интересненько, однако мне всё равно кажется что мой способ получился наиболее деликатный и предсказуемый, хоть может и сложноватый.
кстати на одной из таблиц, при попытке селекте, постгрес вообще падал. не уверен, что помог бы zero_damaged_pages и что-то еще
Ручное восстановление БД PostgreSQL после аппаратного сбоя