Jas*_*ner 1 postgresql replication
我们有一个中等大小的 postgres 9.1 db,目前为 3TB,并且在未来几年内可能会变得更大。我们需要一个可靠且快速的解决方案来将这些数据移动到 oracle 11G 或 sql server 2012 数据库中。我们需要一个基于日志的解决方案,如复制或 CDC,具有最小的 postgres 服务器占用空间,而不是寻找基于代码的 ETL 解决方案,如 SSIS 或 SAP 数据服务。
它还应该能够有效地处理存储在 postgres 中的 blob/空间数据
目前没有这样的功能,并且事务日志缺少实现这种功能所需的一些关键信息。
PostgreSQL 9.4 正在努力实现PostgreSQL 实例之间的逻辑和双向复制。这项工作的一部分涉及对 xlogs 的增强,以添加逻辑行复制所需的一些关键信息,添加一个新wal_level = 'logical'
选项。还有一个可插拔的基础设施,用于解码 WAL 并将其流式传输到远程主机,将 SQL 写入文件等。
这就是它对你有用的地方。此时最好的选择可能是使用该基础架构将 PostgreSQL WAL 解码为可以发送到远程 Oracle 或 SQL Server 系统的更改流。这将涉及大量的开发,因为逻辑复制代码有些不成熟,即使有 Postgresql 到 PostgreSQL 的限制,仍然有一些限制。一方面,DDL 目前完全不受支持。
如果您这样做,您需要了解 BDR 工作可能不会以完全兼容的形式提交到 PostgreSQL 9.4 中,因此您必须重新工作以使其与主线 PostgreSQL 兼容。
您首先需要为逻辑 walsender 调整现有的文本输出插件,以生成更多与数据库无关的 SQL。
如果这一切听起来太难了,那么您唯一的选择就是实施基于触发器的复制解决方案或调整现有的基于触发器的复制系统以满足您的需求。这将是服务器上(很多)更高的开销,但更简单一些。
我应该透露,我为2ndQuadrant工作,他正在为 PostgreSQL 开发双向复制,并且我最近开始将测试和文档作为项目的一部分工作。
2014-07 更新:逻辑变更集提取/逻辑解码已提交到 PostgreSQL 9.4,并将很快发布。Beta 2 几天前出来了。
看:
逻辑解码可以实现您想要的功能,但不会直接提供您想要的功能。要将更改流式传输到 MS SQL、Oracle 等,您需要一个用于逻辑解码的输出插件,该插件可以将数据流式传输到流式逻辑日志接收器。接收器应用程序将保持与目标服务器的连接,并在从 PostgreSQL 接收更改时应用更改。
这是 PostgreSQL BDR/UDR架构的基础。BDR 对您的目的没有直接用处,但为使 BDR 成为可能而构建的逻辑变更集解码功能将是有用的。
一个好的起点是查看test_decoding
插件