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';