网站开发技术项目说明书,差异基因做热图在线网站,网络营销方式和方法,wordpress设置权限设置方法开头还是介绍一下群#xff0c;如果感兴趣Polardb ,mongodb ,MySQL ,Postgresql ,redis #xff0c;SQL SERVER ,ORACLE,Oceanbase 等有问题#xff0c;有需求都可以加群群内有各大数据库行业大咖#xff0c;CTO#xff0c;可以解决你的问题。加群请加 liuaustin3微信号 如果感兴趣Polardb ,mongodb ,MySQL ,Postgresql ,redis SQL SERVER ,ORACLE,Oceanbase 等有问题有需求都可以加群群内有各大数据库行业大咖CTO可以解决你的问题。加群请加 liuaustin3微信号 在新加的朋友会分到3群共1160人左右 1 2 3 最近加群的人太多了可能是因为这篇 Peace and love从今天开始我们群正式加入 ORACLE 因为群里的ORACLE 大佬也很多所以基本上市面上能见到的常见的数据库产品群里都有大佬和各种厂商和工作者我们准备把 Peace and love 发扬光大都是数据库大家一起学。 正题的开始说基于POSTGRESQL 安装中很多同学提出一个问题就是安装中希望能进行自动启动POSTGRESQL 数据库不通过pg_ctl 命令来进行相关的工作。所以本期咱们来说说自动化启动部分怎么搞。 实际上如果您在使用POSTGRESQL 的 yum 安装后您可以直接通过安装后的 sudo systemctl start postgresql-15 来启动PostgreSQL ,所以如何设置这个部分成为通过源码安装同学提出的问题。 [Unit]
DescriptionPostgreSQL 15 database server
Documentationhttps://www.postgresql.org/docs/15/static/
Aftersyslog.target
Afternetwork-online.target[Service]
TypenotifyUserpostgres
Grouppostgres# Note: avoid inserting whitespace in these Environment lines, or you may
# break postgresql-setup.# Location of database directory
EnvironmentPGDATA/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
# StandardOutputsyslog# Disable OOM kill on the postmaster
OOMScoreAdjust-1000
EnvironmentPG_OOM_ADJUST_FILE/proc/self/oom_score_adj
EnvironmentPG_OOM_ADJUST_VALUE0ExecStartPre/usr/pgsql-15/bin/postgresql-15-check-db-dir ${PGDATA}
ExecStart/usr/pgsql-15/bin/postmaster -D ${PGDATA}
ExecReload/bin/kill -HUP $MAINPID
KillModemixed
KillSignalSIGINT# Do not set any timeout value, so that systemd will not kill postmaster
# during crash recovery.
TimeoutSec0# 0 is the same as infinity, but infinity needs systemd 229
TimeoutStartSec0TimeoutStopSec1h[Install]
WantedBymulti-user.target 下面我们逐一对于一些关键的部分进行解析 根据撰写的规范首先我们以 【unit】作为开头unit本身说明我们本身服务和他相依赖的服务并注明关系。其中会有 Description 部分描述信息以及关于这部分的可以查询的网站信息等。 其中这里有 after , before, requires, wants conflicts , 分别注明相关服务与本服务之间的启动顺序和关闭的顺序After 主要表明此服务之前需要启动的服务和关闭时需要在这些服务前进行关闭的意思Before正好相反wants 为启动此服务中还有连带的非强制需要启动那些服务conflicts 说明启动这个服务不应该启动的其他服务。 Aftersyslog.target Afternetwork-online.target 这两个部分说明在关机前在这两个部分关闭前我们的POSTGRESQL 应该是已经关闭了。其中这两个部分在实际的工作中并未有什么关系系统安全和稳定的意义Aftersyslog.target 这里可以忽略基本没有意义。 但是官方的程序会有相关的注明所以我们还是这里写这个部分。下面的是关于postgresql服务中启动的方式是什么。同时这里我们使用什么用户和用户组来作为启动POSTGRESQL 或控制POSTGRESQL 的LINUX 账号。 [Service] Typenotify Userpostgres Grouppostgres 下面的部分为标记PGDATA变量指定的数据库目录的部分具体需要根据你自己的数据库目录进行设定 EnvironmentPGDATA/var/lib/pgsql/15/data/ 下面的三行是对于服务器如果缺少内存则对于POSTGRESQL POSTMASTER 进行设置阻止系统在OOM 的时候来kill postmaster 主进程 OOMScoreAdjust-1000 EnvironmentPG_OOM_ADJUST_FILE/proc/self/oom_score_adj EnvironmentPG_OOM_ADJUST_VALUE0 在下面部分与我们的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。这将确保正确地发送信号以重新加载服务 。 KillModemixed KillSignalSIGINT 设置KillModemixed时systemd会同时使用两种终止模式ControlGroup和Process。 ControlGroup模式systemd发送SIGTERM信号给进程组中的所有进程等待一段时间让它们正常终止。如果进程在超时时间内仍未终止systemd会发送SIGKILL信号给进程组中的所有进程强制终止它们。 Process模式systemd只发送SIGTERM信号给主进程等待一段时间让其正常终止。如果主进程在超时时间内未终止systemd会发送SIGKILL信号给主进程强制终止它。与服务相关的其他进程将不受影响。 通过设置KillModemixed可以在终止服务时先尝试优雅地终止与服务相关的所有进程然后再强制终止仍未终止的进程。这有助于确保服务的完全终止。 KillSignalSIGINT 是 systemd unit 文件中的一个选项用于指定在终止服务时使用的信号。 SIGINT 是 POSIX 标准中定义的一个信号用于通知进程中断的信号。当进程接收到 SIGINT 信号时它会收到一个中断请求通常用于请求进程优雅地退出。通过设置 KillSignalSIGINTsystemd 会在终止服务时向进程发送 SIGINT 信号。进程可以响应该信号并做出相应的处理例如释放资源、保存数据等。如果进程在一定时间内没有对 SIGINT 信号做出响应则 system 会尝试使用其他信号终止该进程。 需要注意的是默认情况下systemd 会使用 SIGTERM 信号终止服务进程。但是如果你想要使用 SIGINT 信号作为终止信号可以通过设置 KillSignalSIGINT 来覆盖默认设置。 总之通过设置 KillSignalSIGINT可以让 systemd 在终止服务时使用 SIGINT 信号使进程有机会优雅地处理退出操作。这可以帮助确保服务的正确终止 剩下的这个部分 在 systemd unit 文件中TimeoutSec0 是一个选项用于指定服务的运行超时时间。将 TimeoutSec 设置为 0 表示禁用超时限制即服务可以无限期地运行。 在 systemd unit 文件中TimeoutStartSec0 是一个选项用于指定服务的启动超时时间。将 TimeoutStartSec 设置为 0 表示禁用启动超时限制即系统将不会对服务的启动操作设置时间限制。 在 systemd unit 文件中TimeoutStopSec1h 是一个选项用于指定服务的停止超时时间。将 TimeoutStopSec 设置为 1h 表示服务的停止操作限时 1 小时。 在 systemd unit 文件中WantedBymulti-user.target 是一个选项用于指定服务所属的 target。 systemd 的 target 是一组相关的单元的集合可以作为系统的一个运行级别来理解。multi-user.target 是一个默认的 systemd target代表了多用户模式的运行级别。其中/usr/lib/systemd/system/ 目录是存放系统服务单元文件的位置. 剩下的就是将服务的文件放到对应的目录这里以CENTOS 为例后续有机会我们在那 unbantu 为例一次。注意权限的设定。 sudo systemctl enable postgresql-15 最后我们在将postgresql服务项设置为自启动即可此时你的系统可以通过如下的命令来控制POSTGRESQL [rootpg15b system]# sudo systemctl start postgresql-15 [rootpg15b system]# sudo systemctl stop postgresql-15 [rootpg15b system]# sudo systemctl restart postgresql-15