PostgreSQL 三种关库模式
PostgreSQL 三种关库模式
基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777
PostgreSQL 提供了三种关库模式,分别是 Smart Shutdown、Fast Shutdown 和 Immediate Shutdown。以下是每种模式的详细说明:
- Smart Shutdown:
- 这种模式下,数据库会等待所有活跃的客户端连接断开后才会停止。
- 如果用户一直不断开连接,服务器将无法停止。
- 使用
pg_ctl
命令的示例如下:pg_ctl stop -m smart
输出日志
2024-11-27 06:01:14.149 PST [127700] DEBUG: postmaster received shutdown request signal
2024-11-27 06:01:14.149 PST [127700] LOG: received smart shutdown request
2024-11-27 06:01:14.150 PST [127700] DEBUG: sending signal 15 to process 127708
2024-11-27 06:01:14.150 PST [127708] DEBUG: logical replication launcher shutting down
2024-11-27 06:01:14.150 PST [127706] DEBUG: autovacuum launcher shutting down
2024-11-27 06:01:14.150 PST [127708] DEBUG: shmem_exit(1): 5 before_shmem_exit callbacks to make
2024-11-27 06:01:14.150 PST [127706] DEBUG: shmem_exit(0): 4 before_shmem_exit callbacks to make
2024-11-27 06:01:14.150 PST [127708] DEBUG: shmem_exit(1): 6 on_shmem_exit callbacks to make
2024-11-27 06:01:14.150 PST [127708] DEBUG: proc_exit(1): 1 callbacks to make
2024-11-27 06:01:14.150 PST [127708] DEBUG: exit(1)
2024-11-27 06:01:14.150 PST [127708] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.150 PST [127708] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.150 PST [127708] DEBUG: proc_exit(-1): 0 callbacks to make
2024-11-27 06:01:14.150 PST [127705] DEBUG: shmem_exit(0): 4 before_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127705] DEBUG: shmem_exit(0): 5 on_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127705] DEBUG: proc_exit(0): 1 callbacks to make
2024-11-27 06:01:14.151 PST [127705] DEBUG: exit(0)
2024-11-27 06:01:14.151 PST [127705] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127705] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127705] DEBUG: proc_exit(-1): 0 callbacks to make
2024-11-27 06:01:14.151 PST [127706] DEBUG: shmem_exit(0): 6 on_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127706] DEBUG: proc_exit(0): 1 callbacks to make
2024-11-27 06:01:14.151 PST [127706] DEBUG: exit(0)
2024-11-27 06:01:14.151 PST [127706] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127706] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127706] DEBUG: proc_exit(-1): 0 callbacks to make
2024-11-27 06:01:14.151 PST [127700] DEBUG: reaping dead processes
2024-11-27 06:01:14.151 PST [127700] LOG: background worker "logical replication launcher" (PID 127708) exited with exit code 1
2024-11-27 06:01:14.151 PST [127703] DEBUG: shmem_exit(0): 4 before_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127703] DEBUG: shmem_exit(0): 5 on_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127703] DEBUG: proc_exit(0): 1 callbacks to make
2024-11-27 06:01:14.151 PST [127703] DEBUG: exit(0)
2024-11-27 06:01:14.151 PST [127703] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127703] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127703] DEBUG: proc_exit(-1): 0 callbacks to make
2024-11-27 06:01:14.151 PST [127700] DEBUG: reaping dead processes
2024-11-27 06:01:14.152 PST [127700] DEBUG: reaping dead processes
2024-11-27 06:01:14.152 PST [127702] LOG: shutting down
2024-11-27 06:01:14.178 PST [127707] DEBUG: executing archive command "test ! -f /home/pg16/archivelog/00000001000000040000002F && cp pg_wal/00000001000000040000002F /home/pg16/archivelog/00000001000000040000002F"
2024-11-27 06:01:14.178 PST [127702] LOG: checkpoint starting: shutdown immediate
2024-11-27 06:01:14.178 PST [127702] DEBUG: performing replication slot checkpoint
2024-11-27 06:01:14.181 PST [127702] DEBUG: attempting to remove WAL segments older than log file 00000000000000040000002F
2024-11-27 06:01:14.182 PST [127702] DEBUG: SlruScanDirectory invoking callback on pg_subtrans/005C
2024-11-27 06:01:14.182 PST [127702] LOG: checkpoint complete: wrote 0 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.001 s, sync=0.001 s, total=0.004 s; sync files=0, longest=0.000 s, average=0.000 s; distance=16383 kB, estimate=16383 kB; lsn=4/30000028, redo lsn=4/30000028
2024-11-27 06:01:14.182 PST [127702] DEBUG: shmem_exit(0): 5 before_shmem_exit callbacks to make
2024-11-27 06:01:14.182 PST [127702] DEBUG: writing stats file "pg_stat/pgstat.stat"
2024-11-27 06:01:14.182 PST [127702] DEBUG: shmem_exit(0): 5 on_shmem_exit callbacks to make
2024-11-27 06:01:14.182 PST [127702] DEBUG: proc_exit(0): 1 callbacks to make
2024-11-27 06:01:14.182 PST [127702] DEBUG: exit(0)
2024-11-27 06:01:14.182 PST [127702] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.182 PST [127702] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.182 PST [127702] DEBUG: proc_exit(-1): 0 callbacks to make
2024-11-27 06:01:14.183 PST [127700] DEBUG: reaping dead processes
2024-11-27 06:01:14.196 PST [127707] DEBUG: archived write-ahead log file "00000001000000040000002F"
2024-11-27 06:01:14.197 PST [127707] DEBUG: shmem_exit(0): 5 before_shmem_exit callbacks to make
2024-11-27 06:01:14.197 PST [127707] DEBUG: archiver process shutting down
2024-11-27 06:01:14.197 PST [127707] DEBUG: shmem_exit(0): 6 on_shmem_exit callbacks to make
2024-11-27 06:01:14.197 PST [127707] DEBUG: proc_exit(0): 1 callbacks to make
2024-11-27 06:01:14.197 PST [127707] DEBUG: exit(0)
2024-11-27 06:01:14.197 PST [127707] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.197 PST [127707] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.197 PST [127707] DEBUG: proc_exit(-1): 0 callbacks to make
2024-11-27 06:01:14.202 PST [127700] DEBUG: reaping dead processes
2024-11-27 06:01:14.202 PST [127700] DEBUG: shmem_exit(0): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.202 PST [127700] DEBUG: shmem_exit(0): 6 on_shmem_exit callbacks to make
2024-11-27 06:01:14.205 PST [127700] DEBUG: cleaning up orphaned dynamic shared memory with ID 210471318
2024-11-27 06:01:14.205 PST [127700] DEBUG: cleaning up dynamic shared memory control segment with ID 4077101978
2024-11-27 06:01:14.205 PST [127700] DEBUG: proc_exit(0): 2 callbacks to make
2024-11-27 06:01:14.206 PST [127700] LOG: database system is shut down
2024-11-27 06:01:14.206 PST [127700] DEBUG: exit(0)
2024-11-27 06:01:14.206 PST [127700] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.206 PST [127700] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.206 PST [127700] DEBUG: proc_exit(-1): 0 callbacks to make
2024-11-27 06:01:14.207 PST [127701] DEBUG: logger shutting down
2024-11-27 06:01:14.207 PST [127701] DEBUG: shmem_exit(0): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.207 PST [127701] DEBUG: shmem_exit(0): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.207 PST [127701] DEBUG: proc_exit(0): 0 callbacks to make
2024-11-27 06:01:14.207 PST [127701] DEBUG: exit(0)
2024-11-27 06:01:14.207 PST [127701] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.208 PST [127701] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.208 PST [127701] DEBUG: proc_exit(-1): 0 callbacks to make
- Fast Shutdown(默认方式):
- 快速关闭模式,不再允许新的连接。
- 向所有活跃的服务进程发送
SIGTERM
信号,让它们立即退出,然后等待所有子进程退出并关闭数据库。 - 如果服务处于在线备份状态,将直接终止备份,这将导致此次备份失败。
- 使用
pg_ctl
命令的示例如下:pg_ctl stop -m fast
输出日志
2024-11-27 06:02:17.051 PST [127815] DEBUG: postmaster received shutdown request signal
2024-11-27 06:02:17.051 PST [127815] LOG: received fast shutdown request
2024-11-27 06:02:17.052 PST [127815] LOG: aborting any active transactions
2024-11-27 06:02:17.052 PST [127815] DEBUG: sending signal 15 to process 127823
2024-11-27 06:02:17.052 PST [127818] DEBUG: shmem_exit(0): 4 before_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127821] DEBUG: autovacuum launcher shutting down
2024-11-27 06:02:17.052 PST [127818] DEBUG: shmem_exit(0): 5 on_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127821] DEBUG: shmem_exit(0): 4 before_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127818] DEBUG: proc_exit(0): 1 callbacks to make
2024-11-27 06:02:17.052 PST [127818] DEBUG: exit(0)
2024-11-27 06:02:17.052 PST [127818] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127818] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127818] DEBUG: proc_exit(-1): 0 callbacks to make
2024-11-27 06:02:17.052 PST [127821] DEBUG: shmem_exit(0): 6 on_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127821] DEBUG: proc_exit(0): 1 callbacks to make
2024-11-27 06:02:17.052 PST [127821] DEBUG: exit(0)
2024-11-27 06:02:17.052 PST [127821] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127821] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127821] DEBUG: proc_exit(-1): 0 callbacks to make
2024-11-27 06:02:17.053 PST [127823] DEBUG: logical replication launcher shutting down
2024-11-27 06:02:17.053 PST [127823] DEBUG: shmem_exit(1): 5 before_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127823] DEBUG: shmem_exit(1): 6 on_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127823] DEBUG: proc_exit(1): 1 callbacks to make
2024-11-27 06:02:17.053 PST [127823] DEBUG: exit(1)
2024-11-27 06:02:17.053 PST [127823] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127823] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127823] DEBUG: proc_exit(-1): 0 callbacks to make
2024-11-27 06:02:17.053 PST [127820] DEBUG: shmem_exit(0): 4 before_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127815] DEBUG: reaping dead processes
2024-11-27 06:02:17.053 PST [127820] DEBUG: shmem_exit(0): 5 on_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127820] DEBUG: proc_exit(0): 1 callbacks to make
2024-11-27 06:02:17.053 PST [127820] DEBUG: exit(0)
2024-11-27 06:02:17.053 PST [127820] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127820] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127820] DEBUG: proc_exit(-1): 0 callbacks to make
2024-11-27 06:02:17.053 PST [127815] DEBUG: reaping dead processes
2024-11-27 06:02:17.053 PST [127815] LOG: background worker "logical replication launcher" (PID 127823) exited with exit code 1
2024-11-27 06:02:17.053 PST [127815] DEBUG: reaping dead processes
2024-11-27 06:02:17.053 PST [127817] LOG: shutting down
2024-11-27 06:02:17.086 PST [127822] DEBUG: executing archive command "test ! -f /home/pg16/archivelog/000000010000000400000030 && cp pg_wal/000000010000000400000030 /home/pg16/archivelog/000000010000000400000030"
2024-11-27 06:02:17.086 PST [127817] LOG: checkpoint starting: shutdown immediate
2024-11-27 06:02:17.087 PST [127817] DEBUG: performing replication slot checkpoint
2024-11-27 06:02:17.089 PST [127817] DEBUG: checkpoint sync: number=1 file=pg_xact/0005 time=0.618 ms
2024-11-27 06:02:17.090 PST [127817] DEBUG: checkpoint sync: number=2 file=pg_multixact/offsets/0000 time=0.175 ms
2024-11-27 06:02:17.090 PST [127817] DEBUG: attempting to remove WAL segments older than log file 000000000000000400000030
2024-11-27 06:02:17.090 PST [127817] DEBUG: removing write-ahead log file "00000001000000040000002F"
2024-11-27 06:02:17.093 PST [127817] DEBUG: SlruScanDirectory invoking callback on pg_subtrans/005C
2024-11-27 06:02:17.093 PST [127817] LOG: checkpoint complete: wrote 3 buffers (0.0%); 0 WAL file(s) added, 1 removed, 0 recycled; write=0.001 s, sync=0.001 s, total=0.008 s; sync files=2, longest=0.001 s, average=0.001 s; distance=16384 kB, estimate=16384 kB; lsn=4/31000028, redo lsn=4/31000028
2024-11-27 06:02:17.093 PST [127817] DEBUG: shmem_exit(0): 5 before_shmem_exit callbacks to make
2024-11-27 06:02:17.093 PST [127817] DEBUG: writing stats file "pg_stat/pgstat.stat"
2024-11-27 06:02:17.093 PST [127817] DEBUG: shmem_exit(0): 5 on_shmem_exit callbacks to make
2024-11-27 06:02:17.093 PST [127817] DEBUG: proc_exit(0): 1 callbacks to make
2024-11-27 06:02:17.093 PST [127817] DEBUG: exit(0)
2024-11-27 06:02:17.094 PST [127817] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.094 PST [127817] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.094 PST [127817] DEBUG: proc_exit(-1): 0 callbacks to make
2024-11-27 06:02:17.095 PST [127815] DEBUG: reaping dead processes
2024-11-27 06:02:17.102 PST [127822] DEBUG: archived write-ahead log file "000000010000000400000030"
2024-11-27 06:02:17.102 PST [127822] DEBUG: shmem_exit(0): 5 before_shmem_exit callbacks to make
2024-11-27 06:02:17.102 PST [127822] DEBUG: archiver process shutting down
2024-11-27 06:02:17.102 PST [127822] DEBUG: shmem_exit(0): 6 on_shmem_exit callbacks to make
2024-11-27 06:02:17.102 PST [127822] DEBUG: proc_exit(0): 1 callbacks to make
2024-11-27 06:02:17.102 PST [127822] DEBUG: exit(0)
2024-11-27 06:02:17.102 PST [127822] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.102 PST [127822] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.102 PST [127822] DEBUG: proc_exit(-1): 0 callbacks to make
2024-11-27 06:02:17.102 PST [127815] DEBUG: reaping dead processes
2024-11-27 06:02:17.102 PST [127815] DEBUG: shmem_exit(0): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.103 PST [127815] DEBUG: shmem_exit(0): 6 on_shmem_exit callbacks to make
2024-11-27 06:02:17.105 PST [127815] DEBUG: cleaning up orphaned dynamic shared memory with ID 2186499264
2024-11-27 06:02:17.106 PST [127815] DEBUG: cleaning up dynamic shared memory control segment with ID 3559701182
2024-11-27 06:02:17.106 PST [127815] DEBUG: proc_exit(0): 2 callbacks to make
2024-11-27 06:02:17.106 PST [127815] LOG: database system is shut down
2024-11-27 06:02:17.106 PST [127815] DEBUG: exit(0)
2024-11-27 06:02:17.106 PST [127815] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.106 PST [127815] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.106 PST [127815] DEBUG: proc_exit(-1): 0 callbacks to make
2024-11-27 06:02:17.106 PST [127816] DEBUG: logger shutting down
2024-11-27 06:02:17.107 PST [127816] DEBUG: shmem_exit(0): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.107 PST [127816] DEBUG: shmem_exit(0): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.107 PST [127816] DEBUG: proc_exit(0): 0 callbacks to make
2024-11-27 06:02:17.107 PST [127816] DEBUG: exit(0)
2024-11-27 06:02:17.107 PST [127816] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.107 PST [127816] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.107 PST [127816] DEBUG: proc_exit(-1): 0 callbacks to make
- Immediate Shutdown:
- 立即关闭模式,主进程
postgres
向所有子进程发送SIGQUIT
信号,并且立即退出,所有的子进程也会立即退出。 - 采用这种模式退出时,并不会妥善地关闭数据库系统,下次启动时数据库会重放 WAL 日志进行恢复,因此建议只在紧急的时候使用该方法。
- 使用
pg_ctl
命令的示例如下:pg_ctl stop -m immediate
- 立即关闭模式,主进程
输出日志
2024-11-27 05:58:21.525 PST [127387] DEBUG: postmaster received shutdown request signal
2024-11-27 05:58:21.525 PST [127387] LOG: received immediate shutdown request
2024-11-27 05:58:21.526 PST [127387] DEBUG: sending signal 3 to process 127395
2024-11-27 05:58:21.526 PST [127387] DEBUG: reaping dead processes
2024-11-27 05:58:21.526 PST [127387] DEBUG: reaping dead processes
2024-11-27 05:58:21.527 PST [127387] DEBUG: reaping dead processes
2024-11-27 05:58:21.527 PST [127387] DEBUG: shmem_exit(0): 0 before_shmem_exit callbacks to make
2024-11-27 05:58:21.527 PST [127387] DEBUG: shmem_exit(0): 6 on_shmem_exit callbacks to make
2024-11-27 05:58:21.531 PST [127387] DEBUG: cleaning up orphaned dynamic shared memory with ID 2800411074
2024-11-27 05:58:21.531 PST [127387] DEBUG: cleaning up dynamic shared memory control segment with ID 3983505204
2024-11-27 05:58:21.532 PST [127387] DEBUG: proc_exit(0): 2 callbacks to make
2024-11-27 05:58:21.532 PST [127387] LOG: database system is shut down
2024-11-27 05:58:21.532 PST [127387] DEBUG: exit(0)
2024-11-27 05:58:21.532 PST [127387] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 05:58:21.532 PST [127387] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 05:58:21.532 PST [127387] DEBUG: proc_exit(-1): 0 callbacks to make
2024-11-27 05:58:21.532 PST [127388] DEBUG: logger shutting down
2024-11-27 05:58:21.532 PST [127388] DEBUG: shmem_exit(0): 0 before_shmem_exit callbacks to make
2024-11-27 05:58:21.532 PST [127388] DEBUG: shmem_exit(0): 0 on_shmem_exit callbacks to make
2024-11-27 05:58:21.532 PST [127388] DEBUG: proc_exit(0): 0 callbacks to make
2024-11-27 05:58:21.532 PST [127388] DEBUG: exit(0)
2024-11-27 05:58:21.533 PST [127388] DEBUG: shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 05:58:21.533 PST [127388] DEBUG: shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 05:58:21.533 PST [127388] DEBUG: proc_exit(-1): 0 callbacks to make
这些模式分别对应不同的信号:
SIGTERM
对应 Smart Shutdown。SIGINT
对应 Fast Shutdown。SIGQUIT
对应 Immediate Shutdown。
通过这些不同的关机模式,可以根据具体需求选择合适的关机方式。
原文地址:https://blog.csdn.net/lee_vincent1/article/details/144094854
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!