911*_*911 5 postgresql replication transactional-replication multi-master
我在不同的地理位置(本地站点)有几个 PostgreSQL 数据库。
每个本地站点 DB 都具有相同的架构,但具有唯一的数据。例如,以包含以下列的表为例:Site_ID、Department_ID、Department_Name。Site_ID 对于每个站点都是唯一的。
我想将本地站点数据库中的所有数据收集到充当数据仓库的集中式数据库(再次是 PostgreSQL)中。
集中式数据库上的相应示例表将具有与上述相同的列。所有本地站点数据都将进入此表。当然,每个站点数据由 Site_ID 指定。
问题:如何使用PostgreSQL 复制方法(流/多主 UDR/BDR/等)实现这一点。我看到这可以通过 SQLServer 使用Transactional Replication来完成。使用 PostgreSQL 实现此功能的最佳方法是什么?
限制:本地站点只能进行传出网络连接(即由于防火墙限制不能进行入站连接)
我看到至少有两个选择:
如果您不需要近乎实时的复制,但每天(或每小时)一次就足够了,并且数据量很小,您可以非常简单地创建一个将在每个远程运行的脚本地点:
pg_dump --data-only
应该没问题)如果你需要近乎实时的复制,或者数据量很大(但相比之下变化很小),你可以考虑Slony。有一段时间没有使用它了,这不一定是它的典型使用场景,但我相信它应该可以工作,因为数据集是不同的。
Slony 使用表上的触发器将更改存储在日志中,然后使用守护程序将日志从一台服务器传输到另一台服务器并应用更改。不过,值得检查一下这是否适用于“无法从中央连接到远程”的情况。如果没有,您需要考虑某种形式的 VPN(无论如何您都应该这样做)。
归档时间: |
|
查看次数: |
1418 次 |
最近记录: |