异地多活三中心,PG数据核对如何进行数据核对,保障最终数据一致性?

背景信息:单位内重要系统,为了保障系统的高可用,按照异地多活三机房方式建设。每个机房均承接全量的业务数据。各机房都是主机房,均有能力提供写数据操作,没有冷备机房。数据库使用的是PG数据库,版本14.7。 机房的维护管理人员 不允许开启逻辑复制。 所以目前数据同步的方式...显示全部

背景信息:
单位内重要系统,为了保障系统的高可用,按照异地多活三机房方式建设。每个机房均承接全量的业务数据。各机房都是主机房,均有能力提供写数据操作,没有冷备机房。
数据库使用的是PG数据库,版本14.7。 机房的维护管理人员 不允许开启逻辑复制。 所以目前数据同步的方式,目前采用的方式是,所有的数据维护交易都在一个机房数据库写入,然后用双写的方式,写入消息队列后,发送到另外两个机房,另外两个机房的应用程序,消费消息,调用应用程序,更新入本机房的数据库。
问题: 消息机制 无法保障所有的对等中心消费者都是消费成功和写数据库成功,所以需要一个数据核对的功能。
想咨询下大家有无好的 占用资源相对可控的方式进行数据核对的。 对比DUMP和COPY出文件基本没有可行性,应用使用容器化部署,数据库内数据量较大,单机房65套数据库,超20亿以上产品和客户信息。

收起
参与6

查看其它 1 个回答austindatabase的回答

austindatabaseaustindatabase数据库架构师互联网金融

首先这个问题需要确认如下信息 
1  不开启逻辑复制,是对的,逻辑复制在PG 数据库中慎用,有很多的问题,不让开启是对的尤其这样的项目
2  以上的设计中,问题点的弄清楚
    1  此方案仅仅适合,数据的非及时的,非瞬时一致性的数据同步方案,方案中不支持数据的瞬时一致性

2  此方案中重要的部分在 1  数据的流量 2 数据的一致性要钱  3  冗余部分的利用与使用
3  方案中要允许 数据的可能存在的缺失,和数据传输中的 丢包 与可能的最终不一致性

4  数据的校验中,需要融合到业务中,尤其在表设计中,需要设计校验位,联动此种方案
5  数据的校验分为 横向 和  纵向校验,校验也有 瞬时 校验 和 最终一致性校验

方案很多,具体需要介入根据核心表 单独校验,和 逻辑库校验的方式并用 ,同时可以通过打点的方式 增强传输中的 数据一致性辅助校验。
互联网服务 · 2024-02-27
浏览404

回答者

austindatabase
数据库架构师互联网金融

austindatabase 最近回答过的问题

回答状态

  • 发布时间:2024-02-27
  • 关注会员:3 人
  • 回答浏览:404
  • X社区推广