вівторок, 8 липня 2014 р.

Восстановление базы данных Postgresql

Любая база данных выходит из строя... Пользователи забывают делать бекапы и как результат, программистам приходится возиться с восстановлением данных.
Ранее, я не однократно описывал восстановление баз данных Firebird (Interbase), но уже давно работаю с другими базами данных, поэтому, сталкиваюсь с "новыми задачами" по восстановлению информации.

Сегодня, ко мне обратился один старый клиент, у которого много лет работает база данных на Postgresql со вчерашнего дня у них стали выдаваться ошибки Page Error при входе в систему. Как результат - не возможность работы.
Зашел в PgAdmin, попробывал сделать бекап - вывались ошибки. Начал "передвигаться" по списку баз данных - вываливается огромное количество ошибок Page Error. Решили восстановить из бекапа. Как оказалось, последний бекап - за декабрь 2013 года. Пол-года пропало!
И тут меня осенило! Решил попробывать выполнить select. Проходит успешно, данные показывает без ошибки.
Ура! Подумал я себе.

Итак, как мне удалось восстановить базу без потери информации:
1. Создаю новую базу данных (с другим названием) из найденного бекапа (в данном случае, декабрь 2013г.). Проверяю входить в систему - всё отлично.
2. Сохраняю данные из каждой интересующей меня таблицы, подобными запросами:
copy (select * from zrp_zakaz ) to 'd:\tmp\zrp_zakaz';
3. Удаляю данные из необходимых таблиц в базе данных, которую восстановили. Например:
delete from zrp_zakaz;
4. Закачиваю данные из сохраненного файла в другой базе данных. Например:
copy zrp_zakaz from 'd:\tmp\zrp_zakaz';

Как результат - база восстановилась полностью, без потери данных.
Клиент счастлив, чего и следовало добиться...

Немає коментарів:

Життя після 1С та BAS: Великий огляд українського ринку ERP-систем та реальних альтернатив у 2026 році

На початку 2026 року історія з 1С та BAS в Україні остаточно перестала бути темою про звичку, інерцію чи бухгалтерський комфорт. Вона перейш...