当前位置: 首页 > backend >正文

数据库大文件损坏后,数据恢复操作(记录)

原因 :
数据表结构复杂且数据量大 , 加之疏忽管理未做备份 , 导致单表数据量过大 , 一次放假后数据库单表访问异常 程序访问数据库时提示 表满异常如下 , 初步以为是并发过高( 误认 ) 查看后无高并发出现, 但慢sql访问单表时均过长 , 使用重启大发 重启mysql服务 , 重启之后出现大问题 , ,直接导致表无法打开 , 只要访问异常表会直接导致mysql服务异常停止 , 启用强制恢复后 备份表原文件 *.idb *.frm , 后重建对应表结构 程序恢复正常状态 , 后导出对应文件期待恢复
在这里插入图片描述问题出现时现场状态 :
硬盘150G固态( 系统盘 ) 1T机械硬盘( 逻辑分区 ) , 8G内存 , 文件保存分区的文件格式 NTFS , 数据库引擎 INNODB , 数据单表大小4.1G ,单表无法打开
后续尝试恢复操作 :
① 还原到本地数据库 , 由于本地数据库表结构 , 由于本地使用的是mysql8.0 , 所以操作时创建表结构后替换掉idb文件重启 mysql服务 , 结果跟在线上状态相同( 访问表数据时服务直接停止 )
②强制恢复后可以查询表总数据量( 绝望的开始 ) , 之后发现在访问时数据库错误日志暴涨 , 查询日志 出现异常如下 , 查询后得知是表ID与目标表不符合 ,
1) 查询目标表id为 6977
2) 创建表id至6977
在这里插入图片描述
③表ID完成后打开

Tablespace '*/data_product_event_collection' Page [page id: space=6977, p

结果 ( 最笨的办法写在最后 ) :
使用mysql binlog进行数据恢复
①使用mysqlbinlog “H:\app\MySQL Server 5.7\data\mysql-log.000061” -vv > 000061.binlog 进行log文件导出 , 用于查看起始位置方便执行后续操作( C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqlbinlog ) , 查看时可能看到乱码不必慌张 , 编码格式比较乱 , 打开大文件软件推荐UltraEdit ( 试用30天 )
在这里插入图片描述
② 执行指令 mysqlbinlog --database=database --start-position=8441152 --stop-position=8442430 “H:\app\MySQL Server 5.7\data\mysql-log.000116” | mysql -uroot -p123456 进行数据还原 ( 直接 )执行还原时可能会出现如下异常 , 大概率是起止位置选择的有问题 建议先选较短的语句进行执行 找下规则 , 剩下就是等待了
在这里插入图片描述
结论 :
数据库进行及时增量备份 , 或者整机同步 减少异常状态发生 , 表结构尽量简单 减少异常的发生且方便查询操作执行 避免慢SQL出现 , 对于暂时无法变更的表进行拆表保存 , 由于暂时未找到更加简单快捷的方式 , 执行binlog恢复操作

http://www.xdnf.cn/news/15202.html

相关文章:

  • windows exe爬虫:exe抓包
  • 开源“具身大脑” 实现不同机器人群体协作-RoboBrain
  • 电力分析仪的“双语对话”:CCLinkIE与Modbus TCP的无缝连接
  • ParaCAD 笔记 png 图纸标注数据集
  • 小木的机器学习日记——KNN
  • Flowable 使用遇到问题
  • 深度学习×第8卷:优化器与训练流程进阶——她开始跑起来,学着一次次修正自己
  • 大模型及agent开发6 OpenAI Assistant API 高阶应用 - 流式输出功能
  • pytorch的介绍以及张量的创建
  • css——width: fit-content 宽度、自适应
  • Express + @vladmandic/face-api + mySql 实现人脸识别
  • 深度学习篇---松科TPU部署代码分析
  • excel如何只保留前几行
  • JAVA ---Excel高效导入(去重1000万数据对比)
  • 【Qt 学习之路】Qt Android开发环境搭建:Ubuntu的Vmware虚拟机中的踩坑实录
  • 国产AI linux 桌面安装详解 (deepin 深度)
  • MinIO配置项速查表【五】
  • Pandas:数据变形
  • 零基础入门指南:华为数通认证体系详解
  • 从0开始学习R语言--Day44--LR检验
  • Android simpleperf生成火焰图
  • 炎热工厂救援:算法打造安全壁垒
  • MS1826+MS9332 4K@30Hz HD4×2视频分割器
  • ## SQLITE:多表(子母表)联合查询【DA_Project笔记】
  • 如何将 iPhone 文件传到 Mac?
  • Python七彩花朵
  • 4万亿英伟达,凭什么?
  • 安全监测预警平台的应用场景
  • Linux 下使用 VS Code 远程 GDB 调试 ARM 程序
  • 探索飞算 JavaAI 进阶:解锁高效Java开发的新维度