我目前有几十个站点通过rsyslog将数据推送到中央数据库。 所有这些logging都将放入一张表格中(每个站点每秒插入大约20-30个)。 因此,一张桌子上有大约3000万条logging,而且增长很快。 数据库devise是一个独立的问题,待以后处理。
我的目标是在每个站点设置一个本地数据库,这个表收集syslog并将其复制到我们的中央数据库(希望同步)到以该设施命名的新表(而不是一个大表收集所有17个设施数据)。
我曾经看过Bucardo,Slony和SymmetricDS,但它们都是冗余/备份解决scheme,但我真正需要的是从每个站点到中央数据库的基本单表复制。
我对Bucardo的最初印象是,我需要将它安装在每个站点来完成这一点。 如果有人能提供一些build议,我正在寻找一些指导。 我相信我已经死了,但我希望被certificate是错误的。
每一个PostgreSQL着名的逻辑复制系统都适合这个:Bucardo,Londiste,Slony。 它们不一定只是冗余解决scheme。 (可以说,它们是非常糟糕的冗余解决scheme。)select一个你最喜欢的。 也许Londiste是最容易入门的,但是YMMV。 (我对SymmetricDS不熟悉。)
从Postgres 9.3开始,您应该可以使用“外部数据包装”(Foreign Data Wrappers)来做到这一点 – 这里有一个简单的解释 。
基本上在中央服务器上创build适当的表,然后在远程站点的Postgres实例上创build表作为外部表(使用CREATE FOREIGN TABLE )。 然后,您可以像处理任何其他表一样处理外表,除非所有更改都会发送回“真实”服务器。
请注意,如果您需要asynchronousfunction(在中央服务器处于脱机状态时将东西写入远程站点的表中,并在中央服务器返回时将其发送),则这不起作用。 为此, 按Peter的build议,使用基于事务的复制工具之一 。