openGauss 冲突处理

news/2024/10/6 18:27:19

冲突处理

逻辑复制的行为类似于正常的DML操作,即便数据在订阅者节点本地被修改,逻辑复制也会根据收到的更改来更新数据。如果流入的数据违背了任何约束,复制将停止。这种情况被称为一个冲突。在复制UPDATE或DELETE操作时,缺失的数据将不会产生冲突并且这类操作将被简单地跳过。

冲突将会产生错误并且停止复制,它可以设置参数,由数据库自动解决,或者用户手工解决。

参数subscription_conflict_resolution可以控制订阅端在主键或唯一键冲突时的处理方式,可以选择是直接报错,还是应用远端或保留本地。设置应用远端时,当insert操作发生冲突时,会将冲突数据更新为同步过来的新元组;当update操作发生冲突时,会先将冲突数据删除,再执行更新操作。设置保留本地时,冲突发生时直接忽略。

注意:
设置应用远端时,当同步过来的新元组存在多行因为不同索引发生冲突时,尝试应用该元组时仍会报错。

此外,在订阅者的服务器日志中可以找到有关冲突的详细情况,如下。

ERROR:  CONFLICT: remote insert on relation t1 (local index t1_idx). Resolution: apply_remote.
DETAIL:  local tuple:  a[integer]:2 b[integer]:10, remote tuple:  a[integer]:3 b[integer]:10, origin: pg_57351, commit_lsn: 0/143A06A0

通过更改订阅者上的数据(这样它就不会与到来的数据发生冲突)或者跳过与已有数据冲突的事务可以解决这种冲突。冲突事务的复制源名称和LSN可以从服务器日志中找到(在上面的例子中,复制源名称是pg_57351,LSN是0/143A06A0)。使用ALTER SUBSCRIPTION SET (SKIPLSN = '0/143A06A0')可以跳过产生冲突的事务。也可以通过调用pg_replication_origin_advance()函数跳过该事务,函数的参数是对应于该订阅名称的node_name(即pg_57351)以及commit_lsn的下一个LSN(即0/143A06A1)。复制源头的当前位置可以在pg_replication_origin_status系统视图中看到。请注意,跳过整个事务包括跳过可能不违反任何约束的更改,使得发布端和订阅端数据不一致。

详情查看:https://opengauss.org

详情查看:https://docs-opengauss.osinfra.cn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/28425.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

如何完美解决Outlook大文件传送问题,提升办公协作效率?

在日常工作中,邮件是一种常用的通信方式,经常用来发送各类文件,比如报告和文档、合同和协议、财务报表、营销资料、设计文件等。但有时文件会比较大,因此Outlook大文件传送时,会遇到附件大小受限的情况。常用的解决发送大文件的问题有以下几种: 1.压缩文件:如果文件大小…

记一次java进程频繁挂掉问题排查修复

前言 最近业务部门有个java服务进程会突然无缘无故的挂掉,然后这个服务会产生一堆类似hs_err_pid19287.log这样的日志。业务部门负责人就把hs_err_pidxxx的日志发给我,让我帮忙看下问题。本文就来回顾一下,我是如何帮业务部门进行问题排查 排查历程 首先hs_err_pidxxx的日志…

BigDecimal精度理解

BigDecimal的类声明以及几个属性:接下来我们可以debug来看下其运行原理BigDecimal bigDecimal1 = BigDecimal.valueOf(2.88);BigDecimal bigDecimal2 = BigDecimal.valueOf(3.5);BigDecimal resDecimal = bigDecimal1.add(bigDecimal2);System.out.println(resDecimal); 可以看…

linux使用blkid未显示所有设备的UUID

如题: 使用lsblk命令可以看到,服务器存在设备vdb但使用blkid命令,系统未返回所有硬盘的UUID同时,使用lsblk -f命令,可以看到系统返回的设备挂载情况,也没有返回vdb的信息解决方案: 查询资料,看到有一个解决方法 使用sudo blkid进行查询,发现可以查询到/dev/vdb设备的U…

标准的JavaBean类书写

ptg插件 只需输入方法名和变量右键即可生成完整javabean方法

@Async异步失效的9种场景

前言 最近星球中有位小伙伴问了我一个问题:他在项目某个方法使用@Async注解,但是还是该方法还是同步执行了,异步不起作用,到底是什么原因呢? 伪代码如下: @Slf4j @Service public class UserService {@Asyncpublic void async(String value) {log.info("async:{}&qu…

如何安全可控地进行内外网跨网络传输文件?

跨网络传输文件通常指的是在不同的网络环境之间移动数据,这在现代企业运营中非常常见。随着网络技术的高速发展,为了有效地保护内部的核心数据资产,企业一般会采用内外网隔离的策略。在进行内外网跨网络传输文件时,需要考虑多种因素,包括但不限于安全性、效率、合规性、技…

文本自动生成PPT的AI工具——轻竹AIPPT

文本自动生成PPT的AI工具——轻竹AIPPTPPT(PowerPoint Presentation)是商务、教育和各种演讲中不可或缺的工具。但是,设计一份既吸引人又能有效传达信息的PPT确实不容易。在这个过程中,选择一个好的工具能够事半功倍。而现在,AI技术的介入,让这个过程变得更加简单和有趣,…