Amazon RDS for PostgreSQL 的数据库管理员常见任务 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon RDS for PostgreSQL 的数据库管理员常见任务

数据管理员 (DBA) 在管理 Amazon RDS for PostgreSQL 数据库实例时执行各种任务。如果您是一个已经熟悉 PostgreSQL 的 DBA,那么您需要注意在硬件上运行 PostgreSQL 和 RDS for PostgreSQL 之间的一些重要区别。例如,由于它是托管服务,Amazon RDS 不允许对数据库实例进行 Shell 访问。这意味着您无法直接访问 pg_hba.conf 和其他配置文件。对于 RDS for PostgreSQL,通常对本地实例的 PostgreSQL 配置文件所做的更改是针对与 RDS for PostgreSQL 数据库实例关联的自定义数据库参数组做出的。有关更多信息,请参阅使用参数组

您也不能以与访问本地 PostgreSQL 实例相同的方式访问日志文件。要了解有关日志记录的更多信息,请参阅RDS for PostgreSQL 数据库日志文件

再例如,您无法访问 PostgreSQL superuser 账户。在 RDS for PostgreSQL 上,rds_superuser 角色是权限最高的角色,它在设置时被授予 postgres。无论您是熟悉使用本地 PostgreSQL 还是对 RDS for PostgreSQL 完全陌生,我们都建议您了解 rds_superuser 角色,以及如何使用角色、用户、组和权限。有关更多信息,请参阅了解 PostgreSQL 角色和权限

以下是 RDS for PostgreSQL 的一些数据库管理员常见任务。

使用 RDS for PostgreSQL 支持的日志记录机制

您可以设置多个参数、扩展和其他可配置项来记录 PostgreSQL 数据库实例中发生的活动。这些功能包括:

  • log_statement 参数可用于记录 PostgreSQL 数据库中的用户活动。要了解有关 RDS for PostgreSQL 日志记录以及如何监控日志的更多信息,请参阅 RDS for PostgreSQL 数据库日志文件

  • rds.force_admin_logging_level 参数记录数据库实例上的数据库中由 Amazon RDS 内部用户 (rdsadmin) 执行的操作。它将输出写入 PostgreSQL 错误日志。允许的值包括 disableddebug5debug4debug3debug2debug1infonoticewarningerror、日志、fatalpanic。默认值为 disabled

  • 可以设置 rds.force_autovacuum_logging_level 参数以捕获 PostgreSQL 错误日志中的各种 autovacuum 操作。有关更多信息,请参阅记录 autovacuum 和 vacuum 活动

  • 可以安装和配置 PostgreSQL Audit(pgAudit)扩展,以在会话级别或在对象级别捕获活动。有关更多信息,请参阅使用 pgAudit 记录数据库活动

  • log_fdw 扩展使您可以使用 SQL 访问数据库引擎日志。有关更多信息,请参阅使用 log_fdw 扩展通过 SQL 访问数据库日志

  • pg_stat_statements 库被指定为 RDS for PostgreSQL 版本 10 及更高版本中 shared_preload_libraries 参数的默认值。您可以使用该库分析正在运行的查询。确保在数据库参数组中设置 pg_stat_statements。有关使用此库提供的信息监控 RDS for PostgreSQL 数据库实例的更多信息,请参阅 RDS PostgreSQL 的 SQL 统计数据

  • log_hostname 参数将每个客户端连接的主机名捕获到日志中。对于 RDS for PostgreSQL 版本 12 及更高版本,原定设置情况下,此参数设置为 off。如果您将其开启,请务必监视会话连接时间。开启后,该服务使用域名系统(DNS)反向查找请求来获取进行连接的客户端的主机名并将其添加到 PostgreSQL 日志中。这在会话连接期间会产生明显的影响。我们建议您仅出于故障排除目的开启此参数。

一般来说,日志记录的目的是使数据库管理员能够监控、优化性能和进行故障排除。许多日志都会自动上载到 Amazon CloudWatch 或 Performance Insights。在这里,对这些日志进行排序和分组,从而为您的数据库实例提供完整指标。要了解有关 Amazon RDS 监控和指标的更多信息,请参阅 监控 Amazon RDS 实例中的指标

将用于日志分析的 pgBadger 与 PostgreSQL 结合使用

您可以使用日志分析器(如 pgBadger)分析 PostgreSQL 日志。pgBadger 文档声明 %l 模式(会话或进程的日志行)应为前缀的一部分。但如果将当前 RDS log_line_prefix 作为参数提供给 pgBadger,它应该仍生成报告。

例如,以下命令使用 pgBadger 正确设置日期为 2014-02-04 的 Amazon RDS for PostgreSQL 日志文件的格式。

./pgbadger -f stderr -p '%t:%r:%u@%d:[%p]:' postgresql.log.2014-02-04-00

使用 PGSnapper 监控 PostgreSQL

可以使用 PGSnapper 协助定期收集 Amazon RDS for PostgreSQL 性能相关的统计数据和指标。有关更多信息,请参阅使用 PGSnapper 监控 Amazon RDS for PostgreSQL 性能