暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL log_fdw 阿里云rds pg如何查看、配置实时数据库日志

digoal 2019-12-19
468

作者

digoal

日期

2019-12-19

标签

PostgreSQL , sql审计 , 错误日志 , 慢sql , csvlog , file_fdw , log_fdw , 保留时长


背景

习惯了直接在$PGDATA/log目录文件中查询日志(sql审计 , 错误日志 , 慢sql),发现用了rds后,只能在gui图形化下面查询日志,可能会觉得很别扭。

rds pg插件log_fdw发布,终于可以在数据库中直接查询日志了。用法很简单如下(最后以阿里云rds pg的手册为准)

https://help.aliyun.com/document_detail/142340.html

log_fdw用法

1、创建插件

postgres=> create extension log_fdw cascade; NOTICE: installing required extension "file_fdw" CREATE EXTENSION

2、查看插件带了哪些功能

postgres=> \df List of functions Schema | Name | Result data type | Argument data types | Type --------+-----------------------------------+-------------------------------+-----------------------------------------------------------------------+------ public | create_foreign_table_for_log_file | boolean | table_name text, log_server text, log_file text | func public | file_fdw_handler | fdw_handler | | func public | file_fdw_validator | void | text[], oid | func public | list_postgres_log_files | SETOF record | OUT file_name text, OUT file_size_bytes bigint | func

3、列出有哪些日志文件

postgres=> select * from list_postgres_log_files(); WARNING: 1 temporary files and directories not closed at end-of-transaction file_name | file_size_bytes ----------------------------------+----------------- postgresql-2019-12-19_054325.csv | 5386 (1 row)

4、创建server,可能会包掉,以后也许不需要手工创建

postgres=> create server log foreign data wrapper file_fdw ; CREATE SERVER

5、创建指定日志文件对应的外部表

```
postgres=> select create_foreign_table_for_log_file('ft1','log','postgresql-2019-12-19_054325.csv') ;
create_foreign_table_for_log_file


t
(1 row)
```

6、查询这个外部表,相当于即时查询当前日志内容。

```
postgres=> select * from ft1;
-[ RECORD 1 ]----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


log_time | 2019-12-19 13:43:25.275+08
user_name |
database_name |
process_id | 56
connection_from |
session_id | 5dfb0dfd.38
session_line_num | 1
command_tag |
session_start_time | 2019-12-19 13:43:25+08
virtual_transaction_id |
transaction_id | 0
error_severity | LOG
sql_state_code | 00000
message | database system was shut down at 2019-12-19 05:43:18 UTC
detail |
hint |
internal_query |
internal_query_pos |
context |
query |
query_pos |
location | StartupXLOG, xlog.c:6362
application_name |

.......
```

配置日志保留个数

rds_max_log_files参数,设置保留多少个文件。默认20.

单个文件默认100MB

postgres=> select name,setting,unit from pg_settings where name ~ 'log_ro'; name | setting | unit -------------------+---------+------ log_rotation_age | 0 | min log_rotation_size | 102400 | kB (2 rows)

所以默认保留2GB的日志。

参考

https://www.postgresql.org/docs/current/file-fdw.html

PostgreSQL 许愿链接

您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.

9.9元购买3个月阿里云RDS PostgreSQL实例

PostgreSQL 解决方案集合

德哥 / digoal's github - 公益是一辈子的事.

digoal's wechat

文章转载自digoal,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论