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

这篇具有很好参考价值的文章主要介绍了POSTGRESQL 关于安装中自动启动的问题 详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

POSTGRESQL 关于安装中自动启动的问题 详解,postgresql,数据库

最近加群的人太多了,可能是因为这篇 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=notify

User=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=0

ExecStartPre=/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=0

TimeoutStopSec=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 信号,使进程有机会优雅地处理退出操作。这可以帮助确保服务的正确终止

剩下的这个部分

POSTGRESQL 关于安装中自动启动的问题 详解,postgresql,数据库

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

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

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

POSTGRESQL 关于安装中自动启动的问题 详解,postgresql,数据库

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

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

POSTGRESQL 关于安装中自动启动的问题 详解,postgresql,数据库

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

POSTGRESQL 关于安装中自动启动的问题 详解,postgresql,数据库

POSTGRESQL 关于安装中自动启动的问题 详解,postgresql,数据库文章来源地址https://www.toymoban.com/news/detail-650517.html

到了这里,关于POSTGRESQL 关于安装中自动启动的问题 详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第二章:死磕postgreSQL,windows、mac、linux系统的安装详解

    本文介绍了在不同操作系统上安装PostgreSQL的详细步骤。对于Windows系统,用户可以从PostgreSQL官方网站下载安装程序,并按照提示进行安装。在macOS系统上,常见的安装方法是使用Homebrew包管理器。用户可以通过终端命令安装Homebrew,并使用其安装PostgreSQL。对于Linux系统,安装方

    2024年02月13日
    浏览(47)
  • postgreSql服务的window启动

    CMD启动服务: D:PostgreSQLbin pg_ctl register -N PostgreSQL -D \\\"D:PostgreSQLdata # 登录 psql -U postgres # 验证输入 select 1; 拓展:删除服务 sc delete 服务名称 动PostgreSQL服务器 3.1 打开命令提示符 “Windows”+\\\"R\\\"快捷键打开运行窗口,在输入框中输入\\\"cmd\\\"进入命令行窗口。 图3-1 输入\\\"cmd\\\"进入命令

    2024年02月02日
    浏览(26)
  • PostgreSQL在windows下如何启动

    前提:本地已经安装了Postgres并成功连接过,纯傻瓜式安装过于简单,就不演示了。 PostgreSQL官网下载链接 配置如下简单直接,作为学习软件足矣。 这段是废话,直接跳过 看图即可 :Greenplum是区别于Hadoop生态的大数据产品,Greenplum由PostgreSQL组成,在当下国内众多机构都采用

    2024年02月07日
    浏览(24)
  • POSTGRESQL PG15关于归档的新模式

    开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到3群(共810人左右 1 + 2 + 3),这里需要注意,如果想和 瑞典马工进行面对面的交

    2024年02月06日
    浏览(47)
  • PostgreSQL基于Patroni方案的高可用启动流程分析

    什么是Patroni 在很多生产环境中,分布式数据库以高可用性、数据分布性、负载均衡等特性,被用户广泛应用。而作为高可用数据库的解决方案——Patroni,是专门为PostgreSQL数据库设计的,一款以Python语言实现的高可用架构模板。该架构模板,旨在通过外部共享存储软件(ku

    2024年02月07日
    浏览(33)
  • Windows 10 安装 PostgreSQL 12.x 报错 ‘psql‘ 不是内部或外部命令 & 由于找不到文件libintl-9.dll等问题

    不知道是不是,笔者取消了 stack Builder 的安装,导致 psql 在 Windows 10 的cmd 命令下运行报错 \\\'psql\\\' 不是内部或外部命令,也不是可运行的程序或批处理文件。 ,配置了 pgAdmin 4 文件夹内的 runtime 环境变量也不行。所以笔者只能尝试重装 PostgreSQL 。 还有一个是手动点击 \\\"D:xxxpg

    2024年02月15日
    浏览(39)
  • Postgresql关于JSON、JSONB的操作符、处理函数(持续更新)

    (只列举本次用到的函数,其他函数在文章后面有详解) SELECT answer_id,  jsonb_array_elements(option_ids)::INTEGER  AS option_id FROM db_live_answer  WHERE survey_code=\\\'No.20230605165428002\\\'      如果所有json数组都包含两个新列的两个元素,那么使用固定路径,如dmfay的答案。 否则,你应该使用jso

    2024年02月08日
    浏览(36)
  • PostgreSQL向量数据插件--pgvector安装(附PostgreSQL安装)

    本文为本人在安装pgvector中踩过的坑,已找到解决方法,现向大家分享。 pgvector :0.5.1 PostgreSQL数据库 :14.0 操作系统 :Ubuntu18.04 因为在此之前安装过 PostgreSQL8.4.1 ,而pgvector只支持11.0及以后的版本,因此安装PostgreSQL14.0 PostgreSQL官网 解压压缩包 安装依赖包 编译 数据目录创建

    2024年01月23日
    浏览(28)
  • 关于PostgreSql数据库和mysql的不同点及注意事项

    更新时间戳需要通过触发器来实现。 定义触发器 创建触发器 dapper 判断了connection 是否是npgsql ,如果是,表示支持 数组类型,不展开数组。也就是 in @ids ,在npgsql下不做转化为 in (@p1,@p2…),故 在pgsql 下要用 any(@ids) 例如: upsert是一个组合词,即当往表中插入记录,如果该记录

    2024年02月01日
    浏览(55)
  • 芋道yudao-vue连接Postgresql:启动报错org.postgresql.util.PSQLException: ERROR: relation “dual“ does not exist

    在项目中用到了多数据源,在连接postgres数据库时,项目启动报错,说数据库连接错误,说dual不存在,网上好多教程都是说数据库查询的时候的大小写问题,而这个仅仅是连接,咋鞥却处理方法是修改application-dev.yml中的配置文件. 项目中的druid参数是这样的:确实在配置文件中有个查询语

    2024年02月11日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包