+38 (067) 901-63-22

Корзина

0 товара(ов) на сумму
0 грн.

Восстановление базы данных 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';

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

Клиент счастлив, чего и следовало добиться...

08.07.14, 14:45

Автор сообщения: К2® Рудюк Сергей Анатольевич (Блог К2 - http://corp2.net)