2

我希望能够跟踪过去一个月对数据库 (PostgreSQL) 所做的更改。我知道两种选择:

  • 数据库触发器
  • 预写日志的更改数据捕获

但是有没有办法直接从数据库本身查询预写日志呢?即类似的东西

SELECT *
FROM WRITE_AHEAD_LOG
WHERE table='mytable' AND event_timestamp>'2018-01-01' etc?
4

1 回答 1

2

预写日志 (WAL) 不包含有关在服务器上运行的查询的信息,也不包含有关受影响表的名称的信息。

它包含有关物理级别的信息,例如“将这 24 个字节写入文件 3412 的块 746 的偏移量 42”。

您可以调查的一件事是逻辑解码,它使用来自 WAL 的信息和目录表的当前状态来生成您想要的信息。

看看test_decoding模块。

它不会显示实际针对 PostgreSQL 运行的查询,但会显示对表的修改。

于 2018-03-23T15:49:47.580 回答