PostgreSQL三种关闭方式的区别

1、使用smart参数关闭数据库:

smart:最为安全,但最慢,需要将所有连接都断开后,才会关库,默认关库模式。

smart: 等所有的连接中止后,关闭数据库。如果客户端连接不终止, 则无法关闭数据库。

postgresql@master \~ pg_ctl stop -D PGDATA -m smart

waiting for server to shut down.... done

server stopped

postgresql@master \~$

使用smart参数关闭数据库的日志:

2025-09-06 19:40:20.479 CST 56233 LOG: received smart shutdown request

2025-09-06 19:40:20.480 CST 56233 LOG: background worker "logical replication launcher" (PID 56241) exited with exit code 1

2025-09-06 19:40:20.480 CST 56236 LOG: shutting down

2025-09-06 19:40:20.485 CST 56233 LOG: database system is shut down

2、使用fast参数关闭数据库:

fast:强制中断会话,而不管有操作有没有提交,在做系统维护(系统维护时一般应用都正常关闭了,或者不再会有事务操作。)时,需要这种模式来关闭数据库。

fast: 快速关闭数据库, 断开客户端的连接,让已有的事务回滚,然后正常关闭数据库。

postgresql@master \~ pg_ctl stop -D PGDATA -m fast

waiting for server to shut down.... done

server stopped

postgresql@master \~

使用fast参数关闭数据库的日志:

2025-09-06 19:40:59.477 CST 56258 LOG: received fast shutdown request

2025-09-06 19:40:59.478 CST 56258 LOG: aborting any active transactions

2025-09-06 19:40:59.478 CST 56258 LOG: background worker "logical replication launcher" (PID 56266) exited with exit code 1

2025-09-06 19:40:59.479 CST 56261 LOG: shutting down

2025-09-06 19:40:59.484 CST 56258 LOG: database system is shut down

3、使用immediate参数关闭数据库:

immediate:最暴力的方式,不管数据有没有落盘(POSGRE是遵循WAL机制),就直接关掉,待启动时进行实例恢复,如果在关库前有大量的事务没有写入磁盘,那这个恢复过程可能会非常的漫长。

immediate: 立即关闭数据库,立即停止数据库进程,直接退出,下次启动时会进行实例恢复。

postgresql@master \~ pg_ctl stop -D PGDATA -m immediate

waiting for server to shut down.... done

server stopped

postgresql@master \~$

使用immediate参数关闭数据库的日志:

2025-09-06 19:41:40.311 CST 56278 LOG: received immediate shutdown request

2025-09-06 19:41:40.313 CST 56284 WARNING: terminating connection because of crash of another server process

2025-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 down

4、数据目录:

postgresql@master \~ echo PGDATA

/usr/local/postgresql/data

5、启动数据库:

postgresql@master \~ pg_ctl start -D PGDATA

waiting for server to start....2025-09-06 19:40:40.221 CST 56258 LOG: redirecting log output to logging collector process

2025-09-06 19:40:40.221 CST 56258 HINT: Future log output will appear in directory "log".

done

server started

postgresql@master \~$

相关推荐
lbb 小魔仙9 小时前
Windows搭建PaddleOCR+飞书Webhook自动打卡通知机器人:识别、推送与远程触发完整教程
数据库·人工智能·prometheus·时序数据库
captain37610 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
心中有你021410 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
龙亘川11 小时前
综合素质评价业务建模:从过程性评价到成长档案全链路闭环
数据库·智慧城市·数据可视化
数据库小组11 小时前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)
数据库·mysql·mysql优化·数据库开发·数据库迁移·版本升级·数据复制
zhangjw3411 小时前
1-5 PostgreSQL 数据类型全集:基础类型、字符串、数值、时间类型
数据库·postgresql
王中阳Go12 小时前
5.27 分钟干完后端和全部测试:一场三小时笔试的五个失分点,四个不在代码上
大数据·数据库·人工智能·后端·大语言模型
odoo中国12 小时前
Odoo19 配置 PostgreSQL 数据库连接及故障排查
postgresql·odoo开发·数据库配置
cnskylee12 小时前
【MySQL】麒麟V10 SP3系统安装MySQL-Commercial-8.0.46
数据库·mysql·adb
梦幻通灵12 小时前
修改MySQL数据库递增序列【持续更新】
数据库·mysql