【问题标题】:Documentation on PostgreSQL service reload not interrupting open transactions?关于 PostgreSQL 服务重新加载的文档不会中断打开的事务?
【发布时间】:2017-01-06 06:06:56
【问题描述】:

我有一个 9.5 版的 PostgreSQL 数据库在生产中,它具有恒定的流量。我需要更改 pg_hba.conf 文件中的值。我已经在测试服务器上确认,这可以通过重新加载 postgresql 服务来实现。

我在其他帖子和网站上读到过,调用 pg_ctl reload 不会导致 postgresql 中的实时连接中断。例如https://dba.stackexchange.com/questions/41517/is-it-safe-to-call-pg-ctl-reload-while-doing-heavy-writes

但我正在尝试找到调用pg_ctl reloadservice postgresql-9.5 reload 不会中断或影响任何打开的事务或对数据库进行的查询的具体文档。

【问题讨论】:

    标签: database postgresql transactions pg postgresql-9.5


    【解决方案1】:

    这里是from the horses mouth

    重载模式只是向 postgres 进程发送一个 SIGHUP 信号,导致 它重新读取其配置文件(postgresql.conf、pg_hba.conf、 ETC。)。这允许更改不 需要完全重启才能生效。

    该信号被许多其他服务器(包括 Apache、NGINX 等)用于重新读取配置文件而不会断开打开的连接。

    如果不服气,打开psql客户端或者pgadmin或者whaterver后试试这个

    START TRANSACTION;
    /* open the console and do /etc/init.d/postgrsql reload or equivalent for your system */
    INSERT INTO my_table(id,name) value(1,'1');
    COMMIT;
    

    如果客户端已断开连接,您将收到通知。

    【讨论】:

    • 太好了!但我真的在寻找这样的东西,连接不会被破坏或打开的交易不会关闭。除非“简单地向 postgres 进程发送一个 SIGHUP 信号......”暗示这正是如此。
    • 好吧,很酷,然后不丢弃连接也意味着正在进行的交易太安全了。
    猜你喜欢
    • 2017-05-03
    • 2023-02-10
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    相关资源
    最近更新 更多