1、手動開啓數據庫(Starting the database server manually) 默認postgresql會隨着系統自動啓動,不過有時候設置改動可能須要手動中止或者啓動數據庫。 首先須要區別server和service兩個概念。server指的是database server和他的一些進程,service指的是操做系統中被server包裝起來的服務。server本質上能夠在不一樣平臺上以相同的方式工做,可是service就會由於各個操做系統不一樣而不一樣。 在全部操做系統平臺,都有命令來啓動postgresql server,如:
UBUNTU/DEBIAN pg_ctlcluster 9.0 main reload RED HAT/FEDORA pg_ctl -D /var/lib/pgsql/data start SOLARIS pg_ctl -D /var/lib/pgsql/data start MAC OS pg_ctl -D /var/lib/pgsql/data start FREEBSD pg_ctl -D /var/lib/pgsql/data start
在有些平臺,也能夠用這些命令啓動。
RED HAT/FEDORA service postgresql start WINDOWS net start postgres
2、安全快速中止數據庫(Stopping the server safely and quickly) 能夠用如下命令快速中止數據庫:
pg_ctl -D datadir -m fast stop 若是想快速中止,就必定要加-m fast這個參數,由於默認postgresql是須要等全部用戶結束纔會關閉的。使用fast快速中止命令,全部用戶在進行的操做都會終止。在關閉數據庫時,postgresql和其餘如Oracle, DB2, 或者SQLServer關係型數據庫的區別是postgresql的事務回滾很是快,而其餘數據庫關閉可能須要很長時間。
4、從新加載數據庫配置文件(Reloading the server configuration files) postgresql配置文件中的一些參數須要從新加載纔會生效。如下是各個操做系統平臺從新加載的命令:
UBUNTU/DEBIAN pg_ctlcluster 9.0 main reload RED HAT/FEDORA service postgresql reload 或pg_ctl -D /var/lib/pgsql/data reload SOLARIS pg_ctl -D /var/lib/pgsql/data reload MAC OS pg_ctl -D /var/lib/pgsql/data reload FREEBSD pg_ctl -D /var/lib/pgsql/data reload
咱們也能夠在鏈接postgresql的時候從新加載配置文件,不過前提是你登錄的是超級用戶:
postgres=# select pg_reload_conf(); pg_reload_conf ---------------- t 在pg_settings這個系統表中有一個context字段,若是字段值是」sighup」,那麼就必需要reload。如下列出在數據庫配置中可能須要改變的參數:
forummon=# select name,setting,unit,(source='default') as is_default from pg_settings where context ='sighup' and (name like '%delay' or name like '%timeout') and setting !='0' ; name | setting | unit | is_default ------------------------------+---------+------+------------ authentication_timeout | 60 | s | t autovacuum_vacuum_cost_delay | 20 | ms | t bgwriter_delay | 200 | ms | t checkpoint_timeout | 300 | s | t max_standby_archive_delay | 30000 | ms | t max_standby_streaming_delay | 30000 | ms | t wal_receiver_timeout | 60000 | ms | t wal_sender_timeout | 60000 | ms | t wal_writer_delay | 200 | ms | t (9 rows) 5、快速重啓數據庫(Restarting the server quickly) 有些數據庫配置的修改必需要求重啓數據庫,如何快速重啓就顯得特別重要。固然重啓最好是在數據庫壓力很小的時候。 基礎快速重啓命令:
pg_ctl -D datadir restart -m fast 重啓表面上看是先中止,在啓動,很簡單的一個步驟。在大多數狀況下,這個確實很簡單。
6、防止新連接(Preventing new connections) 在某些緊急狀況下,dba們可能須要徹底鎖定數據庫,或者靜止特定的人鏈接。 一下是防止新連接的幾個方法: 一、暫停或者恢復會話池;後面介紹 二、關閉數據庫,不推薦這樣作; 三、設置特定數據庫的鏈接數爲0; ALTER DATABASE foo_db CONNECTION LIMIT 0; 這個能夠限制除了超級用戶外的其餘用戶。 四、設置特定用戶的鏈接數爲0 ALTER USER foo CONNECTION LIMIT 0; 這個能夠限制除了超級用戶外的其餘用戶。 五、修改host-based authentication (HBA)文件,從新加載數據庫 先備份下pg_hba.conf文件,修改pg_hba.conf文件。 ###以下兩行將會禁止全部用戶鏈接數據庫,包括超級用戶:
# TYPE DATABASE USER CIDR-ADDRESS METHOD local all all reject host all all 0.0.0.0/0 reject ###若是須要讓postgres這個超級用戶鏈接,能夠修改爲以下設置: # TYPE DATABASE USER CIDR-ADDRESS METHOD local all postgres ident local all all reject host all all 0.0.0.0/0 reject d.從新加載數據庫
7、限制每一個鏈接用戶只能打開一個session(Restricting users to just one session each) 若是須要控制服務器資源,你可能會但願一個用戶只能同時打開一個session鏈接。固然這個也能夠用來限制用戶,這個上面已經有介紹。如下是基本命令:
postgres=# ALTER ROLE fred CONNECTION LIMIT 1; 須要取消限制能夠把值設爲-1。 查詢用戶連接限制
SELECT rolconnlimit FROM pg_roles WHERE rolname = 'postgres'; 查看用戶當前鏈接數
SELECT count(*) FROM pg_stat_activity WHERE usename = 'postgres';