ick*_*cki 5 postgresql replication multi-master-replication
我想先声明一下,我不是 DBA,对于技术知识上的任何差距,我们深表歉意。
我正在微服务架构中工作,其中大约有十几个应用程序,每个应用程序都由其 Postgres 数据库实例(如果有帮助的话,位于 RDS 中)支持。每个微服务的数据库都包含一些表。可以安全地假设任何模式/表之间不存在命名冲突,并且数据库之间不存在任何数据分片。
我们不断遇到的问题之一是想要跨数据库分析/连接数据。现在,我们依靠第三方工具来缓存我们的数据,并可以跨多个数据库源进行查询(通过共享缓存)。
是否可以从我们所有的生产数据库创建模式/表的只读副本,并让它们可在单个数据库中查询?
是否有其他方法来配置 Postgres 或 RDS 以使跨数据库连接成为可能?
小智 7
是否可以从我们所有的生产数据库创建模式/表的只读副本,并让它们可在单个数据库中查询?
是的,这是可能的,而且实际上很容易。
设置一台 Postgres 服务器作为主服务器。
对于每个远程服务器,创建一个外部服务器,然后用于创建一个外部表,使数据可以从主服务器访问。
如果您在多个服务器中有多个表,并且应将其视为主服务器中的单个表,则可以设置继承以使所有这些表看起来像一个表。如果您可以定义一个“分片”键来标识这些服务器之间的不同属性,您甚至可以使 Postgres 仅从特定服务器请求数据。
所有外部表都可以像本地表一样进行连接。根据查询的类型,一些(或大量)过滤器和连接条件甚至可以被推送到远程服务器以分配工作。
由于Postgres 外部数据包装器是可写的,您甚至可以从主服务器更新远程表。
如果远程访问和联接太慢,您可以基于远程表创建物化视图来创建数据的本地副本。然而,这意味着它不是实时副本,您必须管理表的定期刷新。
其他(更复杂的)选项是BDR项目或pglogic。逻辑复制似乎将被内置到下一个Postgres版本中(将于今年年底发布)。
或者您可以使用分布式、无共享的系统,例如Postgres-XL(这可能是设置和维护最复杂的系统)
| 归档时间: |
|
| 查看次数: |
2798 次 |
| 最近记录: |