Re: Restoring an existing database - Mailing list pgsql-novice

From Josh Berkus
Subject Re: Restoring an existing database
Date
Msg-id 200306252312.08209.josh@agliodbs.com
Whole thread Raw
In response to Restoring an existing database  (Michael Glaesemann <grzm@myrealbox.com>)
List pgsql-novice
Micheal,

> Since my foreign keys don't rely on the OIDs, I don't need to include
> OIDs with the dump, correct? (Am I reading that correctly?)

Correct.

> Question 3 (Restoring an existing database). To make everything clean
> and pretty, suppose I should use the -c option with pg_restore to drop
> the tables before they're recreated. What happens if I don't drop the
> tables? I'm guessing it will pretty much trash the database. The reason
> I ask is that it would be nice to know that it's just replacing the
> data (deleting a row, inserting a row), rather than having to drop the
> tables wholesale.

Usually, in my experience, you get a primary key violation and the restore
quits pretty early on.  But you could end up with a substantial number of
duplicate rows where keys didn't prevent it.  And your sequences could be set
wrong.

> But then again, I guess it has to delete the old, insert the new
> anyway. And it's probably a lot faster dropping a whole table than
> going through line by line.

Actually, I usually simply drop and re-create the target *database* before
restoring.

> This might be another reason dumping with OIDs would be important. If
> the privileges are based on OID (as I suspect, though I haven't done
> any research on this), then the privileges would automatically be
> restored.

Priveleges are not related to OID.  The one caveat is that postgres users are
not restored through a regular pg_dump; that is, pg_dump will restore the
priveleges if the system database is intact, but if it's not you need the
contents of a pg_dumpall.

> Question 5 (Transactions). Is the restore done inside one big
> transaction block? If it was, then if it failed, the original database
> wouldn't be affected.

No, it's not.

> won't lose what I've worked on so far. It's my first major database,
> and I'm probably being a bit overcautious, but then again, the data is
> important, isn't it.

Better safe than looking for a new job, I always say.


--
Josh Berkus
Aglio Database Solutions
San Francisco

pgsql-novice by date:

Previous
From: Michael Glaesemann
Date:
Subject: Restoring an existing database
Next
From: "Herbie McDuck"
Date:
Subject: Incremental Dump