脚本之家

电脑版
提示:原网页已由神马搜索转码, 内容由www.jb51.net提供.
您的位置:首页数据库PostgreSQL→ PostgreSQL关闭数据库服务

PostgreSQL关闭数据库服务的三种模式

  更新时间:2024年07月11日 10:07:26  作者:不剪发的Tony老师 
PostgreSQL 提供了三种关闭数据库服务的不同方式,它们最终都是发送一个关闭信号到 postgres 主服务进程,本文将给大家详细的介绍一下这三种模式,需要的朋友可以参考下

PostgreSQL 提供了三种关闭数据库服务的不同方式,它们最终都是发送一个关闭信号到 postgres 主服务进程。

智能关闭模式

智能关闭(Smart Shutdown)模式向 postgres 主服务进程发送一个 SIGTERM 信号。此时服务器不允许新的客户端连接,同时等待已有会话正常完成工作。当所有会话都主动终止连接之后关闭服务。如果数据库服务正在执行恢复操作时发送了关闭命令,恢复操作和流复制都会等待所有常规会话终止后停止。

使用 pg_ctl 工具关闭数据库服务的命令如下:

$ pg_ctl stop -m smart

其中,-m 参数用于指定关闭模式,smart 表示智能模式。

PostgreSQL 智能关闭模式类似于 Oracle 数据库中的正常关闭(shutdown normal)模式。

快速关闭模式

快速关闭(Fast Shutdown)模式对应的信号为 SIGINT。此时服务器不允许新的客户端连接,同时向所有的服务进程发送 SIGTERM 信号,回滚进行中的事务并且强制断开所有客户端的连接,然后关闭数据库。

使用 pg_ctl 工具快速关闭数据库服务的命令如下:

$ pg_ctl stop -m fast
$ pg_ctl stop

其中,fast 表示快速模式,它也是默认模式。

PostgreSQL 快速关闭模式类似于 Oracle 数据库中的立即关闭(shutdown immediate)模式。

立即关闭模式

第三种模式是立即关闭(Immediate Shutdown),对应的系统信号为 SIGQUIT。

主服务器进程向所有的子进程发送 SIGQUIT 信号,如果 5 秒内子进程没有终止,继续发送立即终止的 SIGKILL 信号。当所有子进程退出后,主服务进程立即终止,不会执行常规的数据库关闭流程。这种模式会导致下一次启动数据库服务时需要执行恢复操作(重做 WAL 日志),只推荐在紧急情况下使用。

使用 pg_ctl 工具立即关闭数据库服务的命令如下:

$ pg_ctl stop -m immediate

其中,immediate 表示立即模式。

PostgreSQL 快速关闭模式类似于 Oracle 数据库中的立即关闭(shutdown abort)模式。

注意事项

三种关闭模式中,智能模式最安全,能够确保数据的完整性和一致性;但是这种模式可能耗时较长,因为它需要等待客户端主动断开连接。快速模式可能导致事务的中断,但不会导致数据不一致,优点在于速度较快,一般情况下推荐使用这种模式。 立即模式速度最快,但是可能会导致数据不一致,再次启动时可以通过 WAL 日志回放恢复到一致状态,只有在紧急情况或者其他模式无法关闭时推荐使用。

除了 Windows 之外的其他操作系统也可以直接使用 kill 命令发送信号关闭数据库,例如:

$ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`

postmaster.pid 文件中存储了主服务进程(postgres)的 PID。

不建议使用 SIGKILL 信号关闭服务,这种方式会阻止服务释放共享内存和信号量。而且,这种方式终止主服务器进程时不会发送信息到子进程,因此还需要手动关闭每个子进程。

Oracle 数据库还支持一种事务关闭(shutdown transactional)模式,不允许新客户连接,但是会等待进行中的事务完成提交后断开客户端连接,然后关闭数据库。PostgreSQL 没有这种对应的关闭模式。

到此这篇关于PostgreSQL关闭数据库服务的三种模式的文章就介绍到这了,更多相关PostgreSQL关闭数据库服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • postgresql 中round函数的用法说明

    postgresql 中round函数的用法说明

    这篇文章主要介绍了postgresql 中round函数的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • postgresql高级应用之行转列&汇总求和的实现思路

    postgresql高级应用之行转列&汇总求和的实现思路

    这篇文章主要介绍了postgresql高级应用之行转列&汇总求和的实现思路,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • 浅谈PostgreSQL的客户端认证pg_hba.conf

    浅谈PostgreSQL的客户端认证pg_hba.conf

    这篇文章主要介绍了浅谈PostgreSQL的客户端认证pg_hba.conf,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • postgresql insert into select无法使用并行查询的解决

    postgresql insert into select无法使用并行查询的解决

    这篇文章主要介绍了postgresql insert into select无法使用并行查询的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • pgsql批量修改sequences的start方式

    pgsql批量修改sequences的start方式

    这篇文章主要介绍了pgsql批量修改sequences的start方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • PostgreSQL 数据库跨版本升级常用方案解析

    PostgreSQL 数据库跨版本升级常用方案解析

    这篇文章主要介绍了PostgreSQL 数据库跨版本升级常用方案解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • postgresql 性能参数配置方式

    postgresql 性能参数配置方式

    这篇文章主要介绍了postgresql 性能参数配置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL聚合函数的分组排序使用示例

    PostgreSQL聚合函数的分组排序使用示例

    这篇文章主要为大家介绍了PostgreSQL聚合函数的分组排序使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • PostgreSQL 数据库性能提升的几个方面

    PostgreSQL 数据库性能提升的几个方面

    PostgreSQL提供了一些帮助提升性能的功能。主要有一些几个方面。
    2009-09-09
  • PostgreSQL常用优化技巧示例介绍

    PostgreSQL常用优化技巧示例介绍

    PostgreSQL的SQL优化技巧其实和大多数使用CBO优化器的数据库类似,因此一些常用的SQL优化改写技巧在PostgreSQL也是能够使用的。当然也会有一些不同的地方,今天我们来看看一些在PostgreSQL常用的SQL优化改写技巧
    2022-09-09

最新评论