数据恢复咨询热线:400-666-3702  

欢迎访问南京兆柏数据恢复公司,专业数据恢复15年

兆柏数据恢复公司

 常见问题

 当前位置: 主页 > 常见问题

故障解析

浏览量: 次 发布日期:2023-10-09 22:41:30

故障解析

作者:徐文梁

爱可生 DBA 成员,一个执着于技术的数据库工程师,主要负责数据库日常运维工作。擅长 MySQL,Redis 及其他常见数据库也有涉猎;喜欢垂钓,看书,看风景,结交新朋友。

本文来源:原创投稿

* 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

四月份的时候,遇到一次实例异常 crash 的问题。当时数据库自动重启,未对生产造成影响,未做处理,但是还是记录了下错误信息,错误日志中有如下信息:

因为当时自动恢复了,并未重视这个问题,然后六月份的时候实例又 crash 了。查看报错信息,报错信息如下:

两次的报错信息很相似,出现一次是偶然,两次就值得重视了。虽然之前很幸运未对生产造成影响,但是如果后面哪一天异常了导致实例无法启动,那不就是妥妥的一个生产故障嘛,作为 DBA 要有忧患意识,必须要提前准备好应对之策,针对此类问题,该如何排查以及解决?通过查阅资料和向前辈请教,也算有所收获,想着如果有其他同学遇到类似问题也可作为参考,于是有了此文。

一般来说,数据页损坏,错误日志中都会显示具体的 page number,其他情况暂不考虑。在此前提下,根据实例状态可以将数据页损坏分为以下两种场景:实例能正常启动实例无法正常启动

场景不同,处理方法也略有不同,下面分别展开详细分析:

此时借助通过错误日志中的信息,可以通过查询元数据表获取数据页所属信息。考虑生产环境信息安全,在测试环境建立测试表进行展示。

测试环境表结构如下:

根据错误信息中提示的 page number 信息来查看数据页信息,查询方式如下:

上海数据恢复

注意:查询 INNODB_BUFFER_PAGE 系统表[1] 会对性能有影响,因此不建议随意在生产环境执行。

另外,如果错误日志中有提示 和 相关信息,则也可以通过如下方式(涉及 INNODB_SYS_INDEXES[2] 和 INNODB_SYS_TABLES[3] 系统表 )进行查询:

根据上面的查询结果,确定损坏的页是属于主键还是辅助索引,如果属于主键索引,因为在 MySQL 中索引即数据,则可能会导致数据丢失,如果是辅助索引,删除索引重建即可。

此时可以通过两种方式尝试拉起实例。

使用 innodb_force_recovery[4] 参数进行强制拉起 MySQL 实例。

正常情况下 值应该设置为 0。当紧急情况下实例无法正常启动时可以尝试将其设置为 >0 的值,强制拉起实例然后将数据逻辑备份导出进行恢复。 值最高支持设置到 6,但是值为 4 或更大可能会永久损坏数据文件。因此当强制 InnoDB 恢复时,应始终以 开头,并仅在必要时递增该值。

使用 inno_space[5] 工具进行数据文件进行修复。

inno_space 是一个可以直接访问 InnoDB 内部文件的命令行工具,可以通过该工具查看 MySQL 数据文件的具体结构,修复 。更多参考[6]

如果 InnoDB 表文件中的 page 损坏,导致实例无法启动,可以尝试通过该工具进行修复,如果损坏的只是 ,inno_space 可以将 跳过,从而保证实例能够启动,并且将绝大部分的数据找回。示例:

经过前面分析,了解数据页损坏场景的处理方式。哪怕极端场景下,也可以做到从容不慌,尽可能少丢数据甚至能够不丢数据。但是如果是生产环境,尤其是金融行业,是无法容忍丢失一条数据的,比较有可能这一条数据就涉及几个小目标呢,因此,重要的事情说三遍,一定要备份!一定要备份!一定要备份![1]

innodb_buffer_page: https://dev.mysql.com/doc/refman/5.7/en/information-schema-innodb-buffer-page-table.html[2]

innodb_sys_indexes: https://dev.mysql.com/doc/refman/5.7/en/information-schema-innodb-sys-indexes-table.html[3]

无锡数据恢复

innodb_sys_table: https://dev.mysql.com/doc/refman/5.7/en/information-schema-innodb-sys-tables-table.html[4]

innodb_force_recovery: https://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html[5]

inno_space: https://github.com/baotiao/inno_space[6]

inno_space 工具介绍:

http://mysql.taobao.org/monthly/2021/11/02/

本文关键字:#MySQL# #inno_space# #InnoDB#

SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。目前支持各种数据库规则 700+。

? Github https://github.com/actiontech/sqle

? 文档 https://actiontech.github.io/sqle-docs/

? 官网 https://opensource.actionsky.com/sqle/

相关推荐

. 硬盘数据恢复建议书,全方位解析与实用技巧

. 联想硬盘坏了怎么办,全面解析维修与数据恢复策略

. 硬盘数据恢复拆盘,拆盘操作与数据恢复技术解析

. 控制器坏了如何修复视频,控制器故障排查与视频修复技巧解析

. 硬盘数据恢复图书,从原理到实践的技术解析

. emcc存储和ssd,EMCC存储优化与SSD性能提升技术解析

. 硬盘数据恢复从哪学,从原理到实践的技术解析

. 磁盘阵列硬盘坏了数据如何恢复,专业方法与案例解析

. 联想笔记本硬盘损坏,联想笔记本硬盘故障排查与维修指南

. 绵阳 硬盘数据恢复,专业方法与实用技巧解析

. 希捷西数硬盘数据恢复,全方位解决方案与常见问题解析

. 达梦数据库comment报错,达梦数据库comment错误解析与应对策略

. 市中区西数硬盘数据恢复,专业软件与技巧解析

. 磁盘阵列坏了怎么修复啊,RAID磁盘阵列故障诊断与修复全攻略

. 戴尔笔记本硬盘损坏怎么办,戴尔笔记本硬盘故障排查与修复指南

. 移动硬盘维修价目表,价格影响因素与故障类型

. 达梦数据库启动过程中会加载哪些文件,达梦数据库启动文件加载解析

. 数据恢复中心有哪些,揭秘硬盘故障与数据丢失的解决方案n2. 硬盘数据恢复攻略:数据恢

. 磁盘阵列常见故障,RAID磁盘阵列故障解析与应对策略

. 戴尔笔记本硬盘损坏修复,戴尔笔记本硬盘故障排查与修复指南