服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Solaris - Postgresql 数据库控制解析(一)

Postgresql 数据库控制解析(一)

2023-05-08 22:02未知服务器之家 Solaris

前面我们通过“探索postgresql数据库(一)”和“探索postgresql数据库(二)”基本了解了postgresql数据库。接下来本文开始介绍下数据库控制(server control)。。 一、手动开启数据库(Starting the database server manually) 默认postgresql会随

Postgresql 数据库控制解析(一)

前面我们通过“探索postgresql数据库(一)”和“探索postgresql数据库(二)”基本了解了postgresql数据库。接下来本文开始介绍下数据库控制(server control)。。

一、手动开启数据库(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
----------------
 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)

五、快速重启数据库(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\';

西部数码(west.cn)是经工信部审批,持有ISP、云牌照、IDC、CDN全业务资质的正规老牌云服务商,自成立至今20余年专注于域名注册虚拟主机云服务器企业邮箱、企业建站等互联网基础服务!
公司自研的云计算平台,以便捷高效、超高性价比、超预期售后等优势占领市场,稳居中国接入服务商排名前三,为中国超过50万网站提供了高速、稳定的托管服务!先后获评中国高新技术企业、中国优秀云计算服务商、全国十佳IDC企业、中国最受欢迎的云服务商等称号!
目前,西部数码高性能云服务器正在进行特价促销,最低仅需48元!
https://www.west.cn/cloudhost/

延伸 · 阅读

精彩推荐