2016-01-23 92 views
0

我们在我们的应用程序中使用了2个Postgres数据库。一个用于交易,一个用于配置。我必须运行的sql查询使用来自两个数据库的数据,而且是非常复杂的。Postgres数据库复制

我正在使用dblink将数据从事务db复制到配置db,每小时使用基于事务条目时间戳的cron中运行的shell脚本。所以,我有一个数据库(配置)的所有数据,并能够轻松查询。

但现在,如果事务在配置数据库中复制后更新,我将不会有任何跟踪。我在脚本中使用的查询只是基于该小时的时间戳转储事务。

如果交易在13:30进来,那么它将在14:00通过cron作业转移,该作业将选择时间戳≥13:00的交易 和< 14:00。但如果交易在14:05更新,我不会有任何跟踪。

有什么解决方法吗?

+0

我无法理解您的问题。你开始谈论模式,然后转而谈论单独的数据库。那么你似乎建议你已经停止通过cron-job复制数据,但是不要提及你现在正在做什么。 –

+0

对不起,误导性的语言.....我仍然通过cron作业复制数据....但我怎样才能得到配置数据库中的事务复制在以前的时间段,但稍后得到更新。这是我最关心的问题。 – davyjones

回答

0

那么,关键问题是,你如何识别事务数据库中的更改(删除呢?)行?如果答案是“我不”,那么你有问题。

这听起来像你正试图建立一个自定义触发器复制系统(检出slony/londiste/bucardo)。尽管他们的表现比你想要的要高,但只需使用预先构建的工具就可以减少工作量。但是,如果你的数据库相当接近(相同的机器或网络),那么可能需要测试一个Foreign Data Wrapper以提供从你的配置数据库远程访问你的事务数据库。这完全取决于您运行复杂查询的频率以及需要在两个数据库之间拖动多少数据才能进行维护。

从这里开始查看PostgreSQL Replication的详细资料。