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.pswp.cn/news/39066.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39066.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39066.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OpenSSH 遠程升級到 9.4p1

OpenSSH 遠程升級到 9.4p1 文章目錄 OpenSSH 遠程升級到 9.4p1背景升級前提1. 升級 OpenSSL2. 安裝并啟用Telnet 升級OpenSSH 背景 最近的護網行動,被查出來了好幾個關于OpenSSH 的漏洞。這是因為服務器系統安裝后,直接使用了系統自帶版本的OpenSSH &am…

2023-08-15 linux mipi 屏幕調試:有一個屏幕開機時候不顯示,開機后按power 按鍵休眠喚醒就可以顯示。原因是reset gpio 被復用

一、現象:今天更新了一個新版本的buildroot linux sdk ,調試兩個mipi 屏幕,這兩個屏幕之前在其他的sdk都調好了的,所有直接把配置搬過來。但是有一個屏幕可以正常顯示,有一個屏幕開機時候不顯示,開機后按po…

CentOS防火墻操作:開啟端口、開啟、關閉、配置

一、基本使用 啟動: systemctl start firewalld 關閉: systemctl stop firewalld 查看狀態: systemctl status firewalld 開機禁用 : systemctl disable firewalld 開機啟用 : systemctl enable firewalld systemctl是…

angular注入方法providers

在Angular中有很多方式可以將服務類注冊到注入器中: Injectable 元數據中的providedIn屬性 NgModule 元數據中的 providers屬性 Component 元數據中的 providers屬性 創建一個文件名叫名 hero.service.ts叫 hero 的服務 hero.service.ts import { Injectable } from angular…

C語言,結構體,結構體大小,

1、結構體: 用于存儲不同數據類型的多個相關變量,從而形成一個具有獨立性的組合數據類型。 結構體的聲明: struct 結構體類型名{ 數據類型 成員1; 數據類型 成員2; 數據類型 成員3; ……… }&#xff1…

轉行軟件測試四個月學習,第一次面試經過分享

我是去年上半年從銷售行業轉行到測試的,從銷售公司辭職之后選擇去培訓班培訓軟件測試,經歷了四個月左右的培訓,在培訓班結課前兩周就開始投簡歷了,在結課的時候順利拿到了offer。在新的公司從事軟件測試工作已經將近半年有余&…

深信服數據中心管理系統 XXE漏洞復現

0x01 產品簡介 深信服數據中心管理系統DC為AC的外置數據中心,主要用于海量日志數據的異地擴展備份管理,多條件組合的高效查詢,統計和趨勢報表生成,設備運行狀態監控等功能。 0x02 漏洞概述 深信服數據中心管理系統DC存在XML外部實…

WPS-0DAY-20230809的分析和利用復現

WPS-0DAY-20230809的分析和初步復現 一、漏洞學習1、本地復現環境過程 2、代碼解析1.htmlexp.py 3、通過修改shellcode拿shell曲折的學習msf生成sc 二、疑點1、問題2、我的測試測試方法測試結果 一、漏洞學習 強調:以下內容僅供學習和測試,一切行為均在…

Keil開發STM32單片機項目的三種方式

STM32單片機相比51單片機,內部結構復雜很多,因此直接對底層寄存器編碼,相對復雜,這個需要我們了解芯片手冊,對于復雜項目,這些操作可能需要反復編寫,因此出現了標準庫的方式,對寄存器…

ES中倒排索引機制

在ES的倒排索引機制中有四個重要的名詞:Term、Term Dictionary、Term Index、Posting List。 Term(詞條):詞條是索引里面最小的存儲和查詢單元。一段文本經過分析器分析以后就會輸出一串詞條。一般來說英文語境中詞條是一個單詞&a…

日期時間常用功能和函數

1 time 模塊 time 模塊提供了很多與時間相關的類和函數,下面我們介紹一些常用的。 1.1 struct_time 類 time 模塊的 struct_time 類代表一個時間對象,可以通過索引和屬性名訪問值。對應關系如下所示: 索引屬性值0tm_year(年&a…

Docker容器與虛擬化技術:Docker資源控制、數據管理

目錄 一、理論 1.資源控制 2.Docker數據管理 二、實驗 1.Docker資源控制 2.Docker數據管理 三、問題 1.docker容器故障導致大量日志集滿,造成磁盤空間滿 2、當日志占滿之后如何處理 四、總結 一、理論 1.資源控制 (1) CPU 資源控制 cgroups&#xff0…

Java Vue Uniapp MES生產執行管理系統

本MES系統是一款B/S結構、通用的生產執行管理系統,功能強大! 系統基于多年離散智造行業的業務經驗組建,主要目的是為國內離散制造業的中小企業提供一個專業化、通用性、低成本的MES系統解決方案。 聯系作者獲取

Linux(進程控制)

進程控制 進程創建fork函數初識fork函數返回值寫時拷貝fork常規用法fork調用失敗的原因 進程終止進程退出碼進程常見退出方法 進程等待進程等待必要性獲取子進程status進程等待的方法 阻塞等待與非阻塞等待阻塞等待非阻塞等待 進程替換替換原理替換函數函數解釋命名理解 做一個…

re學習(32)【綠城杯2021】babyvxworks(淺談花指令)

鏈接:https://pan.baidu.com/s/1msA5EY_7hoYGBEema7nWwA 提取碼:b9xf wp:首先找不到main函數,然后尋找特殊字符串, 交叉引用 反匯編 主函數在sub_3D9當中,但是IDA分析錯了 分析錯誤后,刪除函數 創建函數 操…

【Linux】多線程1——線程概念與線程控制

文章目錄 1. 線程概念什么是線程Linux中的線程線程的優點線程的缺點線程的獨立資源和共享資源 2. 線程控制Linux的pthread庫用戶級線程 📝 個人主頁 :超人不會飛)📑 本文收錄專欄:《Linux》💭 如果本文對您有幫助&…

無腦入門pytorch系列(三)—— nn.Linear

本系列教程適用于沒有任何pytorch的同學(簡單的python語法還是要的),從代碼的表層出發挖掘代碼的深層含義,理解具體的意思和內涵。pytorch的很多函數看著非常簡單,但是其中包含了很多內容,不了解其中的意思…

SpringBoot復習:(46)全局的bean懶加載是怎么實現的?

在application.properties中配置: spring.main.lazy-initializationtrue在運行SpringApplication的run方法時,代碼如下: 其中調用了prepareContext,prepareContext代碼如下: 當在配置文件中配置了spring.main.lazy-initializat…

JavaScript實現在線Excel的附件上傳與下載

摘要:本文由葡萄城技術團隊于CSDN原創并首發。轉載請注明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。 前言 在本地使用Excel時,經常會有需要在Excel中添加一些附件文件的需求&am…

Clickhouse基于文件復制寫入

背景 目前clickhouse社區對于數據的寫入主要基于文件本地表、分布式表方式為主,但缺乏大批量快速寫入場景下的數據寫入方式,本文提供了一種基于clickhouse local 客戶端工具分布式處理hdfs數據表文件,并將clickhouse以文件復制的方式完成寫入…