想考PCA认证的,请认真学习以下笔记(学霸笔记,必过过过)

使用 postgresql 自带的命令进行管理:
pg_ctl start
pg_ctl stop
pg_ctl status
pg_ctl -D $PGDATA stop -m smart
pg_ctl -D $PGDATA stop -m fast
pg_ctl -D $PGDATA stop -m immediate
如果启停有问题可以查看日志:
vim /var/lib/pgsql/13/data/log/postgresql-Mon.log
可以参考执行pg_ctl --help

关闭PostgreSQL数据库有多种模式。主要有如下几种:
SIGTERM
Smart Shutdown模式。数据库接到SIGTERM后,服务端不允许新的连接,但已连接的会话继续工作直到会话完成。当所有会话完成后才关闭数据库。如果数据库在热备状态,会等备份完成。如果在恢复状态则等所有进程终止。
SIGINT
Fast Shutdown模式。服务端不允许新的连接,并且给所有已存在的服务进程发送SIGTERM,使它们终止当前的事务并立即退出。所有服务进程退出后数据库关闭。
SIGQUIT
Immediate Shutdown模式。服务端发送SIGQUIT给所有的子进程,并等待它们终止,如果5秒钟后没有终止,这些进行被SIGKILL。等所有子进程停止后,主服务进程退出。它不做正常的关闭进程,下次启动时会启动恢复。建议仅在紧急情况下使用。
pg_ctl提供关闭数据库的方式:
[postgres@localhost ~]$ pg_ctl -Uteachersun -D $PGDATA stop -m fast
waiting for server to shut down....2022-04-23 08:23:50.954 PDT [45439] LOG: received fast shutdown request
2022-04-23 08:23:50.954 PDT [45439] LOG: aborting any active transactions
2022-04-23 08:23:50.955 PDT [45439] LOG: background worker "logical replication launcher" (PID 45446) exited with exit code 1
2022-04-23 08:23:50.955 PDT [45441] LOG: shutting down
2022-04-23 08:23:50.960 PDT [45439] LOG: database system is shut down
done
server stopped
[postgres@localhost ~]$ pg_ctl -U teachersun restart
pg_ctl: PID file "/PG/postgresql/data/postmaster.pid" does not exist
Is server running?
trying to start server anyway
waiting for server to start....2022-04-23 08:24:17.832 PDT [45602] LOG: starting PostgreSQL 13.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4), 64-bit
2022-04-23 08:24:17.832 PDT [45602] LOG: listening on IPv6 address "::1", port 15432
2022-04-23 08:24:17.832 PDT [45602] LOG: listening on IPv4 address "127.0.0.1", port 15432
2022-04-23 08:24:17.835 PDT [45602] LOG: listening on Unix socket "/opt/.s.PGSQL.15432"
2022-04-23 08:24:17.836 PDT [45603] LOG: database system was shut down at 2022-04-23 08:23:50 PDT
2022-04-23 08:24:17.838 PDT [45602] LOG: database system is ready to accept connections
done
server started
pg_ctl stop #默认fast模式关闭
pg_ctl stop -m smart/fast/immediate
还可以直接kill进程号的方式,进程号在数据目录的postmaster.pid文件中
kill -INT ‘head -1 /usr/local/pgsql/data/postmaster.pid‘
本文介绍了如何使用`pg_ctl`命令在Linux环境下管理PostgreSQL数据库,包括SMART、FAST和IMMEDIATE三种关闭模式的详细解释及操作方法。在SMART模式下,数据库等待所有会话完成后再关闭;FAST模式则会立即终止所有会话;而IMMEDIATE模式则强制关闭,可能需要后续恢复。此外,还提到了通过kill命令直接停止数据库进程的方式。
549

被折叠的 条评论
为什么被折叠?



