mysql innodb数据库损坏导致无法启动
生产环境中的mysql突然启动不了,查了原因是innodb库错误,以前就遇到过这个问题,稀里糊涂的没解决,结果导致大量数据丢失。这些又遇到这个问题,果断把那个有问题的数据库移动了别的地方,启动了mysql使用。然后正好赶上中秋节假期,所以花了两天时间认真查资料,一点点的解决问题。
因为我是用docker做了一个沙箱,但是启动不起来,在这里上面浪费了半天的时间。这个跳过,直接说一下思路和过程。有什么问题可以微信我(winsonhsu)备注mysql技术交流
整个过程需要三个库 we7 we7_old we7_tmp
1.备份数据库文件夹we7
2.设置数据库为恢复模式innodb_force_recovery = 3
3.启动数据库we7
4.此时可以看到库里的innodb数据表都没有显示出来.只有myiasm表
4.创建一个新库we7_tmp
5.使用navcat的tools>>data transfer 库建从we7到新库we7_tmp 这样就把myiasm库都复制过去了
6.还原一个过去备份的数据库we7_old,用navcat里的tool>>structure synchronization工具进行架构比较,只比较表,得到差异后只复制增加的表语句,得到innodb的表结构 innodb.sql
7.在we7_tmp中执行innodb.sql
8.将复制过来的.ibd文件与.frm文件发生联系。具体就是在控制台执行下面命令:
for f in \((ls *.ibd); do echo "alter table" \)(basename $f .ibd) " import tablespace;" >> import.sql; done
得到import.sql文件等一下使用
恢复表数据需要首先将原先的.ibd文件与原先的.frm文件解除绑定,具体就是在控制台执行下面命令:
for f in \((ls *.ibd); do echo "alter table" \)(basename $f .ibd) " discard tablespace;" >> discard.sql; done
得到discard.sql语句等一下使用
9在we7_tmp库中执行discard.sql
10.将we7文件夹中的ibd文件全部拷贝过来
cp /www/backup/we7_test/*.ibd /www/docker/mysql/data/we7_test/
设置权限为全部可以读写
11.在we7_tmp库中执行import.sql
12.设置完成后删除we7和we7_old数据库 将we7_tmp数据库重命名为we7 写一个rename.sh
#!/bin/bash
# 假设将we7_tmp数据库名改为we7
# MyISAM直接更改数据库目录下的文件即可
mysql -uroot -pmD4Yyxrb3tcLDLFw -e 'create database if not exists we7_test'
list_table=$(mysql -uroot -pmD4Yyxrb3tcLDLFw -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='we7_tmp'")
for table in $list_table
do
mysql -uroot -pmD4Yyxrb3tcLDLFw -e "rename table we7_tmp.$table to we7_test.$table"
done
执行./rename.sh
数据库修复完成,全部数据都回来了
mysql innodb数据库损坏导致无法启动的更多相关文章
- mysql 5.7 停电导致无法启动、如何备份数据,重新安装mysql
用于记录服务器停电导致,mysql启动失败后,如何备份数据,重新安装mysql,主要分为数据备份,mysql重新安装. 1.mysql无法启动时,进行数据备份. 执行:systemctl start ...
- MySQL Innodb数据库性能实践——热点数据性能
摘要: 对于大部分的应用来说,都存在热点数据的访问,即:某些数据在一定时间内的访问频率要远远高于其它数据. 常见的热点数据有“最新的新闻”.“最热门的新闻”.“下载量最大”的电影等. 为了了解MySQ ...
- MySQL Innodb数据库误删ibdata1后MySQL数据库的恢复案例
上周,以前公司的同事朋友找我帮忙,看看能否帮忙恢复一个MySQL 数据库,具体情况为:数据库版本为MySQL 5.6(具体版本不清楚),也不清楚具体的数据库引擎; 没有数据库备份,只剩下数据库下面 ...
- Mysql InnoDB 数据更新/删除导致锁表
一. 如下对账表数据结构 create table t_cgw_ckjnl ( CNL_CODE ) default ' ' not null comment '通道编码', CNL_PLT_CD ) ...
- MySQL InnoDB数据库备份与还原
备份 进入cm黑窗口 输入下列命令 mysqldump -u 用户名 -p 数据库名称> c:\11.sql 回车执行 恢复 进入cm黑窗口 输入下列命令 mysql>use dbtest ...
- 记:cloudstack--gluster主存储上的一个文件损坏导致SSVM启动失败
cloudstack的系统vm(ssvm不停的重建失败).- 1.cloudstack-management 的关键日志 这行 cannot read header 'mnt.......':Inva ...
- MySQL数据库INNODB 表损坏修复处理过程
MySQL数据库INNODB 表损坏修复处理过程 博客分类: mysql tomcatmysql 最近mysql数据库经常死掉,用命令net stop mysql命令也无法停掉,关闭Tomcat的时 ...
- mysql的InnoDB 数据库引擎TableSpace Exists 问题
Mysql数据库报错: ERROR 1813 (HY000): Tablespace '`coll`.`t1`' exists. 原因:在使用InnoDB引擎的数据库中,所有已经存在的表都使在使用In ...
- mysql的innodb数据库引擎详解
http://www.jb51.net/softjc/158474.html 这篇文章主要介绍了mysql的innodb数据库引擎,需要的朋友可以参考下 一.mysql体系结构和存储引擎 1. ...
随机推荐
- [2]windows内核情景分析--系统调用
Windows的地址空间分用户模式与内核模式,低2GB的部分叫用户模式,高2G的部分叫内核模式,位于用户空间的代码不能访问内核空间,位于内核空间的代码却可以访问用户空间 一个线程的运行状态分内核态与用 ...
- 1617:转圈游戏 ybt
1617:转圈游戏 时间限制: 1000 ms 内存限制: 524288 KB提交数: 540 通过数: 326 [题目描述] nn 个小伙伴(编号从 00 到 n−1n−1 ...
- redis之基础命令
一.redis介绍 1.redis特性 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件 redis是c语言编写的,支持数据持久化,是key-val ...
- List的子类特点
List的子类特点: ArrayList: 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector: 底层数据结构是数组,查询快,增删慢 ...
- Promise初尝试
promise.ts export function showAlert() { console.log("开始调用showAlert"); return new Promise( ...
- 彻底搞清楚javascript中的require、import和export(js模块加载规范的前世今生)
为什么有模块概念 理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块. 但是,Javascript不是一种模块化编程语言,在es6以前,它是不支持”类”(class),所以也 ...
- 20190710记录:去掉中转图,直接以1280*1024进行反坐标计算,填补pbFinal。
1.记录:去掉中转图,直接以1280*1024进行反坐标计算.pbFinal=1280*1024. // Imagejoint.cpp : 定义控制台应用程序的入口点. // #include &qu ...
- MySQL、sqlalchemy、pymysql、mysqldb、DBAPI之间关系梳理(终于明白了)
MySQL.sqlalchemy.pymysql.mysqldb.DBAPI之间关系梳理(终于明白了) python3不再支持mysqldb 请用pymysql和mysql.connector 问题背 ...
- 自定义Camera的setPictureSize拍照完毕出现花屏怎么解决
Camera.Parameters parameters = mCamera.getParameters();// 获得相机参数 List<Camera.Size> sizes = par ...
- Qt编写自定义控件25-自定义QCustomPlot
一.前言 上次在写大屏数据可视化电子看板系统时候,提到过改造QCustomPlot来实现柱状分组图.横向柱状图.横向分组图.鼠标悬停提示等.这次单独列出来描述,有很多人疑问为啥不用QChart,或者e ...