Amazon RDS for PostgreSQL 的数据库管理员常见任务 - Amazon Relational Database Service

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