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

即可。

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

推薦閱讀: