вівторок, 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';

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

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

Мені соромно за українські ЗМІ. Але ще не пізно згадати, для чого існує журналістика

Мені соромно за українські ЗМІ, які на 12 році війни часто мовчать про українське, але легко знаходять місце для того, що оплачено. Поки вор...