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

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值