PostgreSQL三种关闭方式的区别

1、使用smart参数关闭数据库:smart:最为安全,但最慢,需要将所有连接都断开后,才会关库,默认关库模式。smart: 等所有的连接中止后,关闭数据库。如果客户端连接不终止, 则无法关闭数据库。[postgresql@master ~]$ pg_ctl stop -D $PGDATA -m smartwaiting for server to shut down.... doneserver stopped[postgresql@master ~]$使用smart参数关闭数据库的日志:2025-09-06 19:40:20.479 CST [56233] LOG:  received smart shutdown request2025-09-06 19:40:20.480 CST [56233] LOG:  background worker "logical replication launcher" (PID 56241) exited with exit code 12025-09-06 19:40:20.480 CST [56236] LOG:  shutting down2025-09-06 19:40:20.485 CST [56233] LOG:  database system is shut down2、使用fast参数关闭数据库:fast:强制中断会话,而不管有操作有没有提交,在做系统维护(系统维护时一般应用都正常关闭了,或者不再会有事务操作。)时,需要这种模式来关闭数据库。fast: 快速关闭数据库, 断开客户端的连接,让已有的事务回滚,然后正常关闭数据库。[postgresql@master ~]$ pg_ctl stop -D $PGDATA -m fastwaiting for server to shut down.... doneserver stopped[postgresql@master ~]使用fast参数关闭数据库的日志:2025-09-06 19:40:59.477 CST [56258] LOG:  received fast shutdown request2025-09-06 19:40:59.478 CST [56258] LOG:  aborting any active transactions2025-09-06 19:40:59.478 CST [56258] LOG:  background worker "logical replication launcher" (PID 56266) exited with exit code 12025-09-06 19:40:59.479 CST [56261] LOG:  shutting down2025-09-06 19:40:59.484 CST [56258] LOG:  database system is shut down3、使用immediate参数关闭数据库:immediate:最暴力的方式,不管数据有没有落盘(POSGRE是遵循WAL机制),就直接关掉,待启动时进行实例恢复,如果在关库前有大量的事务没有写入磁盘,那这个恢复过程可能会非常的漫长。immediate: 立即关闭数据库,立即停止数据库进程,直接退出,下次启动时会进行实例恢复。[postgresql@master ~]$ pg_ctl stop -D $PGDATA -m immediatewaiting for server to shut down.... doneserver stopped[postgresql@master ~]$使用immediate参数关闭数据库的日志:2025-09-06 19:41:40.311 CST [56278] LOG:  received immediate shutdown request2025-09-06 19:41:40.313 CST [56284] WARNING:  terminating connection because of crash of another server process2025-09-06
19:41:40.313 CST [56284] DETAIL:  The postmaster has commanded this
server process to roll back the current transaction and exit, because
another server process exited abnormally and possibly corrupted shared
memory.2025-09-06 19:41:40.313 CST [56284] HINT:  In a moment you should be able to reconnect to the database and repeat your command.2025-09-06 19:41:40.315 CST [56278] LOG:  database system is shut down4、数据目录:[postgresql@master ~]$ echo $PGDATA/usr/local/postgresql/data

5、启动数据库:[postgresql@master ~]$ pg_ctl start -D $PGDATAwaiting for server to start....2025-09-06 19:40:40.221 CST [56258] LOG:  redirecting log output to logging collector process2025-09-06 19:40:40.221 CST [56258] HINT:  Future log output will appear in directory "log". doneserver started[postgresql@master ~]$

版权声明:cnblogshot 发表于 2025-09-07 15:27:38。
转载请注明:PostgreSQL三种关闭方式的区别 | 程序员导航网

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...