PG运维篇--服务启停
Posted 进击的CJR
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PG运维篇--服务启停相关的知识,希望对你有一定的参考价值。
pg启停
启库
(1)直接运行postgres进程启动
postgres -D /home/osdba/pgdata &
-D 用于指定数据目录,命令最后一个&表示后台执行
(2)使用pg_ctl命令启动
pg_ctl -D /home/osdba/pgdata start
停库
(1)直接向运行的postgres主进程发送signal信号,停止数据库
(2)使用pg_ctl命令停止数据库
停止数据库的三种模式
(1)smart shutdown
不允许新连接,等已有的连接全部结束后才关闭数据库。
(2)fast shutdown
快速关闭模式,不再允许新的连接,向所有活跃服务进程发送SIGTERM信号,让它们立即退出,等待所有子进程退出并关闭数据库。如果服务处于在线备份状态,将直接终止备份。
(3)immediate shutdown
立即关闭模式,主进程postgres向所有子进程发送SIGQUIT信号,并且立即退出,所有子进程也会立即退出。采用这种模式退出时,并不会妥善地关闭数据库系统,下次启动时数据库会重放wal日志进行恢复。
操作如下
pg_ctl -D /opt/pgdata stop -ms 等价于 等待连接关闭
pg_ctl -D /opt/pgdata stop -mf 等价于 杀掉会话,回滚,关闭
pg_ctl -D /opt/pgdata stop -mi 等价于 kill -9
pg_ctl工具
功能
(1)初始化数据库实例
pg_ctl init[db] [-s] [-D datadir ] [ -o options]
-s打印错误和告警信息
-D datadir 指定数据库实例的数据目录
(2)启动、终止、重启pg
pg_ctl -D /opt/pgdata -l logfile start 启动
pg_ctl -D /opt/pgdata restart & 重启
(3)查看pg状态
pg_ctl status -D /opt/pgdata
(4)让数据库实例重新读取配置文件
pg_ctl -D /opt/pgdata reload 重新读取配置文件
(5)允许给一个指定的进程发送的信号
SIGTERM:smart shutdown 关机模式
SIGINT: fast shutdown 关机模式
SIGQUIT: immediate shutdown 关机模式
使用pg_ctl reload 命令和直接调用函数pg_reload_conf()本质也是发送SIGHUP命令给服务主进程。
单用户模式
指启动pg时加上 --single参数,这时pg进程不会进入后台服务模式,用于以下场景
(1)initdb阶段
(2)修复系统表
(3)当多用户模式不接受所有命令时,可以使用单用户模式连接到数据库
PG中一条记录事务年龄不能超过231,如果超过该范围,这条数据就会丢失,pg不允许这种情况发生,当记录的年龄距离231还有一千万的时候,日志中会有告警。如果不处理,还有一百万时,数据库服务器将自动禁止来自任何用户的连接。
这种情况下,只能把数据库启动到单用户模式下执行VACUUM命名来修复。
postgres --single -D /opt/pgdata
...
VACUUM FULL;
...
以上是关于PG运维篇--服务启停的主要内容,如果未能解决你的问题,请参考以下文章