当前位置: 首页 > article >正文

postgresql15的停止

    PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统,且因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。介绍过postgresql的启动方法,就很有必要介绍下postgresql的停止方法。

一、停止

1.1,kill term

kill -term `head -1 /usr/postgresql15/data/postmaster.pid`

    kill term代表智能关闭,当该命令被执行,将不允许新连接,让现有会话正常停止,所有会话结束后数据库关闭,如果服务器处在线备份模式,它将等待直到在线备份模式不再被激活。

    我们开始一个会话,并且不结束,进行数据库智能关闭:

postgres=# begin
postgres-# select * from pg_settings;

    可以看到,数据库没有停止下来。

    我们提交事务,退出连接,这个时候数据库停止下来。

postgres=# commit;
WARNING:  there is no transaction in progress
COMMIT

1.2,kill INT

kill -INT `head -1 /usr/postgresql15/data/postmaster.pid`

    kill -INT,代表快速关闭。服务器不再允许新的连接,并向所有现有服务器进程发送SIGTERM,让它们中断当前事务并立刻退出。然后服务器等待所有服务器进程退出并最终关闭。

    我们也还是开启一个连接,开启事务,不提交,然后执行数据库关闭。

postgres=# begin;
BEGIN
postgres=*# select * from pg_settings;

    可以看到,我们的连接会话被中断,数据库执行了快速停止。

 1.3,kill QUIT

kill -QUIT `head -1 /usr/postgresql15/data/postmaster.pid`

    kill -QUIT,代表立即关闭。服务器将给所有子进程发送SIGQUIT并且等待它们终止。 如果有任何进程没有在 5 秒内终止,它们将被发送SIGKILL。 主管服务器进程将在所有子进程退出之后立刻退出,而无需做普通的数据库关闭处理。 这将导致在下一次启动时(通过重放 WAL 日志)恢复。 只在紧急时才推荐这种方式。 

    我们创建一个临时表,开启事务,插入数据不提交,执行下立即关闭命令。

tpc=# \l
                                                 List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    | ICU Locale | Locale Provider |   Access privileges   
-----------+----------+----------+-------------+-------------+------------+-----------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
 test      | tpc      | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | 
 tpc       | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | 
(5 rows)

tpc=# 
tpc=# 
tpc=# 
tpc=# 
tpc=# 
tpc=# 
tpc=# create table tpc_test1(table_name varchar(100));
CREATE TABLE
tpc=# 
tpc=# begin 
tpc-# ;
BEGIN
tpc=*# insert into tpc_test1 values('pg_settings');
INSERT 0 1
root@tpc:/etc/systemd/system# kill -QUIT `head -1 /opt/postgresql15/data/postmaster.pid`

    我们查看关闭日志:

    我们启动数据库看看日志,发现数据库进行了数据库恢复:

  1.4,pg_ctl命令

    postgresql内置了停止数据库的命令工具pg_ctl,我们可以通过该命令进行停止

pg_ctl stop -D /opt/postgresql15/data

 


http://www.kler.cn/a/515197.html

相关文章:

  • 登录认证(4):令牌技术:JWT令牌
  • SQL-leetcode—1164. 指定日期的产品价格
  • QT调用OpenSceneGraph
  • 【FISCO BCOS】二十四、通过Java SDK对FISCO BCOS进行压力测试
  • bash: ./xxx: No such file or directory
  • 本地 AI 模型“不实用”?
  • s/jwt-decode.js?v=534c014e‘ vue3引入jwt-decode报错
  • 电子应用设计方案101:智能家庭AI喝水杯系统设计
  • 群晖部署-Calibreweb
  • Windows系统提示RunDLL PcaWallpaperAppDetect错误修复方法
  • 新浪安卓(Android)开发面试题及参考答案(68道题,9道手撕题)
  • 人工智能学习(二)之Python 科学计算库
  • SSM开发(二) MyBatis两种SQL配置方式及其对比
  • 三篇物联网漏洞挖掘综述
  • 操作无法完成,因为文件已经在Electronic Team Virtual Serial Port Driver Service中打开
  • 软件测试 —— Postman初识
  • 最新-CentOS 7安装1 Panel Linux 服务器运维管理面板
  • JS学习之JavaScript模块化规范进化论
  • “模板”格式化发布新创诗(为《诗意 2 0 2 5》贡献力量)
  • 2024年美赛C题评委文章及O奖论文解读 | AI工具如何影响数学建模?从评委和O奖论文出发-O奖论文做对了什么?
  • 【论文速读】| 评估并提高大语言模型生成的安全攻击探测器的鲁棒性
  • 【网络协议】RFC1350-TFTP协议
  • Java设计模式 十三 代理模式 (Proxy Pattern)
  • SQLmap 注入-03 获得用户信息
  • “深入浅出”系列之音视频开发:(3)音视频开发的学习路线和必备知识
  • Nginx 反向代理与负载均衡配置实践