探案录 | 在线打补丁,运维更轻松

14ded3ff0b047745f425999d6fa6ee73.jpeg

清晨,曙光温柔地洒落在福尔摩斯·K那标志性的书房内,福尔摩斯·K坐在他那张熟悉的扶手椅上,眼神锐利如鹰,正沉浸在思考的海洋中。门突然被推开,华生·K带着一丝急切步入室内。

“福尔摩斯·K,这次案件非同小可,关乎一家重要企业的数据库升级,他们正面临前所未有的挑战。”华生·K边说边递上一份文件。

福尔摩斯·K接过文件,边翻阅文件边说道,“随着业务需求增长,数据库升级势在必行,但传统方法需停止服务,这对企业而言无疑是一步险棋。”他嘴角微扬,似乎对这个技术案件充满了浓厚兴趣。

数据库升级遇停机难题

福尔摩斯·K决定亲自前往企业现场,一探究竟。他首先研究了该企业当前采用的数据库集群架构,三个节点的数据库集群的布局清晰地展现在他眼前。接着,他详细询问了企业技术负责人老林关于现有升级方案的细节。

6b76fab65bfcb2b12926cc0d36cdcb60.jpeg

老林叹了一口气说道:“我们需要升级一个数据库补丁,来解决某个安全风险的问题,这是目前的升级方案,我们害怕按这样的方式升级系统会面临巨大的风险。”

0a1629e63f131785b976bd1c3d6af6ee.png

“确实如此,你看,”福尔摩斯·K指着屏幕上的升级流程图,眉头紧锁。

“在整个升级过程中,不仅需要停止业务系统,而且每一步,都需要小心翼翼的手动去操作,每一个环节都需要保证万无一失。如果没有操作正确,缺少某一步,或一不小心操作错了可能引发连锁反应,会给系统带来各种风险。”

数据库平滑升级秘籍:Kpatch

福尔摩斯·K站起身来,来回踱步,思考着破解这一难题的线索。

“如果想不影响业务系统,又想快捷自动化的操作,那么...华生·K,你记得Kpatch吗?”他突然停下脚步,转头问向华生·K。

华生·K突然眼前一亮:“对!人大金仓KingbaseES数据库Kpatch工具就能够实现。

701183867a97c42ae2cfed649c601edb.png

fc4fd14109b45c41491a6d3f3d7b19b7.jpeg

89f0a99b7d626eeed4c0a96607356e9d.png

老林惊讶地看着福尔摩斯·K:“Kpatch?它是怎那么做到的?”

0425748baefc0fa13100f9a7c1ad741c.jpeg

华生·K微笑着解释道:“Kpatch将复杂操作集成化为一个命令,减少人工操作。它对集群中多个节点,实行逐步滚动的升级。当停止一个节点进行升级时,其他节点仍就对外提供服务,从而最大限度地减少对业务的影响。”

0f263a78cf2d90bbca483a35eff4fbce.jpeg

随即,华生·K展示了一张流程图:

eb79c7b75944e3249f05f8148fad5407.png

784b510dad167a87d04c039cecc848a1.png

福尔摩斯·K接着说:“Kpatch在升级过程中将滚动停止数据库,不停止整个集群。业务程序可能会在升级过程中失去某个节点数据库的连接,但是只需要重试当前语句,就可以在其他未执行升级的节点执行成功。在最后升级主节点时,会将其他备节点提升为主节点,因此,两个节点的集群影响时间为一个故障转移的时间,大概在60s以内。三个以上节点的集群,只会影响业务“写”,时间为一个故障转移的时间,能最大化地降低影响与风险。”

老林惊叹不已,说道:“这也太轻松了,能大大减少人工操作,请福尔摩斯·K先生务必教我使用KingbaseES数据库的Kpatch!”

在线打补丁,运维更轻松

福尔摩斯·K打开了数据库,“先选择一个节点,将Kpatch拷贝到集群安装目录下的Kpatch目录。”

6d90414ad6f801a291a654b44c8de3ba.png

“再将数据库补丁,拷贝到Kptach下的patch_packages目录。”

b93a387e92d44c3345c04a06423a104d.png

福尔摩斯·K突然转过头:“对了,如果没有Kpatch目录和patch_packages目录,则需要创建。”

“接下来就是执行升级了,在此节点上执行升级,-t指定版本号,会到`Kpatch/patch_packages`目录查询补丁包,也可以用-p直接指定补丁包路径”福尔摩斯·K接着说。

“在升级前,我们可以写一个脚本来验证升级对业务的影响,比如这样。”

73916ac25a92e9764b13c5f3f7f75523.png

“这个脚本每隔一秒使用ksql向vip指向的集群主节点进行一次查询当前时间并显示。这样我们可以通过这个脚本来从侧面观察升级对业务是否有影响。”

“那开始执行升级吧~”

b1b18fe33ffd83656eadae5a29a40c63.png

“执行升级时,会自动拷贝解压补丁包到每个节点,检测当前版本号,检测集群状态,然后再逐步滚动进行升级。”

4d41e5b03dd501645ab480f8df1aec87.png

98a850543fdde613dd78a7c77dacd90d.jpeg

“升级成功了,数据库从V008R006C006B0021PS007版本升级到V008R006C006B0021PS012版本了。现在可查看升级状态,通过kpatch能查看当前集群升级补丁的情况。”

b57ec2b244977a77091bc4c10a9307b1.png

ca27e0c0c59b02294cd43f0fd0d12e13.png

a6cc39a19f61999abd57f5e6b5dcfada.png

“接下来再看看刚刚那个脚本执行的效果吧:”

c1000c178611201280a2d93dbc15816c.png

4e81ad31be44638bcf2261c5054e4486.jpeg

华生·K开心地说“升级很顺利啊!整个升级过程中,大部分都是预期的1秒停滞,只有一个地方有大概2.6秒的停滞,比正常的1s多了1.6秒,但是没有失败,且总体都没有对业务访问造成什么影响!”

福尔摩斯·K会心一笑,回道:“是啊,若通过kpatch升级过程中出现异常,导致升级失败,或者升级后,功能不满足,可以回滚操作,华生·K,剩下的交给你了。”

“没问题。”

华生·K在电脑上模拟演示:

a40a0baecc5b9e845be08df6f64dcdf7.png

“如同升级,会自动进行逐步滚动回退,像这样。”

2522c4cdffe003682bb2fd7e9f416616.png

到这里,数据已经回滚到之前的版本了。

739b1b59cea523f3075e83c5124e6596.jpeg

1f535e093620e52436cbd5c53800300e.jpeg

老林赞叹不已,激动地说道“通过Kpatch来升级数据库补丁,只用了一个命令,就完成繁琐的数据库升级,而且还不用停止整个集群,将对业务的影响降到最低。Kpatch真是太厉害了,我这就去给我们公司的数据库用上这个功能。”

福尔摩斯·K微微一笑:“在这个数字化时代,任何难题都有其解开的钥匙。”

外面,街头依旧喧闹而美好,而福尔摩斯·K与华生·K,则继续穿梭在嘈杂的街道中,寻找下一个挑战与真相。

eb3aebb8d9b16a7cd716b6935298e843.png供稿:产品研发中心

编辑:薇薇

审核:日尧

f4513edc7d3ea3462bf7a33510815647.gif

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在线观看汤姆克鲁斯、比莉艾利什、红辣椒乐队、HER等明星的奥运闭幕式

2024 年巴黎奥运会将以一系列众星云集的表演者为结尾,他们将帮助将奥运会移交给洛杉矶——以下是在线直播盛大决赛的时间和地点。 经过两周多令人惊叹的田径运动、激烈的比赛和表情包活动后,2024 年巴黎奥运会即将落下帷幕。 奥运会闭幕式将于 8 月 12 …

【C++】 特殊类设计:从构思到实现,引领设计新潮流

🌈 个人主页:Zfox_ 🔥 系列专栏:C从入门到精通 目录 🚀 前言 一: 🔥 不能被拷贝的类 二: 🔥 只能在堆上创建对象的类 三: 🔥 只能在栈上创建对象的…

uniapp使用echarts在H5上显示报错问题的解决方法

前言 在做uniapp vue3开发的echarts图表的时候,发现在浏览器上面正常运行,但在微信开发者工具上显示报错了,报错如下 原因:在微信小程序中,使用document.getElementById会报错,因为小程序的运行环境是基于…

目前最强的文生图模型?!FLUX完全解读!附体验地址

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工…

css rem之2024

话题开始前 我们都知道1rem是等于html fontSize标签的字体大小的,我们主要用来做移动端网页设计稿等比例在手机上面的显示。 看到的问题 这个html fontsize的大小是通过js动态计算的,而这个js的运行时晚于html渲染的,所以会导致一个问题&am…

python网络爬虫使用代理

Python网络爬虫使用代理的实用指南 在网络爬虫的开发过程中,使用代理是一个非常重要的环节。代理不仅可以帮助爬虫绕过反爬虫机制,还能保护开发者的隐私。本文将介绍如何在Python中使用代理进行网络爬虫,包括基本的设置和示例代码。 1. 代理…

WordPress多用途电子商务博客新闻主题betheme 21.5.6版本

简介: WordPress多用途电子商务博客新闻主题betheme 21.5.6版本 自带500多套模板 BeTheme第一次发布于2014年5月21日,自那时以来,已有数以百万计的人下载了BeTheme,其评分为4.8。 这个主题是WooCommerce支持的,在此…

Git代码管理规范

1. 简介 git 分支分为集成分支、功能分支和修复分支,分别命名为 develop、feature 和 hotfix,均为单数。不可使用 features、future、hotfixes、hotfixs 等错误名称。 master(主分支,永远是可用的稳定版本,不能直接在…

mybatis xml 动态sql相关语法

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace"com.xiaKangan.mapper.EmpMapper&qu…

JavaScript 文档元素获取

目录 通过id获取文档元素 任务描述 相关知识 什么是DOM 文档元素 节点树 通过id获取文档元素 编程要求 通过类名获取文档元素 任务描述 相关知识 通过类名获取文档元素 编程要求 通过标签名获取文档元素 任务描述 相关知识 通过标签的名字获取文档元素 获取标…

android13 关闭selinux 临时关闭或者永久关闭

总纲 android13 rom 开发总纲说明 目录 1.前言 2.情况分析 2.1 临时关闭 2.2 永久关闭 3.修改方法 3.1 临时修改 3.2 永久关闭 4.编译测试 5.彩蛋 1.前言 在Android操作系统中,SELinux(Security-Enhanced Linux)是一种安全模块,用于提供强制访问控制(MAC)安全…

IDEA自定义注释模版

1.类&#xff08;接口/枚举等同理&#xff09; 2.方法模版 先自定义一个模版组&#xff0c;然后在里面添加模版名&#xff0c;触发快捷键&#xff08;Tab/Enter&#xff09;&#xff0c;模版描述&#xff0c;哪些语言中应用 模版中的自定义参数params和returns可以自动展开参数…

Linux学习记录(五)-------三类读写函数

文章目录 三种读写函数1.行缓存2.无缓存3.全缓存4.fgets和fputs5.gets和puts 三种读写函数 1.行缓存 遇到新行&#xff08;\n&#xff09;,或者写满缓存时&#xff0c;即调用系统函数 读&#xff1a;fgets,gets,printf,fprintf,sprintf写&#xff1a;fputs,puts,scanf 2.无缓…

Golang | Leetcode Golang题解之第328题奇偶链表

题目&#xff1a; 题解&#xff1a; func oddEvenList(head *ListNode) *ListNode {if head nil {return head}evenHead : head.Nextodd : headeven : evenHeadfor even ! nil && even.Next ! nil {odd.Next even.Nextodd odd.Nexteven.Next odd.Nexteven even.N…

贷齐乐系统sql注入漏洞

目录 源码 代码流程 payload编写 全局污染 php小特性 注入思路 payload构造 获取数据库名&#xff0c;这里是不可以使用database的因为括号被过滤乐 在information中查询数据库名 然后获取表名 获取数据 源码 <?php header("Content-type: text/html; char…

基于ssm+vue+uniapp的网上商城小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

mac要装虚拟机吗

在Mac上安装虚拟机可以带来多种好处&#xff0c;‌但同时也存在一些潜在的影响。‌ 首先&#xff0c;‌虚拟机技术允许在同一设备上运行多个操作系统&#xff0c;‌这对于需要测试不同操作系统兼容性的开发者和IT专业人员来说非常有用。‌此外&#xff0c;‌虚拟机还能解决软件…

fastadmin自定义弹框,以及回调函数等问题,

效果图 1&#xff0c; 代码 弹框中使用弹框 弹框1代码主要代码 <div class"form-group ccol-xs-12 col-sm-2" style"text-align: right"><a href"#" data-url"{:url(user/add)}" class"btn btn-info" id"a…

【多线程】如何实现三个线程循环打印ABC

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. 如何实现三个线程顺序打印ABC1.1 详细要求描述1.2 使用join()1.3 实现代码1.4 运行结果 2. 如何实现三个线…

小白零基础学数学建模系列-Day6-微分方程模型基础与案例

文章目录 1 微分方程模型概述1.1 微分方程的基本概念和分类1.2 微分方程在科学计算中的重要性1.3 使用Python进行微分方程建模的优势 2 Python在微分方程建模中的应用2.1 常用Python库介绍2.2 Python的符号计算与解析解2.3 Python的数值计算与数值解 3 解微分方程的基本方法与P…