postgresql 實(shí)現(xiàn)啟動(dòng)、狀態(tài)查看、關(guān)閉
利用psql啟動(dòng)數(shù)據(jù)庫
[postgres@highgo ~]$ pg_ctl start
查看系統(tǒng)中運(yùn)行的postgres進(jìn)程
#ps -ef | grep postgres
連接postgresql數(shù)據(jù)庫
#psql -h 127.0.0.1 -d postgres -U postgres
停止postgresql數(shù)據(jù)庫實(shí)例
#pg_ctl stop #ps -ef | grep postgres
啟動(dòng)服務(wù)器最簡單的方法是像下面這樣:
$ postgres -D /usr/local/pgsql/data
最好在后臺(tái)啟動(dòng)postgres,使用下面的 Unix shell 語法:
$ postgres -D /usr/local/pgsql/data >logfile 2>&1 &
要做一次快速關(guān)閉:
$ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`
如果啟動(dòng)失敗提示一下信息
LOG: could not bind IPv4 socket: Address already in use HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry. FATAL: could not create TCP/IP listen socket
解決方法:
查看端口在用
netstat -lanp|grep 5432 ps -ef|grep postgres 498 673 1 0 10:50 ? 00:00:00/usr/bin/postgres -D /var/lib/cloudera-scm-server-db/data
kill進(jìn)程
kill -9 673
重啟啟動(dòng)服務(wù)
service start service status
補(bǔ)充:PostgreSQL 四種進(jìn)程啟動(dòng)方式
Postgres在啟動(dòng)后,可分別以一下四種形式啟動(dòng)進(jìn)程:
1、SubPostmasterMain
2、AuxiliaryProcessMain
3、PostgresMain
4、PostmasterMain
SubPostmasterMain(–fork)
指明由postmaster派生
設(shè)置進(jìn)程ID
初始化內(nèi)存池
處理輸入?yún)?shù)
運(yùn)行相應(yīng)的backend或子進(jìn)程
–forkbackend或–forkboot
1) 關(guān)聯(lián)到共享內(nèi)存
2) 初始化共享內(nèi)存訪問(UsedShmemSegAddr)
3) 初始化AuxiliaryProcess
4) 創(chuàng)建共享內(nèi)存和信號(hào)量
5) 啟動(dòng)AuxiliaryProcessMain
–forkavlauncher
1) 關(guān)聯(lián)到共享內(nèi)存
2) AutovacuumLauncherIAm()
3) 初始化共享內(nèi)存訪問(UsedShmemSegAddr)
4) 初始化AuxiliaryProcess
5) 創(chuàng)建共享內(nèi)存和信號(hào)量
6) 啟動(dòng)AutoVacLauncherMain
–forkavworker
1) 關(guān)聯(lián)到共享內(nèi)存
2) AutovacuumLauncherIAm()
3) 初始化共享內(nèi)存訪問(UsedShmemSegAddr)
4) 初始化AuxiliaryProcess
5) 創(chuàng)建共享內(nèi)存和信號(hào)量
6) 啟動(dòng)AutoVacWorkerMain
–forkarch
1) 啟動(dòng)PgArchiverMain
–forkcol
1) 啟動(dòng)PgstatCollectorMain
–forklog
1) 啟動(dòng)SysLoggerMain
AuxiliaryProcessMain(–boot)
設(shè)置進(jìn)程ID
初始化內(nèi)存池
設(shè)置路徑、時(shí)間等變量
初始化GUC選項(xiàng),處理輸入?yún)?shù)
以BootstrapProcessing模式初始化一個(gè)backend:ipc, lock, file, storage, buffer
設(shè)置信號(hào)處理句柄
以NormalProcessing狀態(tài)針對(duì)不同auxType分別進(jìn)行以下處理
a) CheckerProcess
1) 啟動(dòng)CheckerModeMain
b) BooststrapProcess
1) BootstrapXLOG
2) 啟動(dòng)XLOG
3) 啟動(dòng)BootstrapModeMain
c) StartupProcess
1) 啟動(dòng)XLOG
2) 加載FreeSpaceMap
3) BuildFlatFiles(false)
d) BgWriterProcess
1) 初始化XLOG訪問
2) 啟動(dòng)BackgroundWriterMain
e) WalWriterProcess
1) 初始化XLOG訪問
2) 啟動(dòng)WalWriterMain
PostgresMain(–single)
設(shè)置進(jìn)程ID
初始化內(nèi)存池
設(shè)置路徑、時(shí)間等變量
初始化GUC選項(xiàng),處理輸入?yún)?shù)和其他startup packet中的參數(shù)
設(shè)置信號(hào)處理句柄
初始化一個(gè)backend(無論它是否由postmaster生成):ipc, lock, file, storage, buffer
啟動(dòng)XLOG
加載FreeSpaceMap
初始化進(jìn)程
初始化表緩存和系統(tǒng)目錄訪問
處理預(yù)加載的庫
轉(zhuǎn)到MessageContext內(nèi)存池
進(jìn)入查詢處理主循環(huán)
PostmasterMain
設(shè)置進(jìn)程ID
初始化內(nèi)存池
設(shè)置路徑、時(shí)間等變量
初始化GUC選項(xiàng),處理輸入?yún)?shù)并載入hba和ident
設(shè)置共享內(nèi)存和信號(hào)量,初始化共享數(shù)據(jù)結(jié)構(gòu)
設(shè)置信號(hào)處理句柄
啟動(dòng)守護(hù)進(jìn)程:
(1) syslogger:收集其他其他進(jìn)程的日志輸出,寫入到文件
(2) stats daemon:通過UDP獲取各backend的運(yùn)行時(shí)統(tǒng)計(jì)信息
(3) autovacuum launcher:定期進(jìn)行表空間的自動(dòng)清理
由參數(shù)forkboot啟動(dòng)一個(gè)backend
綁定到TCP socket,監(jiān)聽連接請(qǐng)求
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Postgresql 實(shí)現(xiàn)查詢一個(gè)表/所有表的所有列名
這篇文章主要介紹了Postgresql 實(shí)現(xiàn)查詢一個(gè)表/所有表的所有列名,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12postgresql 存儲(chǔ)函數(shù)調(diào)用變量的3種方法小結(jié)
這篇文章主要介紹了postgresql 存儲(chǔ)函數(shù)調(diào)用變量的3種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01Postgresql數(shù)據(jù)庫SQL字段拼接方法
Postgresql里面內(nèi)置了很多的實(shí)用函數(shù),下面這篇文章主要給大家介紹了關(guān)于Postgresql數(shù)據(jù)庫SQL字段拼接方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11常用?PostgreSQL?數(shù)據(jù)恢復(fù)方案及使用示例
這篇文章主要介紹了常用?PostgreSQL?數(shù)據(jù)恢復(fù)方案概覽,數(shù)據(jù)丟失通常是由?DDL?與?DML?兩種操作引起,由于在操作系統(tǒng)中表文件已經(jīng)不存在,所以只能采用恢復(fù)磁盤的方法進(jìn)行數(shù)據(jù)恢復(fù),需要的朋友可以參考下2022-01-01在 PostgreSQL中解決圖片二進(jìn)制數(shù)據(jù)由于bytea_output參數(shù)問題導(dǎo)致顯示不正常的問題
無論 bytea_output 參數(shù)設(shè)置為 hex 還是 escape,你都可以通過 C# 訪問 PostgreSQL 數(shù)據(jù)庫,并且正常獲取并顯示圖片,本篇隨筆介紹這個(gè)問題的處理過程,感興趣的朋友跟隨小編一起看看吧2024-03-03解決sqoop從postgresql拉數(shù)據(jù),報(bào)錯(cuò)TCP/IP連接的問題
這篇文章主要介紹了解決sqoop從postgresql拉數(shù)據(jù),報(bào)錯(cuò)TCP/IP連接的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12PGSQL 實(shí)現(xiàn)把字符串轉(zhuǎn)換成double類型(to_number())
這篇文章主要介紹了PGSQL 實(shí)現(xiàn)把字符串轉(zhuǎn)換成double類型(to_number()),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12