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

标签 postgresql amazon-rds database-backups

我的 postresql 数据库每晚更新。

在每晚更新结束时,我需要知道更改了哪些数据。

更新过程很复杂,需要几个小时并需要几十个脚本,所以我不知道这是否会影响我查看哪些数据已更改的方式。

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

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

最佳答案

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

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

关于postgresql - 如何查看 postgresql 数据库中的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50870892/

相关文章:

sql - 如何以通用方式在 Postgres 中添加空行

php - 插入 0000-00-00 00 :00:00 datetime from mysql to postgresql

database - Drupal 网站因许多连接错误而被阻止 - 网站离线

ruby-on-rails - 管理大型用户上传数据集的模式?

postgresql - Ecto:插入带有 foreign_key_constraint 的变更集引发 Postgrex.Error

amazon-web-services - 无法删除 default.mysql8.0 : Default DBParameterGroup cannot be deleted: default. mysql8.0

postgresql - 通过脚本安装postgis扩展

sql-server - 如何在Docker上的SQL Server中从数据库备份查看.bak文件

mysql - 如何在 Azure 虚拟机中备份 MySQL 数据库,并使用 Azure 函数和 Python 将备份发送到 Blob 存储

sql-server - 事务日志备份后增长巨大