(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日志进行恢复。
操作如下
(1)初始化数据库实例
(2)启动、终止、重启pg
(3)查看pg状态
(4)让数据库实例重新读取配置文件
(5)允许给一个指定的进程发送的信号
使用pg_ctl reload 命令和直接调用函数pg_reload_conf()本质也是发送SIGHUP命令给服务主进程。
指启动pg时加上 --single参数,这时pg进程不会进入后台服务模式,用于以下场景
(1)initdb阶段
(2)修复系统表
(3)当多用户模式不接受所有命令时,可以使用单用户模式连接到数据库
PG中一条记录事务年龄不能超过231,如果超过该范围,这条数据就会丢失,pg不允许这种情况发生,当记录的年龄距离231还有一千万的时候,日志中会有告警。如果不处理,还有一百万时,数据库服务器将自动禁止来自任何用户的连接。
这种情况下,只能把数据库启动到单用户模式下执行VACUUM命名来修复。