PG数据库的启动和关闭
启动和关闭
启动和停止 PostgreSQL 数据库服务器,通常使用pg_ctl。通常在我们的生产环境中,如果数据库主机发生意外停机或者由于计划内的硬件配置等操作停止了主机后,PostgreSQL 服务也将会停止,需要手动重启。因此,在生产环境中,采用编译安装 PostgreSQL 数据库后,建议配置系统 postgresql.service 服务,通过 systemctl 系统命令设置开机自动启动。
pg_ctl
参考:https://www.xmmup.com/pgzhongdepg_ctlmingling.html
pg_ctl是PG中初始化数据目录,启动、停止、重启、重加载数据库服务,或者查看数据库服务状态的工具,相比SERVICE或SYSTECTL的管理方式,PG_CTL提供了丰富的控制项,执行PG_CTL命令需要操作系统用户使用SU命令切换到POSTGRES用户。
pg_ctl 语法格式:
初始化数据库
pg_ctl init[db] [-D DATADIR] [-s] [-o OPTIONS]启动数据库
pg_ctl start [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s] [-o OPTIONS] [-p PATH] [-c]关闭数据库
pg_ctl stop [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]重启数据库
pg_ctl restart [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s] [-o OPTIONS] [-c]重新加载 postgresql.conf 或 pg_hba.conf 文件 ,重新读取配置文件(postgresql.conf,pg_hba.conf等,而不重启)
pg_ctl reload [-D DATADIR] [-s]
查看服务器是否在指定的数据目录运行
pg_ctl status [-D DATADIR]pg_ctl promote [-D DATADIR] [-W] [-t SECS] [-s]
pg_ctl logrotate [-D DATADIR] [-s]
pg_ctl kill SIGNALNAME PID
命令选项
本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
- -D, --pgdata=DATADIR:指定数据库相关文件的数据目录,如果省略,默认读取 PGDATA 环境变量
- -s, --silent:静默输出,仅仅输出错误消息
- -t, --timeout=SECS:指定等待操作完成的最大延时秒数。默认为 PGCTLTIMEOUT 环境变量的值,如果省略,默认60秒
- -V, --version output version information, then exit
- -w, --wait:等待操作完成,如果操作在延迟时间内未完成,pg_ctl 退出状态为非零
- -W, --no-wait:不等待操作完成,不会提示数据库停止是否完成
启动 & 重启选项
- -c, --core-files allow postgres to produce core files
- -l, --log=FILENAME:将服务器日志输出追加到 filename中,也叫做服务器日志文件。如果该文件的 umask 设置为077,访问日志文件默认情况下其它用户不可读。
- -o, --options=OPTIONS command line options to pass to postgres (PostgreSQL server executable) or initdb
- -p PATH-TO-POSTGRES normally not necessary
启动 & 停止选项
- -m, --mode=MODE:指定关闭数据库的模式,有三个选项,smart,fast,immediate,省略默认为fast
关库选项:
smart:smart模式会等待活动的事务提交结束, 并等待客户端主动断开连接之后关闭数据库
fast:fast模式则会回滚所有活动的事务, 并强制断开客户端的连接之后关闭数据库(默认),相当于Oracle 中的 immediate模式关闭
immediate:模式立即终止所有服务器进程,当下一次数据库启动时它会首先进入恢复状态(不推荐使用)( 相当于使用 kill 工具杀死进程[此方式不会干净的关闭数据库且可能会造成数据丢失] )
启动
1 2 3 4 5 6 7 8 9 10 11 | -- root用户 systemctl start postgresql-11 -- postgres用户 /usr/pgsql-11/bin/pg_ctl start -D /var/lib/pgsql/11/data/ -- postgres用户(早期版本),另外,若使用yum安装的话,默认也是使用postmaster启动的 postmaster -D ${PGDATA} & -- postgres用户 postgres -D ${PGDATA} & |
注:必须在环境变量中设置了PGDATA后才能省略-D参数
配置系统服务可以参考:https://www.xmmup.com/dbbao68shiyongyuanmabianyilaianzhuangpostgresql13-3shujuku.html
关闭
1 2 3 4 5 6 7 | /usr/pgsql-11/bin/pg_ctl stop kill -9 pgsql -- root用户 systemctl stop postgresql-13 |