网站首页 > 技术文章 正文
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 信号关闭服务,这种方式会阻止服务释放共享内存和信号量。而且,这种方式终止主服务器进程时不会发送信息到子进程,因此还需要手动关闭每个子进程。
猜你喜欢
- 2024-10-18 分析 Oracle 死锁的检测查询及处理方法
- 2024-10-18 oracle常见问题处理 oracle数据库问题解决方案和故障排除手册
- 2024-10-18 如何规范化Oracle数据库审计启停操作流程?
- 2024-10-18 Oracle 逻辑结构篇 之 Oracle 控制文件管理(二)
- 2024-10-18 Windows上Oracle启动关闭慢,有时访问慢问题排查
- 2024-10-18 技术分享 LINUX卸载oracle linux怎么卸载oracle
- 2024-10-18 【Oracle】“锁”一般解决步骤(故障排查操作说明)
- 2024-10-18 原 oracle执行update一直处于执行中,跟卡住一样
- 2024-10-18 详解Oracle数据库ORA-01102异常解决过程
- 2024-10-18 Oracle 推出世界第一个自治操作系统
你 发表评论:
欢迎- 590℃几个Oracle空值处理函数 oracle处理null值的函数
- 583℃Oracle分析函数之Lag和Lead()使用
- 570℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 568℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 564℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 556℃【数据统计分析】详解Oracle分组函数之CUBE
- 541℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 536℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)