Ich habe ein Skript in PostgreSQL, die Testdatenbank jede Nacht aus Dump wiederherstellt. Auf die Datenbank greifen App-Server und Prozesse mit einem Verbindungspool zu, der zu jeder Zeit einige Verbindungen aufrecht erhält.PostgreSQL: vorübergehend Verbindungen deaktivieren
So stellt das Skript Dump in my_temp_database
. Dann sollte es my_database
zu my_old_database
, my_temp_database
zu my_database
umbenennen und schließlich my_old_database
fallen lassen.
Wie kann ich alle Clients, Superuser oder nicht, von my_database
trennen, so dass es umbenannt werden kann? Wie kann ich vorübergehend verhindern, dass sie sich wieder verbinden?
Gibt es einen besseren Weg, um das zu tun, was ich brauche?
update pg_database set datallowconn = false where datname = 'applogs';
andere Möglichkeit wäre, zu widerrufen ‚verbinden‘ Zugriff auf die Datenbank für die Client-Rolle (n):
Ha, ich wünsche es in 8.3 gearbeitet. –
In 8.3 können Sie versuchen, 'pg_terminate_backend (pid) von pg_stat_activity zu wählen;' –
@araqnid Der Befehl "update pg_database set datallowconn = false where datname = 'applogs';" klappt wunderbar! "REVOKE CONNECT ON DATABASE" funktioniert nicht für mich! OBEN! OBEN! OBEN! OBEN! OBEN! OBEN! –