Обсуждение: Killing active users

Поиск
Список
Период
Сортировка

Killing active users

От
"Gauthier, Dave"
Дата:

Hi:

 

I have a system where I have 2 DBs.  The first is available to the users for general interaction.  The second gets reloaded with new data once per night and is then “renamed” to the active one if/when the reload went successfully, preserving the old DB as a standby.  Here’s a snapshot of that process.

 

alter database maindb rename to temp;

alter database standby rename to maindb

alter database temp rename to standby

 

The problem is that sometimes the rename fails because there are active users on the available DB... DBD::Pg::db do failed: ERROR:  database "maindb" is being accessed by other users . Because the reload takes place in the wee hours, I feel it’s OK to kill any existing user connections in order to prevent this if I have to. 

 

Q: Is there a way to kill all active users on a DB without having to reboot the DB?

Q: Or is my problem moot in that there is a way to leave those connections alone and attached to the now renamed DB?

 

Thanks in Advance for any help

-dave  

Re: Killing active users

От
Glyn Astill
Дата:
> The problem is that sometimes the rename fails because
> there are active
> users on the available DB... DBD::Pg::db do failed: ERROR:
> database
> "maindb" is being accessed by other users .
> Because the reload takes
> place in the wee hours, I feel it's OK to kill any
> existing user
> connections in order to prevent this if I have to.
>

You could change ph_hba whilst you rename the databases.

I have a similar case here, where I restore a backup of our main servers onto a "restore" machine that can be used by
thedevelopers as a staging environment, but those developers can still be connected.  

What I do is have a pg_hba.deny.conf and before I reload the database I rename pg_hba.conf to bg_hba.normal.conf, and
pg_hba.deny.confto pg_hba.conf and restart the server, do my work then put them back and restart the server again.  Not
surebut you could perhaps even do this with a reload rather than a restart. 

Glyn

Send instant messages to your online friends http://uk.messenger.yahoo.com