在 2 个 web 服务之间同步 postgres 数据库表
Posted
技术标签:
【中文标题】在 2 个 web 服务之间同步 postgres 数据库表【英文标题】:Sync postgres database table between 2 webservices 【发布时间】:2017-12-12 22:33:54 【问题描述】:我们有一个 Django 应用程序 (REST webservice1) 和一个 postGres 数据库 (db1) 对其进行备份。
我们还有另一个 REST webservice2 和它自己的 db2。
db1 中有一个 table1。可以说这是事实的原始点(原始副本)。 table1 创建/更新/删除调用来到 webservice1。每当 webservice1 中发生这些操作时,它都会修改 table1 中的数据并发出事件(到 AWS kinesis。推送到 kinesis 会重试,但可能会失败),例如
item_created item_deleted item_modified我们希望将 table1 的数据从 db1 迁移到 db2(并尽可能保持它们同步)。 webservice2 不应从其端点公开与 table1 相关的任何陈旧数据。 webservice2 可以选择在 webservice1 中查询 table1 数据,但整个想法是减少 webservice1 上 db 查询的负载。
我想知道在 webservice2 中保持 table1 的内容几乎相同的最佳/最简单方法是什么。
我们可以使用任何特定于 postgres 的技术吗?像一个 exe 跟踪 table1 中的更改日志并不断将数据推送到 webservice2? webservice2 可以监听事件并从 webservice1 查询特定数据并将其保存在其数据库中。如果这些流事件丢失,就会出现问题。欢迎提出建议。
【问题讨论】:
您可以使用Bucardo 在两个数据库之间进行单表复制。 您的 webservice 2 是否仅用于查询同步表中的数据? 是的,现在我们只希望 webservice2 暴露 table1 的数据。以后我们可能需要更多的东西。 【参考方案1】:看看一个热备服务器来做主/从复制,它几乎是为这个用例设计的https://www.postgresql.org/docs/current/static/high-availability.html
【讨论】:
以上是关于在 2 个 web 服务之间同步 postgres 数据库表的主要内容,如果未能解决你的问题,请参考以下文章
在两者之间通过 WCF 服务同步 2 个本地 SQL Server 数据库
同步Postgres和ElasticSearch的最佳方法是什么?
在 Elastic Beanstalk Web 和工作程序层之间共享数据