如何有选择地复制 PostgreSQL 数据库

Cat*_*unt 6 postgresql

我想保留两个具有相同模式的 PostgreSQL 数据库,但有一个从只保留一小部分实时数据的主数据库复制。

基本上,master 接收实时数据并删除时间窗口之外的旧数据,而复制的 slave 应该保留所有历史数据(至少达到磁盘的限制)。所以本质上,除了删除操作之外,从站应该复制主站。

任何“现成的”PostgreSQL 复制方法都可以做到这一点吗?

vor*_*aq7 4

Postgres 内置复制基于日志传送,据我所知不支持这一点(您将 Postgres 事务日志从主服务器传送到从服务器,因此所有内容 - 包括删除 - 都会传递。您可能是能够通过保留所有事务日志(永远)来近似它,以便您可以回滚到特定时间点,但这不是一种特别有效的技术。

您可能可以使用基于触发器的复制机制(如Slony )来配置类似的东西,但更好的解决方案可能是标准镜像加上表审计(tablelog)项目,该项目基本上创建表发生情况的历史日志(在影子中) schema),这样您就可以看到何时以及由谁做了什么。
这最好与 9.x 风格的主/从复制结合起来,您可以从从属复制中读取内容以浏览审核历史记录。