Re: connection timeouts and "killing" users - Mailing list pgsql-general

From Scott Marlowe
Subject Re: connection timeouts and "killing" users
Date
Msg-id dcc563d10809111202ndd7466cx6103a1fc7096c349@mail.gmail.com
Whole thread Raw
In response to connection timeouts and "killing" users  ("Gauthier, Dave" <dave.gauthier@intel.com>)
Responses Re: connection timeouts and "killing" users  ("Gauthier, Dave" <dave.gauthier@intel.com>)
Re: connection timeouts and "killing" users  (Erik Jones <ejones@engineyard.com>)
List pgsql-general
On Thu, Sep 11, 2008 at 10:42 AM, Gauthier, Dave
<dave.gauthier@intel.com> wrote:
> Hi:
>
>
>
> Here's the problem...
>
>
>
> I have a read-only DB  that gets reloaded from scratch every night.  This
> takes several hours and I don't want any late night users to have to wait
> for this process to complete, so I have 2 DBs.  The first DB is the one the
> users access.  Call it "main_db".  I load a second DB which has an identical
> architecture at night.  Call it "standby_db".  When the load finishes, I
> rename "main_db" to "tmp", then rename "standby_db" to "main_db", then
> rename "tmp" to "standby_db".  So, the users should have access to a
> "main_db" all the time (except for a second when the renames happen).  And
> "standby_db" serves as a full backup which I can use should I need it.
>
>
>
> Here's the problem...
>
>
>
> Sometimes the renames fail because people are still attached to either
> "main_db" or "standby_db".  The error messages indicate this is the problem
> anyway.  Someof those users (most of them) are probably fast asleep at home
> and forgot to exit the interactive session that was connected to the DB.
>
> Q: Is there a way I can set a timeout where, if a user is inactive for say
> an hour, they get disconnected?

Not that I know of.

> Q Is there a way to "kill" all active users without having to cycle the DB
> server with something like "pg_ctl stop –m fast –D ..." ?

Yes,  issue a kill on the pid from the command line as either postgres
or root.  note I didn't say kill -9 there.

> Q: (the best option)... Is there a way I can leave those users attached to
> their DB regardless of the fact that it's name changed while they were
> attached?

I don't think so.  What might work best is to have two pg_hba.conf
files, and link to each one.  so one is pg_hba.conf.lockout and one is
pg_hba.conf.normal, let's say.  lockout is set to only answer to the
postgres user.  Switch the pg_hba.conf files, and do a pg_ctl
stop;pg_ctl start or equivalent (/etc/init.d/postgresql stop / start)
and then do your processing.  switch them back and restart pgsql
again.

pgsql-general by date:

Previous
From: "Scott Marlowe"
Date:
Subject: Re: index on id and created_at
Next
From: "Markova, Nina"
Date:
Subject: Psql command for rowcount