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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CentOS下/etc 目錄詳解CentOS
- 8.var目錄下的檔案和目錄詳解
- 瀚高資料庫data目錄詳解資料庫
- 【PG結構】Postgresql資料庫資料目錄說明SQL資料庫
- AndroidSDK的目錄詳解Android
- Unity Assets目錄下的資料夾用途Unity
- Linux中/proc目錄下檔案詳解Linux
- Linux系統下各個目錄的作用詳解!Linux
- linux系統/var/log目錄下的資訊詳解Linux
- Linux 目錄詳解Linux
- linux目錄詳解Linux
- etc目錄詳解(轉)
- PostgreSQL 目錄結構SQL
- 瞭解MySQl資料庫目錄MySql資料庫
- mysql資料目錄下的常見檔案MySql
- Linux 只複製目錄,不復制目錄下的資料檔案Linux
- windows臨時目錄詳解Windows
- Tomcat的目錄結構詳解Tomcat
- Unity Assets目錄下的特殊資料夾名稱Unity
- PostgreSQL異常重啟postmaster.pid處理SQLAST
- [轉載] Linux 目錄詳解Linux
- LINUX系統目錄詳解Linux
- 批量打包一個資料夾下的多個目錄
- PostgreSQL的pg_log日誌目錄SQL
- PostgreSQL:原始碼目錄結構SQL原始碼
- linux /etc/rc.d/目錄的詳解Linux
- Linux建立目錄 mkdir 詳解(全)Linux
- wdcp修改mysql的資料目錄MySql
- .Net引用根目錄子資料夾下的dll檔案
- 將assets目錄下的資料庫檔案拷貝到當前應用程式下的files目錄下,並載入使用資料庫
- 業務資料目錄整合
- 好的資料目錄的基本特徵特徵
- JuiceFS 目錄配額功能設計詳解UI
- Linux 目錄與許可權詳解Linux
- Android原始碼目錄結構詳解Android原始碼
- Linux etc目錄配置檔案詳解Linux
- Linux中init.d目錄詳解Linux
- yii框架,掃描目錄下檔案入資料庫框架資料庫