我们在我们的应用程序中使用了2个Postgres数据库。一个用于事务,另一个用于配置。我必须运行的sql查询使用来自两个数据库的数据,这是一个非常复杂的查询。
我每小时使用dblink将数据从事务数据库复制到配置数据库,使用的是基于事务条目时间戳在cron中运行的shell脚本。因此,我将所有数据都放在一个数据库(config)中,并且能够轻松地进行查询。
但是现在,如果事务在config db中被复制后被更新,我将无法跟踪它们。我在脚本中使用的查询只是根据该小时的时间戳转储事务。
例如,如果一个事务在13:30到来,那么它将在14:00通过cron作业传输,该作业将挑选时间戳为>= 13:00和<14:00的事务。但如果交易是在14:05更新的,我就没有任何线索了。
有什么变通方法吗?
发布于 2016-01-24 22:40:06
那么,关键问题是,您如何识别更改(也删除了?)事务数据库中的行?如果答案是“我没有”,那么你就有问题了。
这听起来像是您正在尝试构建一个自定义的触发器复制系统(请查看slony/londiste/bucardo)。即使它们做的比你想要的要多,只使用一个预先构建的工具也可以减少工作量。
但是,如果您的数据库相当接近(相同的机器或良好的网络),那么可能值得测试一个Foreign Data Wrapper,以便从您的配置数据库提供对事务数据库的远程访问。这完全取决于您运行复杂查询的频率,以及需要在两个数据库之间拖动多少数据来为其提供服务。
从这里开始了解PostgreSQL Replication的详细信息。
https://stackoverflow.com/questions/34961947
复制相似问题