我在Postgresql中有一个脚本,每个晚上都会从dump中恢复测试数据库.应用程序服务器和具有连接池的进程访问数据库,它始终保持一些连接的活动.
所以脚本将dump转储到my_temp_database.那么它应该将my_database重命名为my_old_database,my_temp_database到my_database,最后删除my_old_database.
如何从my_database断开所有客户端,超级用户,否则可以重命名?我如何临时阻止他们重新连接?
有没有更好的方法来做我需要的?
将数据库’applogs’标记为不接受新连接:
update pg_database set datallowconn = false where datname = 'applogs';
断开用户与database = kill后端的连接.所以要断开所有其他用户与“applogs”数据库的连接,例如:
select pg_terminate_backend(procpid) from pg_stat_activity where datname = 'applogs' and procpid <> pg_backend_pid();
一旦你完成了这两个,你是唯一的用户连接到’applogs’.虽然在后端实际上完成断开连接之前可能会有延迟?
原文地址:https://www.jb51.cc/postgresql/192569.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。