数据库运维
记录DBA学习成长历程

简历案例-备份没有,日志也没开情况下数据恢复

案例背景

硬件:联想服务器(IBM) 磁盘500G 没有raid
软件环境:centos 6.8 mysql 5.6.33 innodb引擎 独立表空间
备份没有,日志也没开
开发用户专用库:
jira(bug追踪) 、 confluence(内部知识库) ------>LNMT

故障描述

断电了,启动完成后“/” 只读
开发人员fsck 重启,系统成功启动,mysql启动不了。
结果:confulence库在 , jira库不见了
注意:以后不要fsck重启,先进行镜像磁盘dd if =/dev/sda of=/dev/sdb

解决办法:表空间迁移

没有备份没有主从,没有日志,jira库问题中关村恢复
将生产库confulence,拷贝到1:1虚拟机上/var/lib/mysql,直接访问时访问不了的
虚拟机测试,表空间迁移:
(1)创建一模一样的t1空表
create table t1 
(2)删除空表的表空间ibd
alter table confulence.t1 discard tablespace;
(3)拷贝准备好的ibd,改权限导出表空间到t1表
alter table confulence.t1 import tablespace;
处理问题思路:
confulence库中一共有107张表。
1、创建107和和原来一模一样的表。
他有2016年的历史库,我让他去他同时电脑上 mysqldump备份confulence库
mysqldump -uroot -ppassword -B confulence --no-data >test.sql
拿到你的测试库,进行恢复
到这步为止,表结构有了。
2、表空间删除。
select concat('alter table ',table_schema,'.'table_name,' discard tablespace;') from 
information_schema.tables where table_schema='confluence' into outfile '/tmp/discad.sql';
source /tmp/discard.sql
执行过程中发现,有20-30个表无法成功。主外键关系
很绝望,一个表一个表分析表结构,很痛苦。
set foreign_key_checks=0 跳过外键检查。
把有问题的表表空间也删掉了。
3、拷贝生产中confulence库下的所有表的ibd文件拷贝到准备好的环境中
select concat('alter table ',table_schema,'.'table_name,' import tablespace;') from 
information_schema.tables where table_schema='confluence' into outfile '/tmp/import.sql';
4、验证数据
表都可以访问了,数据挽回到了出现问题时刻的状态(2-8)

 

赞(1)
MySQL学习笔记 » 简历案例-备份没有,日志也没开情况下数据恢复