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

POSTGRESQL 关于安装中自动启动的问题 详解

开头还是介绍一下群,如果感兴趣Polardb ,mongodb ,MySQL ,Postgresql ,redis ,SQL SERVER ,ORACLE,Oceanbase 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请加 liuaustin3微信号 ,在新加的朋友会分到3群(共1160人左右 1 + 2 + 3)

7670b55606231ec98dfd174a3eb3f428.png

最近加群的人太多了,可能是因为这篇 Peace and love,从今天开始我们群正式加入 ORACLE ,因为群里的ORACLE 大佬也很多,所以基本上市面上能见到的常见的数据库产品,群里都有大佬和各种厂商,和工作者,我们准备把 Peace and love 发扬光大,都是数据库,大家一起学。

正题的开始说,基于POSTGRESQL 安装中,很多同学提出一个问题,就是安装中,希望能进行自动启动POSTGRESQL 数据库,不通过pg_ctl 命令来进行相关的工作。所以本期咱们来说说,自动化启动部分怎么搞。

实际上如果您在使用POSTGRESQL 的 yum 安装后,您可以直接通过安装后的 sudo systemctl start postgresql-15 来启动PostgreSQL ,所以如何设置这个部分,成为通过源码安装同学提出的问题。

[Unit]
Description=PostgreSQL 15 database server
Documentation=https://www.postgresql.org/docs/15/static/
After=syslog.target
After=network-online.target[Service]
Type=notifyUser=postgres
Group=postgres# Note: avoid inserting whitespace in these Environment= lines, or you may
# break postgresql-setup.# Location of database directory
Environment=PGDATA=/var/lib/pgsql/15/data/# Where to send early-startup messages from the server (before the logging
# options of postgresql.conf take effect)
# This is normally controlled by the global default set by systemd
# StandardOutput=syslog# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000
Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
Environment=PG_OOM_ADJUST_VALUE=0ExecStartPre=/usr/pgsql-15/bin/postgresql-15-check-db-dir ${PGDATA}
ExecStart=/usr/pgsql-15/bin/postmaster -D ${PGDATA}
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT# Do not set any timeout value, so that systemd will not kill postmaster
# during crash recovery.
TimeoutSec=0# 0 is the same as infinity, but "infinity" needs systemd 229
TimeoutStartSec=0TimeoutStopSec=1h[Install]
WantedBy=multi-user.target

下面我们逐一对于一些关键的部分进行解析

根据撰写的规范首先我们以 【unit】作为开头,unit本身说明我们本身服务和他相依赖的服务并注明关系。其中会有 Description 部分,描述信息以及关于这部分的可以查询的网站信息等。

其中这里有 after , before, requires, wants conflicts ,  分别注明相关服务与本服务之间的启动顺序,和关闭的顺序,After 主要表明此服务之前需要启动的服务,和关闭时需要在这些服务前进行关闭的意思,Before正好相反,wants 为启动此服务中还有连带的非强制需要启动那些服务,conflicts 说明启动这个服务,不应该启动的其他服务。

After=syslog.target

After=network-online.target

这两个部分说明在关机前,在这两个部分关闭前,我们的POSTGRESQL 应该是已经关闭了。其中这两个部分在实际的工作中并未有什么关系系统安全和稳定的意义,After=syslog.target 这里可以忽略基本没有意义。

但是官方的程序会有相关的注明,所以我们还是这里写这个部分。下面的是关于postgresql服务中启动的方式是什么。同时这里我们使用什么用户和用户组来作为启动POSTGRESQL 或控制POSTGRESQL 的LINUX 账号。

[Service]

Type=notify

User=postgres

Group=postgres

下面的部分为标记PGDATA变量指定的数据库目录的部分,具体需要根据你自己的数据库目录进行设定

Environment=PGDATA=/var/lib/pgsql/15/data/

下面的三行是对于服务器如果缺少内存,则对于POSTGRESQL POSTMASTER 进行设置阻止系统在OOM 的时候,来kill postmaster 主进程

OOMScoreAdjust=-1000

Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj

Environment=PG_OOM_ADJUST_VALUE=0

在下面部分与我们的POSTGRESQL 的应用

这里主要是几个部分

1  PG 数据库的主数据目录

ExecStartPre=/usr/pgsql-15/bin/postgresql-15-check-db-dir ${PGDATA}

2  PG 的执行文件目录

ExecStart=/usr/pgsql-15/bin/postmaster -D ${PGDATA}

ExecReload=/bin/kill -HUP $MAINPID

在systemd unit文件中的ExecReload行。它指定了在重新加载服务时要执行的命

令。在这种情况下,命令是通过发送SIGHUP信号给$MAINPID来重新加载服务。

SIGHUP信号是一种常用的信号,用于通知进程重新加载其配置文件或重新初始化。通过执行上述命令,systemd将向$MAINPID指定的主进程发送SIGHUP信号,从而触发服务的重新加载操作。

请注意,$MAINPID将在运行该unit文件时被实际的主进程PID替换。因此,实际执行的命令可能类似于:/bin/kill -HUP 1234,其中1234是实际的主进程PID。这将确保正确地发送信号以重新加载服务

KillMode=mixed

KillSignal=SIGINT

设置KillMode=mixed时,systemd会同时使用两种终止模式:ControlGroup和Process。

ControlGroup模式:systemd发送SIGTERM信号给进程组中的所有进程,等待一段时间,让它们正常终止。如果进程在超时时间内仍未终止,systemd会发送SIGKILL信号给进程组中的所有进程,强制终止它们。

Process模式:systemd只发送SIGTERM信号给主进程,等待一段时间,让其正常终止。如果主进程在超时时间内未终止,systemd会发送SIGKILL信号给主进程,强制终止它。与服务相关的其他进程将不受影响。

通过设置KillMode=mixed,可以在终止服务时先尝试优雅地终止与服务相关的所有进程,然后再强制终止仍未终止的进程。这有助于确保服务的完全终止。

KillSignal=SIGINT 是 systemd unit 文件中的一个选项,用于指定在终止服务时使用的信号。

SIGINT 是 POSIX 标准中定义的一个信号,用于通知进程中断的信号。当进程接收到 SIGINT 信号时,它会收到一个中断请求,通常用于请求进程优雅地退出。通过设置 KillSignal=SIGINT,systemd 会在终止服务时向进程发送 SIGINT 信号。进程可以响应该信号并做出相应的处理,例如释放资源、保存数据等。如果进程在一定时间内没有对 SIGINT 信号做出响应,则 system 会尝试使用其他信号终止该进程。

需要注意的是,默认情况下,systemd 会使用 SIGTERM 信号终止服务进程。但是,如果你想要使用 SIGINT 信号作为终止信号,可以通过设置 KillSignal=SIGINT 来覆盖默认设置。

总之,通过设置 KillSignal=SIGINT,可以让 systemd 在终止服务时使用 SIGINT 信号,使进程有机会优雅地处理退出操作。这可以帮助确保服务的正确终止

剩下的这个部分

686bd8adcc470af7d1ca612e5d35134e.png

在 systemd unit 文件中,TimeoutSec=0 是一个选项,用于指定服务的运行超时时间。将 TimeoutSec 设置为 0 表示禁用超时限制,即服务可以无限期地运行。

在 systemd unit 文件中,TimeoutStartSec=0 是一个选项,用于指定服务的启动超时时间。将 TimeoutStartSec 设置为 0 表示禁用启动超时限制,即系统将不会对服务的启动操作设置时间限制。

在 systemd unit 文件中,TimeoutStopSec=1h 是一个选项,用于指定服务的停止超时时间。将 TimeoutStopSec 设置为 1h 表示服务的停止操作限时 1 小时。

8d3479a8c27da0271ddbd4bdd8ba155d.png

在 systemd unit 文件中,WantedBy=multi-user.target 是一个选项,用于指定服务所属的 target。

systemd 的 target 是一组相关的单元的集合,可以作为系统的一个运行级别来理解。multi-user.target 是一个默认的 systemd target,代表了多用户模式的运行级别。其中/usr/lib/systemd/system/ 目录是存放系统服务单元文件的位置.  剩下的就是将服务的文件放到对应的目录,这里以CENTOS 为例,后续有机会我们在那 unbantu 为例一次。注意权限的设定。

11508f2c6eed6446c0318b43d1e092d2.png

sudo systemctl enable postgresql-15

最后我们在将postgresql服务项,设置为自启动即可,此时你的系统可以通过如下的命令来控制POSTGRESQL

[root@pg15b system]# sudo systemctl start postgresql-15

[root@pg15b system]# sudo systemctl stop postgresql-15

[root@pg15b system]# sudo systemctl restart postgresql-15

33d1219730fe8fdde9644fc7fecf3d41.png

18229f60097a78be67321eae2b937056.png

相关文章:

POSTGRESQL 关于安装中自动启动的问题 详解

开头还是介绍一下群,如果感兴趣Polardb ,mongodb ,MySQL ,Postgresql ,redis ,SQL SERVER ,ORACLE,Oceanbase 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请加 liuaustin3微信号 &…...

Java寻找数组的中心下标

目录 1.题目描述 2.题解 分析 具体实现 1.题目描述 给你一个整数数组 nums ,请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端,那么左侧数之和…...

ORACLE中判断表是否存在再删除表避免报错与MySql和SqlServer的不同

不同数据库中drop a table if it exists的不同: In MySQL it is pretty easy to drop a table if it exists already. In Oracle and Microsoft’s SQL Server it is a little more complicated. Today I want to present you the solutions for these two DBMS’.…...

解决 Maven 创建 Spring Boot 项目时出现 “Cannot access alimaven“ 错误的方法

系列文章目录 文章目录 系列文章目录前言一、确认 Maven 配置二、创建 Spring Boot 项目三、修改项目的 Maven 配置四、清除 Maven 本地仓库五、重新构建项目总结前言 Maven 是 Java 项目的构建工具,而 Spring Boot 则是用于快速构建 Spring 应用程序的框架。但有时,在创建 …...

设计模式——适配器模式

引入实例 说起适配器其实在我们的生活中是非常常见的,比如:学校的宿舍的电压都比较低,而有的学生想使用大功率电器,宿舍的就会跳闸,然而如果你使用一个适配器(变压器)就可以使用了(…...

如何区分闰年与平年

首先要明白 地球绕太阳运行周期为365天5小时48分46秒(合365.24219天),即一回归年(tropical year)。公历的平年只有365日,比回归年短约0.2422 日,每四年累积约一天,把这一天加于2月末…...

中间件(下)

1、中间件与性能优化的关系: 中间件与性能优化之间存在密切的关系,特别是在构建复杂的分布式系统、处理高并发、实现异步通信等情况下。中间件可以在性能优化方面发挥重要作用,但同时,不当的中间件选择和配置也可能导致性能问题。…...

LVS-DR的RS进行ARP抑制的原因和LVS持久连接配置

一.RS的ARP抑制 1.为什么要抑制 2.如何抑制 (1)修改/etc/sysctl.conf文件,增加以下内容 (2)命令行临时设置 二.LVS持久连接 1.客户端持久连接 2.端口持久连接 3.防火墙标记持久连接 一.RS的ARP抑制 1.为什么要…...

【HarmonyOS】codelab在hvigor版本2.4.2上无法运行问题

【关键字】 HarmonyOS、codelab、hvigor 【问题描述】 有cp反馈集成鸿蒙codelab报错。 下载音乐专辑示例文件(一次开发,多端部署-音乐专辑(ArkTS) (huawei.com))后构建项目,显示找不到2.5.0的hvigor。 …...

MySQL- sql语句基础

文章目录 1.select后对表进行修改(delete)2.函数GROUP_CONCAT()3.使用正则表达式3.DATE_FORMAT()4.count() 加条件 1.select后对表进行修改(delete) 报错:You can’t specify target table ‘Person’ for update in …...

【目标检测中对IoU的改进】GIoU,DIoU,CIoU的详细介绍

文章目录 1、IoU2、GIoU(Generalized Intersection over Union)3、DIoU4、CIoU 1、IoU IoU为交并比,即对于pred和Ground Truth:交集/并集 1、IoU可以作为评价指标使用,也可以用于构建IoU loss 1 - IoU 缺点: 2、对于pred和GT相…...

【环境配置】Windows10终端和VSCode下能够直接打开Anaconda-Prompt

很多小伙伴在 Windows 下做深度学习开发的时候,遇到终端没有在 Linux 那么方便,那么我们现在就可以来设置一下;这样我们也可以在文件夹内部右键打开终端,也可以在 VS Code 里面新建一个虚拟环境的控制台;这里主要是针对…...

稚晖君人形机器人问世:大模型加持,会自己换胳膊,要上生产线造车

从零开始,不到半年就造出人形机器人,还自带软硬件体系。 大模型技术的新一波浪潮:具身智能,已经有了重要进展。 刚刚,稚晖君的创业公司「智元机器人」开了自己的第一场发布会。 以「天才少年」身份加入华为的稚晖君(彭志辉)于去年底宣布离职创业,人们都在关注他在机器…...

变更通知在开源SpringBoot/SpringCloud微服务中的最佳实践

目录导读 变更通知在开源SpringBoot/SpringCloud微服务中的最佳实践1. 什么是变更通知2. 变更通知的场景分析3. 变更通知的技术方案3.1 变更通知的技术实现方案 4. 变更通知的最佳实践总结5. 参考资料 变更通知在开源SpringBoot/SpringCloud微服务中的最佳实践 1. 什么是变更通…...

亚马逊产品排名关键因素解析,通过测评干预需要具备哪些条件

亚马逊产品排名的高低意味着分配的流量多少以及销量的高低。影响产品排名的因素主要包括以下四个方面: 1. 产品销量 产品销量是反映产品在同类产品销售情况的一个重要指标。它在产品Listing中展示,并且平台每小时会更新一次该排行榜。平台算法认为&…...

leetcode原题:绘制直线(位运算)

题目: 已知一个由像素点组成的单色屏幕,每行均有 w 个像素点,所有像素点初始为 0,左上角位置为 (0,0)。 现将每行的像素点按照「每 32 个像素点」为一组存放在一个 int 中,再依次存入长度为 length 的一维数组中。 …...

jenkins 安装和通过gitee 拉取PHP项目

#jenkins 安装地址:https://pkg.jenkins.io/redhat-stable/sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key yum install fontconfig…...

解析TCP/IP协议的分层模型

了解ISO模型:构建通信的蓝图 为了促进网络应用的普及,国际标准化组织(ISO)引入了开放式系统互联(Open System Interconnect,OSI)模型。这个模型包括了七个层次,从底层的物理连接到顶…...

ARM M33架构入门

概述 Arm Cortex-M33核心处理器专为需要高效安全或数字信号控制的物联网和嵌入式应用而设计。该处理器具有许多可选功能,包括数字信号处理扩展 (DSP)、用于硬件强制隔离的TrustZone 安全性、内存保护单元 (MPU)和浮点单元 (FPU)。 Cortex-M33 的性能比 Cortex-M…...

CentOS系统环境搭建(四)——Centos7安装Java

centos系统环境搭建专栏🔗点击跳转 Centos7安装Java 查看云端yum库中目前支持安装的jdk软件包 yum search java|grep jdk选择JDK版本,并安装 yum install -y java-1.8.0-openjdk检查是否安装成功 java -version查看JDK的安装目录 find / -name jav…...

Windows 10/11防火墙设置:如何快速开启ICMP协议实现Ping功能(详细图文)

Windows系统ICMP协议配置全指南:从基础原理到高阶应用 在IT运维和开发工作中,网络连通性测试是最基础却又最频繁的需求之一。想象一下这样的场景:你正在部署一个关键服务,却发现客户端无法连接到服务器;或是远程协助同…...

ROS2效率提升:用rqt可视化工具替代复杂命令行的5个场景

ROS2效率革命:5个必须用rqt替代命令行的实战场景 第一次在ROS2项目中使用命令行调试参数时,我盯着满屏的ros2 param list和ros2 service call输出,突然意识到自己正在用21世纪的技术复刻80年代的操作方式。这就是rqt可视化工具存在的意义——…...

结合AI改写技术与五个技巧,快速优化论文查重率至合格范围

嘿,大家好!我是AI菌。今天咱们来聊聊一个让无数学生头疼的问题:论文重复率飙到30%以上怎么办?别慌,我这就分享5个实用降重技巧,帮你一次搞定,轻松压到合格线以下。这些方法都是我亲身试验过的&a…...

RStudio Server部署与运维实战:从零搭建到高效管理

1. 环境准备:搭建RStudio Server的基石 在开始部署RStudio Server之前,我们需要确保服务器环境已经准备就绪。就像盖房子需要打地基一样,这一步决定了后续所有工作的稳定性。我遇到过不少因为环境问题导致的安装失败案例,大多数都…...

ADS差分传输线前仿真:从S参数模板到信号完整性快速评估

1. 差分传输线前仿真入门:为什么需要S参数模板? 刚入行那会儿,我最头疼的就是每次新项目都要从头搭建仿真环境。直到发现ADS里藏着现成的4端口S参数模板,工作效率直接翻倍。这就像做菜时有了预制高汤,不用再从熬骨头汤…...

别再为‘file must be a file‘报错头疼了!手把手教你用Apifox搞定Dify文件上传接口

深度解析Dify文件上传接口:从报错排查到Apifox高效调试实战 当你正在为Dify AI应用集成文件上传功能时,是否曾在Apifox中反复遭遇file must be a file的报错而束手无策?这种看似简单的接口调试背后,隐藏着文件传输机制、参数组合…...

深度解析CloverBootloader内存管理:AptioMemoryFix原理与实现详解

深度解析CloverBootloader内存管理:AptioMemoryFix原理与实现详解 【免费下载链接】CloverBootloader Bootloader for macOS, Windows and Linux in UEFI and in legacy mode 项目地址: https://gitcode.com/gh_mirrors/cl/CloverBootloader CloverBootloade…...

BleSerial:嵌入式BLE UART流式通信C++库

1. BleSerial 库概述BleSerial 是一个面向嵌入式系统的轻量级 C 库,其核心设计目标是将蓝牙低功耗(BLE)通信抽象为标准 CStream对象(即继承自Stream类的实例),从而无缝接入 Arduino 及兼容平台(…...

基于python+Vue的高校课程考勤成绩管理系统

目录功能模块划分技术实现要点数据库设计扩展功能建议安全与合规项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作功能模块划分 Python后端核心功能 用户认证与权限管理:基于JWT或Session实现多角色(管理…...

OpenClaw镜像体验方案:星图平台GLM-4.7-Flash沙盒环境快速验证

OpenClaw镜像体验方案:星图平台GLM-4.7-Flash沙盒环境快速验证 1. 为什么选择云端沙盒验证OpenClaw 去年冬天,当我第一次尝试在本地MacBook上部署OpenClaw时,整整浪费了一个周末的时间。从Node.js版本冲突到Python依赖缺失,再到…...