Я пытаюськак восстановить базу данных postgresql в том же состоянии?
- создать моментальный снимок базы данных PostgreSQL (с использованием
pg_dump
) - сделать некоторые случайные тесты и
- восстановить точно такое же состояние, что и снимок, и сделать некоторые другие случайные тесты.
Это может произойти в течение многих/разных дней. Также я в многопользовательской среде, где я не администратор базы данных. В частности, я не могу создать новую БД.
Однако, когда я восстановить БД с помощью
gunzip -c dump_file.gz | psql my_db
изменения в шаге 2 выше, остаются.
Например, если я сделаю копию таблицы:
create table foo1 as (select * from foo);
, а затем восстановить, скопированный таблицу foo1
остается там.
Может ли кто-нибудь объяснить, как я могу восстановить то же состояние, как если бы шаг 2 никогда не был таким?
- Обновление -
После комментариев @a_horse_with_no_name, я пытался использовать
DROP OWNED BY my_db_user
бросить все мои объекты, прежде чем восстановить, но я получил сообщение об ошибке, связанной с расширением, которое я не может контролировать, а мои таблицы остаются нетронутыми.
ERROR: cannot drop sequence bg_gid_seq because extension postgis_tiger_geocoder requires it
HINT: You can drop extension postgis_tiger_geocoder instead.
Любые предложения?
Вы можете запустить 'drop schema ...' или даже 'drop owned by ...' перед восстановлением дампа –
@a_horse_with_no_name Спасибо. Есть ли способ сделать это в командной строке? Мне нужно это в среде сценариев. Я могу оставить все, что у меня есть, но некоторые структуры в моем db создаются администратором. – tinlyx
Несомненно, просто запустите сценарий drop, используя 'psql' –