我希望能够跟踪过去一个月对数据库 (PostgreSQL) 所做的更改。我知道两种选择:
- 数据库触发器
- 预写日志的更改数据捕获
但是有没有办法直接从数据库本身查询预写日志呢?即类似的东西
SELECT *
FROM WRITE_AHEAD_LOG
WHERE table='mytable' AND event_timestamp>'2018-01-01' etc?
我希望能够跟踪过去一个月对数据库 (PostgreSQL) 所做的更改。我知道两种选择:
但是有没有办法直接从数据库本身查询预写日志呢?即类似的东西
SELECT *
FROM WRITE_AHEAD_LOG
WHERE table='mytable' AND event_timestamp>'2018-01-01' etc?
预写日志 (WAL) 不包含有关在服务器上运行的查询的信息,也不包含有关受影响表的名称的信息。
它包含有关物理级别的信息,例如“将这 24 个字节写入文件 3412 的块 746 的偏移量 42”。
您可以调查的一件事是逻辑解码,它使用来自 WAL 的信息和目录表的当前状态来生成您想要的信息。
看看test_decoding模块。
它不会显示实际针对 PostgreSQL 运行的查询,但会显示对表的修改。