PG数据库如何实现同城异地多活数据同步?

最近在进行系统建设前的设计,系统使用的是pg的数据库。因为业务的实际要求,需要构建同城双活+异地单活  整个三活的模式。系统在三个机房部署,客户随机访问其中任一机房服务。所以需要保障PG数据库在三个地方的数据是一致,且都能提供读写能力。目前有想法是在应用层记录下...显示全部

最近在进行系统建设前的设计,系统使用的是pg的数据库。因为业务的实际要求,需要构建同城双活+异地单活  整个三活的模式。
系统在三个机房部署,客户随机访问其中任一机房服务。所以需要保障PG数据库在三个地方的数据是一致,且都能提供读写能力。
目前有想法是在应用层记录下每次的数据库操作,然后写入消息队列,由其他2地消费消息,重新执行数据库操作。但是这种存在消息消费不及时或者前后顺序不一致的情况,不知道有没有什么好的方案能够实现数据库在同城异地多活的模式。
要求三中心数据和服务都是热的,且提供写入的能力。

收起
参与20

查看其它 2 个回答arzee86的回答

arzee86arzee86资深工程师暨南大学附属第一医院

常见的多活方案有同城双活、两地三中心、三地五中心、异地多活等多种技术方案,不同多活方案技术要求、建设成本、运维成本都不一样,下面我们会逐步介绍这几种多活方案并给出每种方案的优点和缺点。选用哪种方案要结合具体业务规模、当前基础建设能力、投入产出比等多种因素来决定。

同城双活

同城双活是在同城或相近区域内建立两个机房。同城双机房距离比较近,通信线路质量较好,比较容易实现数据的同步复制 ,保证高度的数据完整性和数据零丢失。同城两个机房各承担一部分流量,一般入口流量完全随机,内部RPC调用尽量通过就近路由闭环在同机房,相当于两个机房镜像部署了两个独立集群,数据仍然是单点写到主机房数据库,然后实时同步到另外一个机房。

两地三中心架构

所谓两地三中心是指 同城双中心 + 异地灾备中心。异地灾备中心是指在异地的城市建立一个备份的灾备中心,用于双中心的数据备份,数据和服务平时都是冷的,当双中心所在城市或者地区出现异常而都无法对外提供服务的时候,异地灾备中心可以用备份数据进行业务的恢复。

要建立起完整的异地多活能力远远比上面讨论的要复杂的多,需要对依赖的各种中间件、储存等做相应的单元化改造并配套完整的流量调度和运维管控能力 。

事业单位 · 2023-02-01
浏览2406
  • 可能我没有表述清晰,需要的是多活热备,也就是多个中心都需要能提供写入的能力。还得保持数据和服务是在三中心都是同步的
    2023-02-01

回答者

arzee86
arzee8671544
资深工程师暨南大学附属第一医院
擅长领域: 数据库安全数据安全

arzee86 最近回答过的问题

回答状态

  • 发布时间:2023-02-01
  • 关注会员:4 人
  • 回答浏览:2406
  • X社区推广