Re: lock entire database - Mailing list pgsql-novice

From Scott Marlowe
Subject Re: lock entire database
Date
Msg-id 1092041365.27166.298.camel@localhost.localdomain
Whole thread Raw
In response to lock entire database  (Benjamin <benjamin@netyantra.com>)
List pgsql-novice
On Sun, 2004-08-08 at 23:35, Benjamin wrote:
> Scott Marlowe wrote:
>
> >On Fri, 2004-08-06 at 12:19, Ron St-Pierre wrote:
> >
> >>Benjamin wrote:
> >>
> >>>Thanx Ron for that.
> >>>I got the listing of the tables.
> >>>The \d option gives u a formatter output. I just wanted a list , that
> >>>i cud loop on.
> >>>I guess that cud be done with a simple "SELECT tablename from
> >>>pg_tables where schemaname='public' ".
> >>>
> >>>Now to the need to lock the database. I need to backup the database at
> >>>run-time, on another machine, which is a backup for the first one. So
> >>>the data has to match exactly as on the first. So till the backup
> >>>faithfuly copies everything down, there shud be no changes on the main
> >>>machine.
> >>>
> >>Postgres uses MVCC (multiversion concurrency control) which basically
> >>means that each transaction takes a snapshot of the database when a user
> >>performs a query (read, update, whatever). So if a pg_dump of the entire
> >>database occurs within a single transaction, this would ensure that you
> >>have a valid snapshot at one particular instance. *Can anyone verify if
> >>this is indeed true*?
> >>
> >>If that is true then a pg_dump should solve your problem.
> >>
> >
> >Yes it is true, but only for a single database in the cluster at a
> >time.  If you have data in two databases in the pgsql cluster, each will
> >be started at a different point in time.
> >
> >However, it may be that the poster is trying to do something like Point
> >in Time recovery (he could just test 8.0 and see how PITR works, it
> >might be a better option).  IFF he needs the two databases to be exactly
> >the same, then something like a pooling connection thingie like pgpool
> >will get turned on and starts writing the same updates to both databases
> >at the same time, he might need to truly lock out all changes for a
> >bit.  OR maybe he's wanting to backup the one server and take it
> >offline, so changes made would be lost there.
> >
> >I think we may need a bit more explanation on just what Benjamin is
> >trying to accomplish to give the right answer.
> >
> Ok. The scene now.
> Machine A is the Primary, and Machine B is the backup for A.
> When B is booting up, it has to duplicate the entire pgsql db from A.
> As Ron said, cud do with a pg_dump. But, i guess, pg_dump takes quite
> some time. As A is already up, it wud be unwise to lock the db for so
> long. Also, even if i do go ahead with pg_dump, and then do a pg_restore
> on B, by the time data is being pg_restore'ed on B, a query cud modify/
> update the db on A.
> My idea was to lock the db on A, scp the required files onto B and then
> unlock db on A.
>
> Is the picture clear now?
>

Yes, you should use slony or some other replication method if possible.


pgsql-novice by date:

Previous
From: Steve Tucknott
Date:
Subject: Re: Multiple return 'columns' from postgre pl/pgsql
Next
From: "Scott Marlowe"
Date:
Subject: Re: lock entire database