处理主动-主动复制中的冲突
pgactive
扩展适用于每个数据库,而不是每个集群。使用 pgactive
的每个数据库实例都是一个独立的实例,可以接受来自任何来源的数据更改。将更改发送到数据库实例时,PostgreSQL 会在本地提交更改,然后使用 pgactive
将更改异步复制到其它数据库实例。当两个 PostgreSQL 数据库实例几乎同时更新同一记录时,可能会发生冲突。
pgactive
扩展提供了冲突检测和自动解决机制。它跟踪在这两个数据库实例上提交事务的时间戳,并自动应用带有最新时间戳的更改。pgactive
扩展还会记录 pgactive.pgactive_conflict_history
表中发生冲突的时间。
pgactive.pgactive_conflict_history
会继续增加。您可能需要定义清除策略。可以通过定期删除一些记录或为此关系定义分区方案(然后分离、删除、截断感兴趣的分区)来完成此操作。要定期实施清除策略,一种选择是使用 pg_cron
扩展。请参阅 pg_cron
历史记录表示例的以下信息:使用 PostgreSQL pg_cron 扩展安排维护计划。