我的 postresql 数据库每晚更新。
在每晚更新结束时,我需要知道更改了哪些数据。
更新过程很复杂,需要几个小时并需要几十个脚本,所以我不知道这是否会影响我查看哪些数据已更改的方式。
数据库大小约为 1 TB,因此任何需要启动临时数据库的方法都可能非常慢。
数据库是 AWS 实例 (RDS)。我启用了自动备份(这些是 different to RDS snapshots which are user initiated )。是否可以看出两个 RDS 自动备份之间的区别?
最佳答案
我不知道是否可以看到 RDS 快照之间的差异。但在过去,我们针对类似问题测试了几种解决方案。也许你可以从中得到一些启发。
- 显而易见的解决方案当然是审计系统。这样您就可以相对简单地看到发生了什么变化。根据您的审计系统的粒度细化到列值。当然,由于审计触发器和对审计表的查询,会对您的应用程序产生影响。
- 另一种可能性是 - 对于具有主键的表,您可以在更新前为每一行存储主键以及“xmin”和“ctid”隐藏系统列 (https://www.postgresql.org/docs/current/static/ddl-system-columns.html) 的值,并将它们与更新后的值进行比较。但是通过这种方式,您只能识别更改/插入/删除的行,而不能识别不同列中的更改。
- 您可以制作流式副本并设置复制槽(为了安全起见,还可以进行 WAL 日志归档)。然后在更新前停止副本上的复制,并在更新后使用 dblink selects 比较数据。但是这些查询可能非常繁重。
关于postgresql - 如何查看 postgresql 数据库中的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50870892/