巧用服务名解决主备集群中主库DMDSC节点间会话负载不均衡的问题

一、背景描述

为了实现数据的冗余,同时为了保护数据的安全,实现业务系统数据在两个机房间保持一致,需要在同城异地机房搭建备库。某金融客户业务系统将两节点DMDSC集群改造成两节点DMDSC主+单机备集群后,进行功能测试时,在服务名中配置LOGIN_MODE=1的情况下,主库两节点DMDSC存在会话负载不均衡情况。在100并发测试下,数据库会话数约有三分之二连接到主库DMDSC的第一个节点上,三分之一连接到DMDSC的第二个节点上。如下图所示。

客户四大功能要求:

(1)业务会话只连接主库,所有读写操作在主库执行。

(2)主库和备库切换后,应用不需要做任何调整就可以连接数据库。

(3)主库两节点DMDSC业务会话负载均衡。

(4)在不升级数据库和JDBC驱动版本的情况下,实现以上四点功能。

二、问题处理过程

2.1 只连主库

只连主库可以通过在服务名中增加LOGIN_MODE=1实现,同时不能在服务名中配置AUTO_RECONECT=4和DO_SWITCH=4,这两个配置项会导致部分会话连接到备库。

2.2 会话主要集中在主库第一个节点上

在100并发测试下,数据库会话数约有三分之二连接到主库DMDSC的第一个节点上,三分之一连接到DMDSC的第二个节点上。如下图所示。

通过多轮测试,大致可以判断出,业务发起的会话,JDBC通过轮询的方式发送到服务名的三个IP地址上,由于限制只连接主库,分发到备库20.41上的会话失败后,会话会转到第一节点上。从而导致数据库会话数约有三分之二连接到主库DMDSC的第一个节点上。

2.3 会话在主库DMDSC上负载均衡

数据库版本:8.1.3.26_pack19

JDBC驱动:8.1.3.26,进行了多轮测试。

目前测试的最好效果如下所示:

(1)服务名文件配置:

分别配置两个相同的服务名,使用方法如上图所示。

(2)JDBCURL配置:

(3)两节点DMDSC数据库会话负载分布情况

主库DMDSC两个节点可以实现会话的均衡分布。备库上的一个数据库会话是用管理工具连接的,可以不用管。

(4)应用使用的JDBC版本

(5)其他特别使用说明

36.101和36.102为主库时,应用连接数据库使用第一个ELCS服务名。如果主备切换后,20.41为主库时,应用连接数据库使用第二个ELCS服务名,第一个服务名ELCS需要注释掉,对于业务应用来说,这个过程中,服务名一直没有变,应用不需要做任何调整。只需要在切换时,将服务名配置文件dm_svc.conf做适当调整即可。如果下图所示。

在100并发测试下,数据库会话数可以均衡的分布到主库两节点DMDSC上。

三、问题总结

(1)由于业务系统已经上线,稳定运行有一年时间。如果更换数据库和JDBC版本,需要重新进行业务系统的功能和性能测试,客户无法接受这种方案。

(2)限制条件:本次测试的数据库版本:8.1.3.26_pack19,JDBC驱动版本:8.1.3.26。其他版本没有进行过详细测试,以上问题处理方法仅供参考。服务名参数详细说明参见官方手册。

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

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

相关文章

2024年增量学习(二) l2p的jax版代码分析

背景介绍 l2p有两个代码实现,官方的jax实现,和个人开源的pytorch实现。两种实现有若干区别,而在jax实现中能看到replay和review机制。 训练机制 先跳过繁琐的代码实现,介绍一下jax版实现的训练机制。以数据集cifar100为例&…

MODELS 2024震撼续章:科技与可持续性的未来交响曲

MODELS 2024国际会议正如火如荼地进行着,每一天都充满了新的发现与启迪,每一场分享都是对技术前沿的一次深刻探索,更是对现实世界可持续性挑战的一次积极回应。现在让我们继续这场科技盛宴,看看小编为您精选几场的学术分享吧~ 会议…

python如何实现日期加减

首先通过import datetime,导入日期处理库。 然后把日期转化成datetime标准格式,使用datetime.datetime.strptime()方法将字符串格式的时间转化为标准格式。 其中"%Y/%m/%d %H:%M:%S"为time字符串的时间格式:Y为年,m为月…

请不要在TS中使用Function类型

在 TypeScript 中,避免使用 Function 作为类型。Function 代表的是“任意类型的函数”,这会带来类型安全问题。对于绝大多数情况,你可能更希望明确地指定函数的参数和返回值类型。 如果你确实想表达一个可以接收任意数量参数并返回任意类型的…

Android13中Android.mk和Android.bp预编译多种架构文件

需求: 1, 当前有多个架构的config文件,但是需要不同架构使用不同config文件 2, 必须将config文件拷贝到out/host目录下 常规思路 在Android.bp中, 一般在编译多架构文件时,都会使用arch属性&#xff…

Stable Diffusion绘画 | XYZ Plot:让对比一目了然

XYZ Plot 是 SD 自带的,无需额外安装。 它的作用,是给我们用来对比不同参数下,生成图片效果的区别。 位置在页面左侧底部: 实操 开启 x轴进行对比,这里面有各种可选的对比参数: 现在 X轴类型 选择「Sampler…

【秋招笔试题】阵营分配

解法&#xff1a;简单背包题。 def solve(nums):n len(nums)totalSum sum(nums)dp [[False] * (totalSum // 2 1) for _ in range(n 1)]for i in range(n 1):dp[i][0] Truefor i in range(1, n 1):for j in range(1, totalSum // 2 1):if nums[i - 1] < j:dp[i][j…

网上超市开发:SpringBoot技术要点

3 系统分析 这部分内容虽然在开发流程中处于最开始的环节&#xff0c;但是它对接下来的设计和实现起着重要的作用&#xff0c;因为系统分析结果的好坏&#xff0c;将直接影响后面环节的开展。 3.1可行性研究 影响系统开发的因素有很多&#xff0c;比如开发成本高就不适合开展&a…

Skyeye 云智能制造 v3.14.6 发布,ERP 商城

Skyeye 云智能制造&#xff0c;采用 Springboot winUI 的低代码平台、移动端采用 UNI-APP。包含 30 多个应用模块、50 多种电子流程&#xff0c;CRM、PM、ERP、MES、ADM、EHR、笔记、知识库、项目、门店、商城、财务、多班次考勤、薪资、招聘、云售后、论坛、公告、问卷、报表…

基于STM32的点滴输液报警器-设计说明书

设计摘要&#xff1a; 本文介绍了基于STM32微控制器的点滴输液报警器的设计与实现。点滴输液是医疗领域中常见的治疗方式&#xff0c;但输液速度的控制对患者的安全和治疗效果至关重要。因此&#xff0c;设计一种能够监测输液速度并在异常情况下发出警报的系统显得十分必要。基…

Linux:进程间通信之命名管道

Linux&#xff1a;进程间通信-CSDN博客 我们说匿名管道只能用于父子进程这样的关系通信&#xff0c;那么陌生进程怎么通信&#xff1f; 我们之前说父子进程能通信的最关键的地方就在于子进程复制了一份父进程的files_struct&#xff0c;从而通过文件的inode映射同一份文件来通…

Serilog文档翻译系列(五) - 编写日志事件

日志事件通过 Log 静态类或 ILogger 接口上的方法写入接收器。下面的示例将使用 Log 以便语法简洁&#xff0c;但下面显示的方法同样可用于接口。 Log.Warning("Disk quota {Quota} MB exceeded by {User}", quota, user); 通过此日志方法创建的警告事件将具有两个相…

亿发零售云解析:新零售破局与年轻群体消费趋势变化

近年来&#xff0c;随着数字化、智能化的快速发展&#xff0c;“新零售”概念逐渐成为商业领域的热门话题。相比传统零售&#xff0c;新零售通过线上与线下的深度融合&#xff0c;利用大数据、人工智能等技术&#xff0c;赋能消费者与品牌之间的互动。尤其在年轻消费群体中&…

JS 特殊运算符有哪些?

JavaScript 特殊运算符有哪些&#xff1f; 众多编程语言之中JavaScript &#xff0c;以其强大而全面的功能深受前端开发者喜爱。其丰富的运算符集&#xff0c;不仅包括了广泛应用的算术运算符、比较运算符以及逻辑运算符&#xff0c;还蕴藏着一系列较为冷门但同样功能强大的运算…

LVGL第一篇-了解lvgl显示原理以及使用C++移植

一、引言 在当今嵌入式系统与图形界面开发的广阔领域中&#xff0c;轻量级图形库 LVGL&#xff08;Light and Versatile Graphics Library&#xff09;恰似一颗璀璨耀眼的明星&#xff0c;正日益受到开发者们的热烈推崇与追逐。它以小巧精致之姿、高效卓越之能以及丰富多元之功…

Qt_事件的介绍

目录 1、理解事件 2、处理事件QEvent 3、键盘事件QKeyEvent 4、鼠标事件QMouseEvent 4.1 鼠标点击事件 4.2 鼠标释放事件 4.3 鼠标移动事件 5、滚轮事件QWheelEvent 6、定时器事件QTimerEvent 7、窗口事件QMoveEvent 8、事件分发器event 9、事件过滤器even…

峟思助力堤防工程安全:构建多功能防洪屏障

堤防工程&#xff0c;作为水利建设中至关重要的防护体系&#xff0c;不仅守护着江河、湖泊及滨海区域的安全&#xff0c;更是确保人民生命财产安全的坚固防线。在现代社会&#xff0c;随着技术的进步与安全意识的提升&#xff0c;堤防工程不仅限于传统的防洪功能&#xff0c;更…

CVPR最牛图像评价算法!

本文所涉及所有资源均在 传知代码平台可获取。 目录 概述 一、论文思路 1.多任务学习框架&#xff1a; 2.视觉-语言对应关系&#xff1a; 3.动态损失权重&#xff1a; 4.模型优化和评估&#xff1a; 二、模型介绍 三、详细实现方法 1.图像编码器和语言编码器&#xff08;Image…

Solidity语言:重点学习Solidity编程语言,这是EVM上最常用的智能合约语言。

Solidity是一种面向合约的编程语言,用于在以太坊虚拟机(EVM)上编写智能合约。它是Solidity开发者在以太坊平台上创建智能合约的主要选择之一。 学习Solidity的重点包括以下几方面: 语法和数据类型:学习Solidity的基本语法、数据类型、变量声明和函数定义等。 智能合约:了…

刷完这个笔记,17K不能再少了....

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;得准备面试了&#xff0c;又不知道从何下手&#xff01;为了帮大家节约时间&#xff0c;特意准备了一份面试相关的资料&#xff0c;内容非常的全面&#xff0c;真的可以好好补一补&#xff0c;希望大家在都能拿到理想…