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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/96342.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python “贪吃蛇”游戏,在不断改进中学习pygame编程

目录 前言 改进过程一 增加提示信息 原版帮助摘要 pygame.draw pygame.font class Rect class Surface 改进过程二 增加显示得分 改进过程三 增加背景景乐 增加提示音效 音乐切换 静音切换 mixer.music.play 注意事项 原版帮助摘要 pygame.mixer pygame.mix…

代码随想录算法训练营第三十八天 | 理论基础,509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯

代码随想录算法训练营第三十八天 | 理论基础,509. 斐波那契数,70. 爬楼梯,746. 使用最小花费爬楼梯 理论基础什么是动态规划动态规划的解题步骤动态规划应该如何debug 509. 斐波那契数递归解法 70. 爬楼梯746. 使用最小花费爬楼梯 理论基础 视…

微信小程序:函数节流与函数防抖

目录 问题引入: 定义 解决方案:函数节流 一、案例举例 1.页面展示 2.search.wxml标签展示 3.search.js展示 4.结果展示 二、函数节流解决问题 1.函数 2.实例应用 三、函数防抖解决问题 1.函数 2.原理 3.应用场景 4.应用实例 总结 问题引入…

Python3的print用法

目录 一:print语法 二:print结尾参数end用法 三:print分隔符参数sep用法 四:print固定宽度字符输出 一:print语法 print(*objects, sep , end\n, filesys.stdout, flushFalse) 参数解释: &q…

【计算机设计大赛】国赛一等奖项目分享——基于多端融合的化工安全生产监管可视化系统

文章目录 一、计算机设计大赛国赛一等奖二、项目背景三、项目简介四、系统架构五、系统功能结构六、项目特色(1)多端融合(2)数据可视化(3)计算机视觉(目标检测) 七、系统界面设计&am…

虹科展会 | 自动驾驶展品:上海汽车测试展精彩回顾

2023年8月9日-8月11日,上海国际汽车测试及质量监控博览会在上海圆满落幕。本次展会提供了一个了解最新汽车测试及质量监控技术、产品和趋势的机会,同时也是汽车测试及质量监控领域的专业人士和业内人士的重要交流平台。 雅名特是虹科旗下子公司&#xff…

springcloud3 hystrix实现服务熔断的案例配置3

一 hystrix的熔断原理 1.1 hystrix的熔断原理 在springcloud的框架里,熔断机制是通过hystrix实现,hystrix会监控服务之间的调用。当失败调用达到一定的阈值,默认是5s内失败20次,就会启用hystrix的熔断机制,使用命Hy…

Python Opencv实践 - 图像透射变换

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) rows,cols img.shape[:2] print(rows,cols)#opencv中的透射变换,需要一个3x3透射变换矩阵 #这个矩阵可以通过…

内核配置知识

Linux内核配置系统的组成 Linux内核源码很多,有上千条配置选项,配置相当复杂。 为了更好选择自己想要的功能配置,linux内核源码组织了一个配置系统; 配置系统包括三部分: Makefile:负责整体的配置编译 …

0101读写分离测试-jdbc-shardingsphere-中间件

文章目录 1 前言2、创建SpringBoot程序2.1、创建项目2.2、添加依赖2.3、生成实体类、service与Mapper1.5、配置读写分离 2、测试2.1、读写分离测试2.2、事务测试2.3、负载均衡测试 结语 1 前言 shardingshpere-jdbc定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的…

【python办公自动化】PysimpleGUI中更新Listbox组件选定元素的格式

pysimplegui中更新Listbox组件选定元素的格式 背景问题解决创建窗口布局创建窗口背景 在进行打分时候,由于打分的指标较多,因此为了辨别已经打完分数的指标,可以考虑对打过分的指标进行标记,故可以采用格式修改的方法调整,比如添加一些特殊标记 问题解决 import PySim…

自动驾驶数据集汇总

1.Nuscenes 数据集链接:nuScenes nuscenes数据集下有多个任务,涉及Detection(2D/3D)、Tracking、prediction、激光雷达分割、全景任务、规划控制等多个任务; nuScenes数据集是一个具有三维目标注释的大型自动驾驶数…

C语言中常见的一些语法概念和功能

常用代码: 程序入口:int main() 函数用于定义程序的入口点。 输出:使用 printf() 函数可以在控制台打印输出。 输入:使用 scanf() 函数可以接收用户的输入。 条件判断:使用 if-else 语句可以根据条件执行不同的代码…

中期国际:MT4挂单和止损设置教程:善用限价和止损单来管理风险

在外汇交易中,合理设置挂单和止损是保护资金和管理风险的重要手段。MT4平台提供了便捷的挂单和止损功能,帮助交易者更好地控制交易风险。本文将为您介绍如何善用限价和止损单来管理风险,以及在MT4平台上的操作步骤。 一、设置限价挂单 限价挂…

⛳ Docker - Centos 安装配置

目录 ⛳ Docker - Centos 安装配置🏭 Docker 安装:📢 一、安装依赖包💬 二、添加 Docker 下载源地址🐾 三、更新yum缓存👣 四、安装Docker💻 五、启动Docker🎁 六、查看Docker状态和…

macOS - 安装使用 libvirt、virsh

文章目录 关于 libvirt使用安装启动服务virsh 交互模式virsh 帮助命令 关于 libvirt libvirt 官网: https://libvirt.org/gitlab : https://gitlab.com/libvirt/libvirtgithub : https://github.com/libvirt/libvirt 只读,gitlab 的镜像 libvirt是一套…

Git常见操作

一、全局配置命令 配置级别: –local(默认,高级优先):只影响本地仓库 –global(中优先级):只影响所有当前用户的git仓库 –system(低优先级):影响到全系统的git仓库 1…

核能的发展与应用

目录 1.核能的概念 2.核能的实现原理 3.核能的利与弊 4.核能未来的发展趋势 1.核能的概念 核能是指利用核反应过程中释放出的能量来产生电力或其他形式能量的能源形式。核能主要通过核裂变和核聚变两种方式产生。 1. 核裂变:核裂变是指重核(通常是铀、…

04.Show, Attend and Tell

目录 前言泛读摘要IntroductionRelated Work小结 精读编码器:特征卷积解码器:LSTM网络随机硬注意力和确定软注意力机制硬注意力软注意力双重随机注意力 训练实验数据集评估过程定量分析定性分析 结论 代码(略) 前言 本课程来自深…

多维时序 | MATLAB实现PSO-CNN-BiLSTM多变量时间序列预测

多维时序 | MATLAB实现PSO-CNN-BiLSTM多变量时间序列预测 目录 多维时序 | MATLAB实现PSO-CNN-BiLSTM多变量时间序列预测基本介绍模型特点程序设计参考资料 基本介绍 本次运行测试环境MATLAB2021b,MATLAB实现PSO-CNN-BiLSTM多变量时间序列预测。代码说明&#xff1a…