如何查看postgresql数据库中的更改

时间:2018-06-15 07:24:06

标签: postgresql amazon-rds database-backups

我的postresql数据库每晚都会更新。

每次每晚更新结束时,我都需要知道哪些数据发生了变化。

更新过程很复杂,需要几个小时才需要几十个脚本,因此我不知道这是否会影响我如何看到哪些数据发生了变化。

数据库的大小约为1 TB,因此任何需要启动临时数据库的方法都可能非常慢。

数据库是AWS实例(RDS)。我启用了自动备份(这些是different to RDS snapshots which are user initiated)。是否可以看到两个RDS自动备份之间的区别?

1 个答案:

答案 0 :(得分:1)

我不知道是否可以看到RDS快照之间的区别。但在过去,我们针对类似问题测试了几种解决方案。也许你可以从中获得灵感。

  1. 明显的解决方案当然是审计系统。通过这种方式,您可以相对简单地看到更改的内容。取决于审核系统的粒度,直至列值。当然,由于审计触发器和对审计表的查询,会对您的应用程序产生影响。
  2. 另一种可能性是 - 对于具有主键的表,您可以在更新之前为每行存储主键和'xmin'和'ctid'隐藏系统列(https://www.postgresql.org/docs/current/static/ddl-system-columns.html)的值,并将它们与更新后的值进行比较。但是这样,您只能识别已更改/插入/删除的行,而不能识别不同列中的更改。
  3. 您可以制作流式副本并设置复制插槽(并且在安全方面也可以使用WAL日志存档)。然后在更新之前停止副本上的复制,并使用dblink选择在更新后比较数据。但是这些查询可能非常繁重。