Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

PostgreSQL 数据库日志文件

RDS PostgreSQL 生成查询和错误日志。我们将 auto-vacuum info 和 rds_admin 操作写入错误日志。Postgres 还会将连接/断开连接/检查点记录到错误日志中。有关更多信息,请参阅 http://www.postgresql.org/docs/9.4/static/runtime-config-logging.html

可使用与数据库实例相关联的数据库参数组中的 rds.log_retention_period 参数设置系统日志的保留期。此参数的单位为分钟;例如,设置为 1440 可将日志保留一天。默认值为 4320 (三天)。最大值为 10080 (七天)。请注意,实例必须拥有足够的已分配存储容量来容纳保留的日志文件。

可为 PostgreSQL 数据库实例启用查询记录功能,方法是设置与数据库实例相关联的数据库参数组中的以下两个参数:log_statementlog_min_duration_statementlog_statement 参数控制需要记录的 SQL 语句。我们建议将此参数设置为 all 以记录所有语句;默认值为 none。或者,您可以将此值设置为 ddl 来记录所有数据定义语言 (DDL) 语句 (CREATE、ALTER、DROP 等),或者将其设置为 mod 来记录所有 DDL 和数据修改语言 (DML) 语句 (INSERT、UPDATE、DELETE 等)。

log_min_duration_statement 参数设定需要记录的语句的限制 (以毫秒为单位)。所有运行时间长于该参数设置的 SQL 语句都会被系统记录。默认情况下,此参数处于禁用状态并设置为负 1 (-1)。启用此参数可帮助查找未优化的查询。有关这些设置的更多信息,请参阅 PostgreSQL 文档中的错误报告和记录

如果您是首次设置数据库参数组中的参数以及将该参数组与数据库实例相关联,请参阅 使用数据库参数组

以下步骤显示了如何设置查询日志记录:

  1. log_statement 参数设置为 all。以下示例显示了写入 postgres.log 文件的信息:

    Copy
    2013-11-05 16:48:56 UTC::@:[2952]:LOG: received SIGHUP, reloading configuration files 2013-11-05 16:48:56 UTC::@:[2952]:LOG: parameter "log_min_duration_statement" changed to "1"

    在执行查询时,其他信息也会写入 postgres.log 文件。以下示例显示了查询后写入文件的信息类型:

    Copy
    2013-11-05 16:41:07 UTC::@:[2955]:LOG: checkpoint starting: time 2013-11-05 16:41:07 UTC::@:[2955]:LOG: checkpoint complete: wrote 1 buffers (0.3%); 0 transaction log file(s) added, 0 removed, 1 recycled; write=0.000 s, sync=0.003 s, total=0.012 s; sync files=1, longest=0.003 s, average=0.003 s 2013-11-05 16:45:14 UTC:[local]:master@postgres:[8839]:LOG: statement: SELECT d.datname as "Name", pg_catalog.pg_get_userbyid(d.datdba) as "Owner", pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding", d.datcollate as "Collate", d.datctype as "Ctype", pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges" FROM pg_catalog.pg_database d ORDER BY 1; 2013-11-05 16:45:
  2. 设置 log_min_duration_statement 参数。以下示例显示了参数设置为 1 时写入 postgres.log 文件的信息:

    Copy
    2013-11-05 16:48:56 UTC::@:[2952]:LOG: received SIGHUP, reloading configuration files 2013-11-05 16:48:56 UTC::@:[2952]:LOG: parameter "log_min_duration_statement" changed to "1"

    在执行持续时间超过参数设置的查询时,其他信息也会写入 postgres.log 文件。以下示例显示了查询后写入文件的信息类型:

    Copy
    2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: statement: SELECT c2.relname, i.indisprimary, i.indisunique, i.indisclustered, i.indisvalid, pg_catalog.pg_get_indexdef(i.indexrelid, 0, true), pg_catalog.pg_get_constraintdef(con.oid, true), contype, condeferrable, condeferred, c2.reltablespace FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i LEFT JOIN pg_catalog.pg_constraint con ON (conrelid = i.indrelid AND conindid = i.indexrelid AND contype IN ('p','u','x')) WHERE c.oid = '1255' AND c.oid = i.indrelid AND i.indexrelid = c2.oid ORDER BY i.indisprimary DESC, i.indisunique DESC, c2.relname; 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: duration: 3.367 ms 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: statement: SELECT c.oid::pg_catalog.regclass FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid=i.inhparent AND i.inhrelid = '1255' ORDER BY inhseqno; 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: duration: 1.002 ms 2013-11-05 16:51:10 UTC:[local]:master@postgres:[9193]:LOG: statement: SELECT c.oid::pg_catalog.regclass FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid=i.inhrelid AND i.inhparent = '1255' ORDER BY c.oid::pg_catalog.regclass::pg_catalog.text; 2013-11-05 16:51:18 UTC:[local]:master@postgres:[9193]:LOG: statement: select proname from pg_proc; 2013-11-05 16:51:18 UTC:[local]:master@postgres:[9193]:LOG: duration: 3.469 ms