开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共860人左右 1 + 2 + 3)新人会进入3群
从ORACLE TO POSTGRESQL 有一个对于ORACLE DBA 不好的体验,就是失去了AWR ,AWR 对于ORACLE DBA 可以说是一个武士手里的重剑。转移到了POSTGRESQL 后,问题就来了,ORACLE DBA 就piss me off. 咋办,方法很多,今天就通过 pg_gather 来使用看看能不能解决部分的问题。
这个项目主要有两个仅使用 SQL 脚本的用户脚本。其中一个(gather.sql)用于从 PostgreSQL 数据库中收集性能和配置数据。另一个 SQL 脚本(gather_report.sql)用于分析和生成详细的 HTML 报告。是的,完全仅使用 SQL!利用 PostgreSQL 命令行实用程序 psql 的内置功能。
那么这个工具相对于其他的工具的优点有那些
开放安全:简单、透明、完全可审计的代码。仅使用SQL数据收集脚本确保完全透明,了解收集、传输和分析的所有内容。避免使用任何控制结构的程序,以提高数据收集的可读性和可审计性。这是将数据收集和分析分开的一个原因。
没有可执行文件:在数据库主机上不需要部署可执行文件。
在安全环境中使用可执行文件存在风险。在许多高度安全的环境中可能无法接受。pg_gather仅需要标准的PostgreSQL命令行实用程序psql。不需要其他库或可执行文件。
认证不可知:任何由PostgreSQL支持的身份验证机制都适用于pg_gather的数据收集,因为它使用标准的psql。
任何操作系统:Linux 32 / 64位、SunSolaris、Apple macOS、Microsoft Windows。它适用于psql可用的任何地方。这确保了最大的可移植性。(Windows用户请参阅下面的注释部分)
架构不可知:x86-64位、ARM、Sparc、Power等。它在psql可用的任何地方都可以工作。
可审计的、可选的数据遮蔽:
pg_gather以制表符分隔值(TSV)格式的文本文件收集数据。这使得在移交或传输数据进行分析之前审查和审计信息成为可能。还可以通过简单的步骤实现进一步的遮蔽或修剪。
任何云/容器/k8s:适用于AWS RDS、Google Cloud SQL、On-Prim等。
(请参见注释部分中的Heroku、AWS Aurora、Docker和K8s特定注释)
零错误设计:
即使数据收集是部分的或由于权限问题、表/视图不可用或其他任何原因造成了故障,它仍可以成功生成具有可用信息的报告。
低开销的数据收集:
数据收集本身就是通过设计与数据分析分开的。收集的数据可以在独立的系统上进行分析,以便分析查询的执行不会对关键系统造成不利影响。数据收集的开销在大多数情况下可以忽略不计。
小型的单文件数据转储:
尽可能避免收集数据中的冗余,以生成可能最小的文件,可以通过gzip进一步压缩为几个KB或MB,以便于传输和存储。
在分析完数据库后,给出HTML 格式的报告
这些图为产生的PG的分析报告,而这样的报告产生根本没有用到复杂的命令,而仅仅是运行了一些SQL 通过简单的命令来将PG 的信息进行获取。
而对我来说,更重要的部分是,这个东西对于云数据库是完全可以使用的,并不会因为是云的原因而让程序无法进行数据的收集。
整体的过程分为
1 数据的收集
通过PSQL 运行pg_gather 中中的SQL 将数据导出
此脚本执行可能需要20秒以上,因为其中包含了休眠/延迟时间。我们建议以特权用户(超级用户、rds_superuser等)或具有pg_monitor特权的某个帐户运行脚本。此输出文件包含性能和配置数据,供分析使用。
同时数据的收集也可以进行定时的收集,保证对于数据库不同时段的数据的收集产生对应不同时间段的报告,如果是定时的收集,官方建议对于数据库进行限定为 template1
psql -U postgres -d template1 -X -f /path/to/gather.sql > out.txt
2 数据的分析
数据的分析,实际上就是在PG的数据库中创建表,将导出的文本进行一个数据的导入。psql -f gather_schema.sql -f out.txt
3 产生报告
产生报告很简单,就是通过gather_report SQL将数据输出为html 格式的文件,达到可以方便检查报告的目的。实际上这个部分
psql -X -f gather_report.sql > GatherReport.html
实际上这个脚本是一非常好进行研究和后续扩展的部分,而且这个东西最大的有点是抛弃了与操作系统或数据库以外的部分进行信息收集的过程整体都是和我们的数据库进行数据的获取和信息的输出。