1. 程式人生 > 資料庫 >postgresql 啟動與停止操作

postgresql 啟動與停止操作

啟動和停止資料庫伺服器

service 方式

service postgresql-10 start
service postgresql-10 stop
service postgresql-10 status

pg_ctl 方式

pg_ctl start -D [ data 所在路徑 ]
pg_ctl stop -D [ data 所在路徑 ]

三種形式:-m 指定模式

smart 模式:會等待活動的事務提交結束,並等待客戶端主動斷開連線之後關閉資料庫服務

fast 模式:會回滾所有的活動的事務,並強制斷開客戶端的連線然後關閉資料庫(預設就是使用fast 相當於Oracle 中的 immediate模式關閉)

immediate 模式: 會立即終止所有伺服器程序,當下一次資料庫啟動的時候會首先進入恢復狀態( 相當於使用 kill 工具殺死程序[此方式不會乾淨的關閉資料庫且會造成資料丟失] )

pg_ctl status -D [ data 所在路徑 ]

使用 postmaster postgres 程式啟動資料庫

/usr/pgpsql-10/bin/postgres -D [ data 所在路徑 ]
kill -sigterm `head -1 /usr/pgpsql-10/data/postmaster.pid`

如果要在作業系統啟動時就啟動PG,可以在/etc/rc.d/rc.local 檔案中加以下語句:

/usr/pgsql-10/bin/pg_ctl start -l /usr/pgsql-10/log/pg_server.log -D/usr/pgsql-10/data

補充:postgresql 服務無法啟動,日誌中報如下錯誤

1、postgresql 服務無法啟動,日誌中報如下錯誤,磁碟空間足夠。

無法找到來自源 PostgreSQL 的事件 ID 0 的描述。本地計算機上未安裝引發此事件的元件,或者安裝已損壞。可以安裝或修復本地計算機上的元件。

1、使用pg_controldata 查詢 nextoID 和 nextXID

2、重置事物日誌

pg_resetxlog -o nextOID -x NextXID -f pgdata的目錄

重啟資料庫即可啟動 ,優麒麟重啟資料庫: service postgresql restart

C:\ParkServer\pgsql\bin>pg_controldata.exe –help pg_controldata 

顯示 PostgreSQL 資料庫簇控制資訊.

使用方法:

選項: [-D] DATADIR 資料目錄 -V,–version 輸出版本資訊,然後退出

?,–help 顯示幫助資訊,然後退出

如果沒有指定資料目錄(DATADIR),將使用 環境變數PGDATA.

報告錯誤至 [email protected].

C:\ParkServer\pgsql\bin>pg_controldata.exe -D c:\ParkServer\pgsql\data

備註:

cd /usr/lib/postgresql/9.5/bin 下有pg_controldata pg_resetxlog

locate pg_controldata 可以全系統搜尋

sudo su postgres 才能訪問 /var/lib/postgresql/9.5/main

/etc/postgresql/9.5/main 下檢視postgresql.conf 檔案data目錄

cd /var/log/postgresql 可以檢視資料庫的日誌

tail -f /var/log/syslog
 Insecure directory in $ENV{PATH} while running with -T switch at /usr/bin/pg_ctlcluster line 463.
 
echo $PATH

檢視所有路徑的許可權,許可權太大的,都要改小

chmod 755 /usr
chmod 755 /bin
chmod 755 /sbin
chmod 755 /snap
sudo service postgresql start

即可。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。