简介
当你的 MySQL 数据库服务器异常宕机,导致 ibdata 文件损坏,引起 MySQL 数据库无法启动。而正巧遇到没有备份的情况下,对于全栈开发人员,刚刚从事 DBA 人员,处理起来会感觉有点无从下手。
下面的分享内容将会从真实案例的复盘为切入点,详细介绍如何一步一步恢复业务数据,为大家提供切实有效的 MySQL 数据库应急解决方案。
本文将通过三个部分,来介绍如何恢复业务表记录:
如何从 frm 文件中读取建表语句
如何通过 ibd 文件恢复业务记录
编写 shell 脚本一键恢复业务记录
MySQL 数据库 ibdata1 文件损坏故障介绍
在 MySQL 数据库运维过程中,碰到过很多各种各样的故障,在这里,给大家介绍一个 MySQL 数据库 ibdata1 文件损坏故障。
在这里先介绍一下 MySQL 数据库 ibdata1 的作用,当 MySQL 数据库的参数 innodb_file_per_table = 0 时,ibdata1 会存储以下信息:
表记录数据和索引数据
数据字典信息
双写缓冲区数据
回滚段数据
如果 MySQL 数据库的参数 innodb_file_per_table = 1,ibdata1 文件则不会存储表记录数据和索引数据。如果 ibdata1 文件损坏,轻则造成数据库异常,重则造成数据库无法启动。
下面就来看看曾经碰到的 ibdata1 文件损坏故障情况,项目组开发告诉,他们自己维护的 MySQL 数据库没有数据库备份,MySQL 数据库已经无法启动,因停电,造