PostgreSQL資料目錄下的postmaster.pid詳解
在我們啟動PostgreSQL資料庫的時候,偶爾會遇到如下的列印資訊,它提示我們鎖檔案 “postmaster.pid"存在,並讓我們檢查是否以”/opt/ysl_pg14/data"為資料目錄的已經啟動了postmaster程式。那麼這個 "postmaster.pid"究竟是做什麼的?以及它的內容是如何呢?
[xmaster@mogdb-kernel-0005 data]$ pg_ctl start -D /opt/ysl_pg14/data/ pg_ctl: another server might be running; trying to start server anyway waiting for server to start....2022-10-15 21:12:37.333 CST [178375] FATAL: lock file "postmaster.pid" already exists 2022-10-15 21:12:37.333 CST [178375] HINT: Is another postmaster (PID 178348) running in data directory "/opt/ysl_pg14/data"? stopped waiting pg_ctl: could not start server Examine the log output.
首先,我們看一下這個檔案裡的內容,"postmaster.pid"裡邊包含了8行內容
(1)178348: 代表Postgres主程式的PID
(2)/opt/ysl_pg14/data表示資料目錄
[xmaster@mogdb-kernel-0005 data]$ cat -n postmaster.pid 1 178348 2 /opt/ysl_pg14/data 3 1665839543 4 5432 5 /tmp 6 * 7 2362435 262155 8 ready
(3)1665839543代表postmaster檔案的建立時間
(4)5432是埠號
(5)/tmp是unix_socket_directories的目錄
(6)*是listen_addresses的值
(7)2362435 262155是共享記憶體地址段(shared memory segments)的key,shmid
0x00240c43轉化為10進位制是2362435
(8)ready代表主程式狀態.
postmaster.pid檔案只有在資料庫啟動的時候才生成,
[xmaster@mogdb-kernel-0005 data]$ pg_ctl stop waiting for server to shut down.... done server stopped [xmaster@mogdb-kernel-0005 data]$ cat -n postmaster.pid cat: postmaster.pid: No such file or directory [xmaster@mogdb-kernel-0005 data]$ pg_ctl start -D /opt/ysl_pg14/data/ waiting for server to start....2022-10-15 22:01:04.743 CST [182525] LOG: redirecting log output to logging collector process 2022-10-15 22:01:04.743 CST [182525] HINT: Future log output will appear in directory "log". done server started [xmaster@mogdb-kernel-0005 data]$ cat -n postmaster.pid 1 182525 2 /opt/ysl_pg14/data 3 1665842464 4 5432 5 /tmp 6 * 7 2362435 262156 8 ready
在src/backend/postmaster/postmaster.c的PostmasterMain()函式里呼叫了一個CreateDataDirLockFile()函式,函式里包含的DIRECTORY_LOCK_FILE其實就是"postmaster.pid “這個檔案。CreateDataDirLockFile()這個函式會在資料庫叢集所在目錄建立資料庫叢集的lock檔案"postmaster.pid”。這樣就能保證我們不會對同一個資料庫叢集"啟動兩次"。也就出現了我們開頭啟動資料庫時候列印的資訊。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990629/viewspace-2918605/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 8.var目錄下的檔案和目錄詳解
- 瀚高資料庫data目錄詳解資料庫
- AndroidSDK的目錄詳解Android
- 【PG結構】Postgresql資料庫資料目錄說明SQL資料庫
- Linux 目錄詳解Linux
- linux目錄詳解Linux
- Linux系統下各個目錄的作用詳解!Linux
- Linux 只複製目錄,不復制目錄下的資料檔案Linux
- PostgreSQL 目錄結構SQL
- windows臨時目錄詳解Windows
- Unity Assets目錄下的特殊資料夾名稱Unity
- PostgreSQL異常重啟postmaster.pid處理SQLAST
- Linux建立目錄 mkdir 詳解(全)Linux
- PostgreSQL:原始碼目錄結構SQL原始碼
- wdcp修改mysql的資料目錄MySql
- .Net引用根目錄子資料夾下的dll檔案
- 好的資料目錄的基本特徵特徵
- Linux CentOS7 系統目錄詳解LinuxCentOS
- JuiceFS 目錄配額功能設計詳解UI
- c# 刪除某個資料夾下所有空目錄,解決因刪除空目錄後上一組成空目錄沒有刪除的情況C#
- yii框架,掃描目錄下檔案入資料庫框架資料庫
- 大資料學習目錄大資料
- 【MySQL 資料庫】MySQL目錄MySql資料庫
- vue-cli 目錄結構詳細講解Vue
- Nginx目錄結構與配置檔案詳解Nginx
- linux將掛載在home目錄下的磁碟轉移到根目錄下Linux
- elasticsearch: 指定索引資料的儲存目錄Elasticsearch索引
- linux下的臨時目錄Linux
- MySQL 更改資料庫資料儲存目錄MySql資料庫
- 資料資產管理:資料目錄怎麼搞?
- 題解目錄
- docker如何遷移資料目錄Docker
- Android中讀取assets目錄下的檔案詳細介紹Android
- win10系統下顯示資料夾樹形目錄的方法Win10
- linux 統計當前目錄下檔案或者資料夾的數量Linux
- PostgreSQL DBA(193) - 資料傾斜下的HashJoinSQL
- 實時通訊系列目錄篇之SignalR詳解SignalR
- CDGA|資料資產目錄如何建設?