关于达梦DMHS实时同步工具开启预提交参数后导致同步日志报错问题的分析

本文主要是介绍关于达梦DMHS实时同步工具开启预提交参数后导致同步日志报错问题的分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【问题现象】

DMHS日志报错,影响行数与期望行数不同

【报错原因】
        数据库提交操作比较耗时,为加快同步速度,当两个事务操作的数据没有交集(事务之间没有关联的表)时,两个事务可以并行执行,并行执行的事务提交时,并不受事务提交先后顺序的限制,有可能后提交的事务先提交。如果两个事务中的操作行存在交集,两个事务不能并行执行。预提交功能就是将不存在交集的事务并行执行,将存在交集的事务串行执行。开启预提交功能后,事务在执行时,首先根据操作的行ROWID,判断是否存在ROWID对应的lock信息,如果存在,说明其他事务存在该数据的操作,当前事务需要等待其他事务完成该行的操作后才能继续执行;如果不存在,则其他事务没有对该行进行操作,于是生成该行的lock信息,当事务执行完成后,确认是否为事务所有的lock信息;DMHS中,控制lock信息个数的参数为lock_rows,现场中并未设置,导致lock信息并未生成,如果两个事务中存在数据交集,由于lock信息并未生成,两个事务就会并行执行,导致报错。
【解决办法】
        关闭预提交参数,关闭该参数不影响数据一致性,关闭后需监控延迟情况。
        现场环境版本配置文件暂时不能加lock_rows参数,该参数在此DMHS版本上存在问题,因此只能关闭commit_prepare参数。
【归档日志解析及同步流程】
        达梦解析源端数据库日志时,并不能根据交易日志,还原源端数据库的SQL操作,但可以实现源端数据库SQL操作的同等操作。对于DML操作,CPT模块以数据行为单位,对交易日志进行解析。DMHS目标端通过NET模块接收源端发送过来的日志

这篇关于关于达梦DMHS实时同步工具开启预提交参数后导致同步日志报错问题的分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/601227

相关文章

使用python制作一款文件粉碎工具

《使用python制作一款文件粉碎工具》这篇文章主要为大家详细介绍了如何使用python制作一款文件粉碎工具,能够有效粉碎密码文件和机密Excel表格等,感兴趣的小伙伴可以了解一下... 文件粉碎工具:适用于粉碎密码文件和机密的escel表格等等,主要作用就是防止 别人用数据恢复大师把你刚删除的机密的文件恢

k8s容器放开锁内存限制问题

《k8s容器放开锁内存限制问题》nccl-test容器运行mpirun时因NCCL_BUFFSIZE过大导致OOM,需通过修改docker服务配置文件,将LimitMEMLOCK设为infinity并... 目录问题问题确认放开容器max locked memory限制总结参考:https://Access

Java中字符编码问题的解决方法详解

《Java中字符编码问题的解决方法详解》在日常Java开发中,字符编码问题是一个非常常见却又特别容易踩坑的地方,这篇文章就带你一步一步看清楚字符编码的来龙去脉,并结合可运行的代码,看看如何在Java项... 目录前言背景:为什么会出现编码问题常见场景分析控制台输出乱码文件读写乱码数据库存取乱码解决方案统一使

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

javacv依赖太大导致jar包也大的解决办法

《javacv依赖太大导致jar包也大的解决办法》随着项目的复杂度和依赖关系的增加,打包后的JAR包可能会变得很大,:本文主要介绍javacv依赖太大导致jar包也大的解决办法,文中通过代码介绍的... 目录前言1.检查依赖2.更改依赖3.检查副依赖总结 前言最近在写项目时,用到了Javacv里的获取视频

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1