探案录 | DBA有难题,人大金仓会出手

文章讲述了在IT技术背景下,数据库遭遇访问失败时,如何通过主备复制架构中的auto_bmr功能快速检测和修复物理或逻辑坏块,确保数据安全。作者强调备份的重要性以及人大金仓KingbaseES数据库的auto_bmr工具在提升数据恢复效率中的作用。
摘要由CSDN通过智能技术生成

8223a03e395bbda23e818cdbc8da12c2.jpeg

“叮叮叮……”

夏洛克·福尔摩斯·K刚研磨好咖啡粉,准备冲一杯美味的咖啡来享受周末的美好时光,电话铃声却突然响起,但他并没有停下手里的动作,因为水马上开了。

响了三声铃声后,华生·K放下报纸,接起电话。

“福尔摩斯·K先生,我们遇到了麻烦!”华生·K还未开口,电话那头就传来了急切的声音。

7fac9a2c0d6d566f6c54f9742a8a4be6.png

1923a4fb9ad913957b69f6ec0a79bb30.jpeg

e63c0a19348d0eb7ef8294e03d6a14d7.png

“好的,请你先冷静?”华生·K试图安抚对方。“能告诉我,你是谁吗?”

“华生·K?福尔摩斯·K先生呢?”Z客户问道,“我是B市XX证券公司的DBA,Z”。

华生·K耐心回答:“好的,Z先生,你可以告诉我是什么问题,我会转达给福尔摩斯·K。”

此时福尔摩斯·K已经冲好了咖啡,准备享用。

“我们数据库发生了业务访问数据库失败的现象,收到了大量用户的投诉…”Z的声音听起来很焦急。

……

1f767b43dc7e375c4ec6596f6e348819.jpeg

周末赶往公司,惨

喝完咖啡的福尔摩斯·K披上风衣,随着华生·K一起出了门,直奔客户现场。在路上,华生也向福尔摩斯说明了客户遇到的情况。

XX公司的Z先生在收到投诉后,马上进行了测试,在执行数据查询时,返回了如下报错:

123ac4de71c02b31a56d6e86e12df510.png

“这是数据坏块。”

“是的。”

“物理坏块还是逻辑坏块,检查数据库硬件了吗?”

“没有,客户也没说。”华生·K回答。

09419163fde8a465bb7bdcd89e7dc679.png

“建议他们先检查硬件是否损坏,如I/O故障、磁盘故障、内存问题等,再检查操作系统是否故障。这些都会导致数据库不能识别块,所以校验无效,要么块包含的全是0,要么块头损坏。数据库可以使用checksum对物理坏块进行检测。”

ba4b605c59ef9889eae0cc3f5d7d646c.jpeg

如果checksum已启用,则为每个数据页计算校验和。检测到校验和失败将导致读取数据时出错,并将中止当前正在运行的事务。因此,这为直接在数据库服务器级别检测I/O或硬件问题带来了额外的控制。

当数据落盘后,由于人为修改了块里具体的值,导致数据库读取的时候,重新计算的checksum值和块头存储的checksum值不一致,导致物理坏块。所以物理坏块也会校验块内容。

eae15eefada42c699b264748ca03d95c.png

华生·K立刻给客户发消息。

“如果检查出故障,那么建议替换掉故障的硬件,换重装操作系统,然后进行……对了,他们有主备流复制集群吧?”福尔摩斯·K想起什么来,话题一转问道。

华生·K依然在笔记本上敲击键盘,但不耽误他回答:“他们有主备集群,也许还存在备份。”

“那就可以进行块介质恢复,这样做就不需要恢复整个数据库的所有文件了。”只要有备份存在,数据就有挽救的机会。

定位故障,轻松解决问题

当福尔摩斯·K和华生·K赶到,Z已经将数据库硬件检查了一遍,很遗憾并没有发现问题所在,只能委托福尔摩斯·K出手了。不一会儿的功夫,在福尔摩斯·K的一番操作下,Z看到丢失的数据成功从备份恢复后,终于舒了一口气。

dfc0a18e95a4dec631529600320a1254.png

“主机硬件故障、存储硬件和软件故障、操作系统故障、数据库软件故障,甚至应用软件压力过大都可能导致数据库出现坏块。本次故障原因主要是数据块的头信息被写坏,导致头信息与数据块内容不匹配。还好只是丢失了部分数据块,通过备份恢复即可修复。”福尔摩斯·K说道。

Z先生受益匪浅,“那么怎么进行数据块损坏的恢复呢?”

华生·K:“常见的数据块损坏恢复流程是:首先确定故障范围,如物理坏块或者逻辑坏块,如果是物理坏块,则检查和替换故障硬件,然后确定坏块影响的数据库对象。接着就能选择合适的方法进行数据恢复,最后检验和评估是否恢复完整。”

华生·K展示了一张图:

5a62171ea6f308127b579c363d393d9b.png

为了周末不加班,必须使出杀手锏

福尔摩斯·K:“任何时候,有备份是一切数据安全的前提,无论是oracle数据库,还是IBM的Informix数据库,要对数据坏块损坏进行修复,都要建立在有效备份的基础之上。”

Z先生连连点头,“原来如此,看来我还得多多学习,万一再遇到数据坏块,也有能力应对”。

“你可以选择一种更快速、高效的恢复方法。主备流复制集群中,主数据库访问持久化用户表数据、索引时,从磁盘读取数据块到共享缓冲区,如果检测到坏块,就会自动从备节点获取坏块的副本,并修复坏块。”福尔摩斯·K对Z说。

Z顿时倍感兴趣:“还有这种办法吗?怎么样能做到呢?”

977c9f002c3077f46e2585cf672ecbf7.jpeg

华生·K完成了检验和评估的收尾工作,转过身来说到:“很简单,人大金仓KingbaseES数据库auto_bmr工具就能实现这个功能,让主备复制这种架构发挥其高可用的特性,提升数据块坏块的恢复效率。”

Z惊叹不已,说道:“还能自动恢复,这也太方便了,请福尔摩斯·K先生务必教我使用KingbaseES数据库的auto_bmr!”

福尔摩斯·K打开了数据库,“先检查数据库对auto_bmr extension的支持。”接着执行了如下命令:

91d8d1281d186698bcf0104cfda762f0.png

“数据库是支持auto_bmr extension的。接下来就是创建auto_bmr extension了。”福尔摩斯说道,又在电脑上执行了创建命令。

fd6283f1aaecae55fd9d077fb5dfc6f1.png

创建成功,此时可以查看auto_bmr的配置了:

39a17f42a1b21b2fa777e786bb4a6341.png

d0d3b2d463fd787b25a7f5c30a1ec8a4.png

注:auto_bmr的配置参数说明

通过查看上面这些参数,福尔摩斯·K便确定已经开启了auto_bmr了,但他还需要进行一些测试来验证这个功能。

“那么接下来,就模拟一下主数据库数据块障碍吧,当然,是在我自己实验用的集群上。”福尔摩斯·K活动了一下手指,准备大展拳脚。

先执行以下操作,查看表存储信息:

3537280168175e54d1ca18047f176bcc.png

“表格正常,开始模拟表数据文件块故障。”

80778fd204a36b5dc90d1b747a5a635c.png

查看是否模拟成功,先重启数据库服务清理缓存:

d9a4003f56e977d3fa85e6638ec6ceec.png

重启完成后,福尔摩斯·K再次执行了表数据查询,然后界面上就出现了以下信息:

23f38daef89566310cc0574753cc897f.png

可以看到出现了故障,在执行自动修复时,无法识别function。

“进展很顺利啊。”华生·K说道。

福尔摩斯·K会心一笑,回道:“是啊,接下来就是创建auto_bmr的extension了。”

42e261fbffeea31124bdacbfe2602ed1.png

福尔摩斯·K调出主库的日志sys_log,日志中果然存在自动恢复的信息:

5139f8f6d6318a72cb8b1f7d7a4fffa6.png

“成功了,来验证一下吧。交给你了,华生·K。”福尔摩斯·K一脸轻松地说道。

“没问题。”

华生·K分别在主库和备库上执行了查询操作:

292114dd5a7a35d4d6a36eba510e237e.png

3a26c845a41deeff78b0327d791becf2.jpeg

“看,主库在表文件故障的情况下,我们通过auto_bmr功能读取备库数据实现了块修复。”华生·K笑着对Z说。

“太棒了,这个功能实在是太好用了。”Z先生很激动的说道,“我这就去给我们公司的数据库用上这个功能”

“不过还有几个约束点要告诉你:

1.只支持主库自动块修复,需要将auto_bmr.enable_auto_bmr参数设置为1,并且需要创建auto_bmr扩展插件;

2.如果checksum没有打开,只检测块的头部是否有效;cheksum打开时,会同时检查块的头部和块数据是否有效;

3.如果开启了zero_damaged_pages,这个参数会在块修复结束后才生效。”

“华生·K说得没错,使用时注意这几点就没问题。”

金仓数据库auto_bmr让你的周末不被打扰

坐在回家的车上,福尔摩斯·K和华生·K讨论起这次故障。

091096cd46b21b3bf82191b0c874056e.jpeg

0a714e6f497a72acbaa57c31d911d465.jpeg

“结合实际的业务场景,在主备复制这种架构下,当主库出现物理坏块时,启用auto_bmr功能后,可以快速地通过备库的数据块修复主库的物理坏块,解决数据坏块恢复的复杂问题,并提升业务数据的安全性。”


“是的,华生·K。数据存储的安全,是数据库最基本的功能。保证用户业务数据的安全,是数据库最基本的需求之一。当出现数据存储故障时,快速恢复数据也是对数据库管理最基本的诉求。人大金仓KingbaseES数据库 auto_bmr工具通过主备复制的高可用架构,有效提升集群架构中数据坏块恢复的效率,这对确保用户业务数据的安全来说,难道不是一件大大的好事吗?”


福尔摩斯·K望着屏幕外的你,开口道:“我说得对吗,朋友?”

618c3f1f2ea8088c955ebb524774d6e0.png供稿:产品研发中心

编辑:王堇

审核:日尧

59dd02a8b82138599091f1630eb6cc85.gif

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值