您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
三六零分类信息网 > 喀什分类信息网,免费分类信息发布

Postgresql数据库控制解析(一)

2026/6/7 18:55:46发布12次查看
postgresql数据库控制解析(一) 一、手动开启数据库(starting the database server manually) 默认postgresql会随着系统自动启动,不过有时候设置改动可能需要手动停止或者启动数据库。 首先需要区别server和service两个概念。server指的是database serve
postgresql数据库控制解析(一)
一、手动开启数据库(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
二、安全快速停止数据库(stopping the server safely and quickly) 
可以用以下命令快速停止数据库:
pg_ctl -d datadir -m fast stop 
如果想快速停止,就一定要加-m fast这个参数,因为默认postgresql是需要等所有用户结束才会关闭的。使用fast快速停止命令,所有用户在进行的操作都会终止。在关闭数据库时,postgresql和其他如oracle, db2, 或者sqlserver关系型数据库的区别是postgresql的事务回滚非常快,而其他数据库关闭可能需要很长时间。
三、紧急停止数据库(stopping the server in an emergency)
pg_ctl -d datadir stop -m immediate 
使用immediate模式和fast模式一样,都会强制中止所有用户的事务,关闭连接。不过immediate模式相当于数据库经历了崩溃,比如断电。下次重启时缓存的文件需要重建,数据库自己也需要对崩溃进行恢复。 
需要dba注意的是,oracle中的immediate模式相当于强制关闭数据库,postgresql和oracle这个是不一样的。
四、重新加载数据库配置文件(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 
---------------- 

在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) 
五、快速重启数据库(restarting the server quickly) 
有些数据库配置的修改必须要求重启数据库,如何快速重启就显得特别重要。当然重启最好是在数据库压力很小的时候。 
基础快速重启命令:
pg_ctl -d datadir restart -m fast 
重启表面上看是先停止,在启动,很简单的一个步骤。在大多数情况下,这个确实很简单。
六、防止新链接(preventing new connections) 
在某些紧急情况下,dba们可能需要完全锁定数据库,或者静止特定的人连接。 
一下是防止新链接的几个方法: 
1、暂停或者恢复会话池;后面介绍 
2、关闭数据库,不推荐这样做; 
3、设置特定数据库的连接数为0; 
alter database foo_db connection limit 0; 
这个可以限制除了超级用户外的其他用户。 
4、设置特定用户的连接数为0 
alter user foo connection limit 0; 
这个可以限制除了超级用户外的其他用户。 
5、修改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.重新加载数据库
七、限制每个连接用户只能打开一个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';
喀什分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product