由于 VPN 会话关闭而失去与服务器的连接时避免取消 postgresql 脚本

Avoid cancel of postgresql script when losing connection to server due to VPN session closing

我正在尝试通过命令行执行远程 postgresql 脚本(通过 putty 连接到服务器)

\i myscript.sql

当脚本需要几个小时才能完成并且与服务器的 VPN 连接(以及随后的 putty 会话)关闭时,问题就出现了。我无法真正控制那部分,因为它是本地安全策略。会话关闭使脚本的执行取消。

有没有简单的方法让脚本 运行 在服务器中,无论我是否仍然连接到它?

在使用 GNU screen 或类似 tmux 的等价物之一之后,在 运行 psql 之前。这将在您断开连接时保留您的会话,因此您只需在下次登录时重新连接即可。

您可以减少客户端操作系统上的 TCP keepalive 空闲时间,让客户端定期发送“keepalive 数据包”,从而防止配置错误的防火墙关闭连接。

使用连接字符串语法启动 psql

psql 'host=... port=5432 user=... dbname=... keepalives_idle=60s'