博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 18 章 服务器设置和操作_18.5. 关闭服务器...
阅读量:6039 次
发布时间:2019-06-20

本文共 958 字,大约阅读时间需要 3 分钟。

18.5. 关闭服务器

有几种关闭数据库服务器的方法。通过给postgres进程发送不同的信号,你就可以控制关闭类型。

SIGTERM

这是智能关闭模式。在接收SIGTERM后, 服务器将不允许新连接,但是会让现有的会话正常结束它们的工作。仅当所有的会话终止后它才关闭。 如果服务器处在线备份模式,它将等待直到在线备份模式不再被激活。当在线备份模式被激活时, 仍然允许新的连接,但是只能是超级用户的连接(这一例外允许超级用户连接来终止在线备份模式)。 如果服务器在恢复时请求智能关闭,恢复和流复制只有在所有正常会话都终止后才停止。

SIGINT

这是快速关闭模式。服务器不再允许新的连接,并向所有现有服务器进程发送SIGTERM,让它们中断当前事务并立刻退出。然后服务器等待所有服务器进程退出并最终关闭。 如果服务处于在线备份模式,备份模式将被终止并致使备份无用。

SIGQUIT

这是立即关闭模式。服务器将给所有子进程发送 SIGQUIT并且等待它们终止。如果有任何进程没有在 5 秒内终止,它们将被发送 SIGKILL。主服务器进程将在所有子进程退出之后立刻退出,而无需做普通的数据库关闭处理。这将导致在下一次启动时(通过重放 WAL 日志)恢复。只在紧急 时才推荐这种方式。

程序提供了一个发送这些信号关闭服务器的方便的接口。 另外,你在非 Windows 系统上可以用kill直接发送这些信号。可以用ps程序或者从数据目录的postmaster.pid文件中找到postgres进程的PID。例如,要做一次快速关闭:

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

重要

最好不要使用SIGKILL关闭服务器。 这样做将会阻止服务器释放共享内存和信号量,那么在开始一个新的服务器之前,可能需要手动完成这些释放。 此外,使用SIGKILL杀掉postgres进程时,postgres不会有机会将信号传播到它的子进程,所以也必须手工杀掉单个的子进程。

要终止单个会话同时允许其他会话继续,使用pg_terminate_backend()(参阅) 或发送SIGTERM信号到该会话相关的子进程。

本文转自PostgreSQL中文社区,原文链接:

转载地址:http://iolhx.baihongyu.com/

你可能感兴趣的文章
VC++播放音频文件和音频数据的方法
查看>>
1.4T的mysql表删除
查看>>
超前引用
查看>>
echarts数据自我定制(三)--实时数据传输,带回放功能
查看>>
四级词汇(俞敏洪)-词根与词缀(二)
查看>>
IT人的学习方法
查看>>
IIS7/7.5/8如何实现访问HTTP跳转到HTTPS访问
查看>>
Linux运维工程师面试题第九套
查看>>
与公务员斗争维权的实战攻略
查看>>
jstack dump日志文件详解
查看>>
[Ruby] 基础知识
查看>>
Codeforces Round #426 (Div. 2)The Meaningless Game【数学题】【水题】
查看>>
centos 配置sudo记录日志
查看>>
C语言截取字符串或反转字符串
查看>>
Python操作MySQL数据库的三种方法
查看>>
我的友情链接
查看>>
记一次kafka故障
查看>>
APUE读书笔记-10信号-19sleep函数
查看>>
CentOS 6安装配置LDAP
查看>>
Linux双网卡绑定bond详解
查看>>