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

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

参与6

2同行回答

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

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

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

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

方案很多,具体需要介入根据核心表 单独校验,和 逻辑库校验的方式并用 ,同时可以通过打点的方式 增强传输中的 数据一致性辅助校验。
收起
互联网服务 · 2024-02-27
浏览263
cnblockchainscnblockchains其它上交所技术
可以试试checksum的函数创建语句create function checksum_row(bigint, text) returns bigint as 'select int8pl($1, hashtext($2))' language sql;create aggregate checksum(text) (sfunc = checksum_row, stype = bigint, initcond = 0, combinefunc = int8pl);使用...显示全部

可以试试checksum的函数
创建语句
create function checksum_row(bigint, text) returns bigint
as 'select int8pl($1, hashtext($2))' language sql;
create aggregate checksum(text)
(
sfunc = checksum_row,
stype = bigint,
initcond = 0,
combinefunc = int8pl
);
使用方式
select checksum(a::text) from 表名 a;
select checksum(列名::text) from 表名;
这可以就可以方便的进行全量,增量的数据比对了

收起
证券 · 2024-02-26
浏览286

ChatGPT 回答

针对您的问题,我可以提供以下解决思路:

  1. 数据库级别的数据核对:可以使用PG数据库的逻辑复制功能,将主机房的数据同步到从机房,然后在从机房的数据库中进行数据核对。但是,根据您的情况,维护管理人员不允许开启逻辑复制,这个方案可能不可行。
  2. 应用程序级别的数据核对:可以在应用程序中增加数据核对的逻辑,例如,在每次写入数据后,将写入的数据和消息队列中的数据进行比对,确保数据一致性。但是,这个方案需要在应用程序中增加额外的逻辑,可能会增加开发和维护的难度。
  3. 第三方工具的数据核对:可以考虑使用第三方工具进行数据核对,例如,使用pg_comparator工具对比主机房和从机房的数据是否一致。但是,这个方案需要占用一定的资源,可能会影响系统的性能。

综上所述,针对您的情况,建议采用应用程序级别的数据核对方案,增加数据核对的逻辑,确保数据一致性。如果应用程序的性能受到影响,可以考虑使用第三方工具进行数据核对。同时,建议与维护管理人员协商,开启PG数据库的逻辑复制功能,以便更好地保障数据一致性。

提问者

jillme
CIO某大型银行

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2024-02-26
  • 关注会员:3 人
  • 问题浏览:1197
  • 最近回答:2024-02-27
  • X社区推广