进阶数据库系列(二十六):PostgreSQL 数据库监控管理

前面介绍了 PostgreSQL 数据库备份恢复数据目录同步工具 pg_rewind、数据库作业调度工具、性能优化日志与日常巡检运维管理等相关的知识点,今天我将详细的为大家介绍 PostgreSQL 数据库监控管理相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发支持一波!!!

服务器配置

服务器配置的文件

在数据库集群中,有3个配置文件,分别是:postgresql.confpg_hba.confpg_ident.conf。其中postgresql.conf为服务器主要的配置文件,pg_hba.conf是客户端认证配置文件,pg_ident.conf用来配置哪些操作系统用户可以映射为数据库用户。

连接与认证

参考文章:

资源消耗

服务器的运行会消耗一定的资源,通过设置服务器的参数,可以提示服务器的性能。包括内存、自由空间映射、内核资源使用、基于开销的清理延迟和后端写进程。

自由空间映射用于跟踪数据库中未使用空间的位置。不在映射表里面的自由空间是不能重复使用的,通过合理地设置,可以提高磁盘的利用率。

在VACUUM和ANALYZE命令执行过程中,系统维护一个内部的记数器,跟踪所执行的各种I/O操作的开销。

在 PostgreSQL 中,有一个独立的服务器进程,叫做后端写进程,它唯一的功能就是发出写“脏”共享缓冲区的命令。这么做的目的是让持有用户查询的服务器进程应该很少或者几乎不等待写动作的发生,因为后端写进程会做这件事情。这样的安排同样也减少了检查点造成的性能下降。

预写式日志

预写式日志的设置主要包括对预写式日志的基本设置、检查点设置和归档设置等。

查询规划

在PostgreSQL中,查询优化器选择查询规划时,有时候并不是最优的方法。数据库管理员可以通过设置配置参数,强制优化器选择一个更好的查询规划。

错误报告和日志

数据库管理员也许想知道错误报告和日志记录在什么地方,什么时间开始记录的和记录了什么等等。

运行时统计

在 PostgreSQL 中,如果启用了统计搜集,那么生成的数据可以通过 pg_stat 和 pg_statio 系统视图查看服务器的统计信息。

自动清理

数据库管理员可以通过设置自动清理的缺省行为,从而提高工作效率。

客户端连接缺省

数据库管理员可以设置客户端连接时的语句行为、区域和格式化等。

锁管理

在数据库系统运行的过程中,会产生各种各样的锁。管理员可以通过设置锁管理的相关参数,从而提高服务器的高可用性。

版本和平台兼容性

PostgreSQL有很多版本,管理员可以设置各个版本之间兼容性。另外,PostgreSQL可以在不同的平台上安装,管理员可以设置各个平台之间兼容性更多关于 PostgreSQL 系列的学习文章,请参阅:PostgreSQL 数据库,本系列持续更新中。

监控数据库的活动

配置统计收集器

PostgreSQL的统计收集器是一个支持收集和汇报服务器活跃性信息的子系统。目前,这个收集器可以给出对表和索引的访问计数,包括磁盘块的数量和独立行的项。PostgreSQL 还可以判断当前其它服务器进程正在执行的命令是什么。这个特性独立于统计收集器子系统,可以单独地被启用或禁用。

因为统计收集给查询处理增加了一些开销,所以可以启用或禁用统计收集。这是由配置参数控制的,通常在 postgresql.conf 里设置。

查看收集到的统计信息

PostgreSQL提供了预定义的视图用于显示统计收集的结果。

在使用统计观察当前系统活跃性的时候,必须意识到这些信息并不是实时更新的。每个独立的服务器进程只是在准备进入空闲状态的时候才向收集器传送新的块和行访问计数;因此正在处理的查询或者事务并不影响显示出来的总数。

另外一个需要着重指出的是,在请求服务器进程显示任何这些统计信息的时候,它首先抓取收集器进程发出的最新报 告,然后就拿这些数据作为所有统计视图和函数的快照,直到它当前的事务结束。因此统计信息在当前事务的持续期间内不会改变。

另外,可以使用底层的统计函数制作自定义的视图。这些底层统计访问函数和标准视图里使用的是一样的。

监控磁盘的使用

监控磁盘的使用量
  • 使用磁盘空间函数

  • 使用 VACUUM 信息

VACUUM 命令回收已删除行占据的存储空间。在 PostgreSQL 的操作中,那些已经被删除或者更新过的行,并没有从它们所属的表中物理删除,这些数据在完成 VACUUM 之前它们仍然存在。因此有必要周期地运行 VACUUM,特别是在经常更新的表上。VACUUM 命令可以选择分析一个特定的数据表,如果没有指定数据表,VACUUM处理当前数据库里每个表。具体语法格式如下。

VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]
磁盘满导致的失效

一个数据库管理员最重要的磁盘监控任务就是确保磁盘不会写满。磁盘写满可能不会导致数据的丢失,但它肯定会导致系统进一步使用的问题。如果WAL文件也在同一个磁盘上(缺省配置就是这样),则会发生数据库服务器恐慌,并且停止运行。如果不能通过删除其它东西来释放磁盘空间,那么可以通过使用表空间把一些数据库文件移动到其它文件系统上去。

PostgreSQL 里的表空间允许数据库管理员在文件系统里定义那些代表数据库对象的文件存放位置。一旦创建了表空间,那么就可以在创建数据库对象的时候引用它。

通过使用表空间,管理员可以控制一个 PostgreSQL 安装的磁盘布局。更多关于 PostgreSQL 系列的学习文章,请参阅:PostgreSQL 数据库,本系列持续更新中。

下面介绍一下常用的监控指标。最关键的一些数据库健康指标,趋势监测。

总连接数

主要看趋势,直接与业务量挂钩,如果连接数接近max_connection水位,需要注意。同时连接数应与数据库主机可用内存挂钩,每个连接保守估计10MB内存开销(这里还未计算SYSCACHE,RELCACHE)。

select count(*) from pg_stat_activity ;

演示,打印每秒的总连接数。

psql  
  
select count(*) from pg_stat_activity ;  
  
\watch 1

N秒内新建的连接数

主要看趋势,直接与业务量挂钩,  如果突发大量连接,可能是新增了业务服务器,或者是性能抖动过导致业务大量新建连接满足并发的请求。突然连接数下降,可能原因是业务服务器突然释放连接,或者业务服务器挂了。

select count(*) from pg_stat_activity where now()-backend_start > '? second';

演示,打印每秒的5秒内新建连接数。

psql  
  
select count(*) from pg_stat_activity where now()-backend_start > '5 second';  
  
\watch 1

SQL活跃统计

1、需要加载 pg_stat_statements,如果需要跟踪IO时间,需要开启track_io_timing

同时需要注意,由于 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值