原因: 由于一次未知原因,服务器停机后,导致数据库不能启动,由于刚接手项目,对此数据库的配置不是那么清晰,分析了很多,最后还是没发正常启动。由于发现数据idb文件还在,最后就采取了险招,重新安装mysql,通过mysql的idb文件来恢复数据。

解决:

第一步: 完全卸载mysql数据库

ubantu 彻底卸载mysql
sudo apt-get autoremove --purge mysql-server
sudo apt-get remove mysql-common
sudo rm -rf /etc/mysql/  /var/lib/mysql
#清理残留数据
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
sudo apt autoremove
sudo apt autoclean

第二步: 重新安装mysql数据库

Ubantu下安装mysql8可自行百度;参考链接:https://www.linuxidc.com/Linux/2018-11/155408.htm

安装后可能出现:
mysql 数据库不允许远程连接: ‘Host’ is not allowed to connect to this mysql server

方法一:修改 host 表进入mysql数据库,选择mysql
mysql> use mysql;选择 host 表
mysql> select host from user;更新 host, 然后退出。
mysql> update user set host = '%' where user='root';重启数据库, 完成。
service mysqld restart

如果报错:Access denied for user ‘XXX’@’XXX’ (using password: YES) 请参考我的另一篇博文:
https://blog.csdn.net/qq_23035335/article/details/100522054

第三步:恢复数据

通过idb文件 恢复mysql数据

  • 首先需要一个跟要恢复的表结构完全一致的表。
    (在建表语句末尾加上 ROW_FORMAT=compact 或 ROW_FORMAT=DYNAMIC(mysql8默认);(InnoDB的行记录格式有 Compact, Redundant, Compressed, Dynamic,具体要看自己的mysql用的是哪种)备份的表结构可以从备份库,测试库搞定表结构,可以删掉外键约束,后面执行会方便很多。)
  • 然后执行ALTER TABLE 表名 DISCARD TABLESPACE。(ALTER TABLE table_name DISCARD TABLESPACE)
    (这里一定不能手动删除ibd文件,如果删除了会导致mysql停止后无法重启)
  • 把要恢复的ibd文件复制到mysql的data文件夹下。
    (默认路径是/var/lib/mysql/数据库名,在执行恢复之前,就应该已经知道了数据存储目录,同时也把所有的idb文件已备份,用于恢复。copy到目标位置后得检查下权限,是不是mysql:mysql,不然执行下面的导入语句时会报错:找不到对应的idb,实际可能是对应的idb文件权限不足)
  • 然后执行ALTER TABLE 表名 IMPORT TABLESPACE。(ALTER TABLE table_name IMPORT TABLESPACE)

完成,数据恢复成功,表很多的话可以采取一些批量处理措施,不然工作量会有点大。

附:导出数据库到文件
/usr/bin/mysqldump -u root -密码 --default-character-set=utf8 数据库名> ./database_db.sql

mysql通过idb文件,恢复数据库相关推荐

  1. mysql 基于idb文件恢复数据

    目录 mysql 基于idb文件恢复数据 创建shcema 将新建表关联 复制idb文件 import表 mysql 基于idb文件恢复数据 适用于mysql8.0+,mysql5版本没测试过 数据库 ...

  2. MySQL利用.ibd文件恢复数据库

    MySQL利用.ibd文件恢复数据库 1.需要在新的数据库中新建一个与原来表格表结构相同的表,字段名称相同: 2.清空新建表的表空间 alter table <表名> discard ta ...

  3. MySQL通过数据文件恢复数据库

    问题: 电脑的系统坏了,得重新安装系统.此时的 MySQL 也无法使用了.只能将 MySQL 的数据拿出来. 但是把数据文件夹覆盖新系统上的 MySQL 数据文件夹,启动之后居然报错!!! 解决办法: ...

  4. mysql 从data文件恢复数据库

    服务器系统突然崩溃,数据库又没有备份,只有原数据库文件夹存在.下面简单说一下通过这些数据库文件恢复数据. 1.安装与原数据库相同版本的 mysql,如:原来安装的是mysql-5.5.59-winx6 ...

  5. mysql 用idb文件恢复数据

    最近公司mysql数据库坏掉了 最要命的是ibdata1文件出现了损坏 导致数据库启动失败 尴尬了于是默默的保存了 date目录下的数据结构 然后 google 找办法是否可以利用data目录下的数据 ...

  6. mysql 使用sql文件恢复数据库

    数据库被我误删了,差点就跑路了... 然后从备份的云端导除了sql文件 mysql -u root -p use app; source d:123.sql 本来肯定是不叫123的 方便打字,这样容易 ...

  7. 利用frm和idb文件恢复mysql数据

    .frm和.idb文件是Mysql数据库使用InnoDB数据库引擎时产生的两个文件. ~表名.frm文件存储的相关表的表结构.索引等元数据. ~表名.idb文件存储的相关表中的数据记录. 第一步:下载 ...

  8. Mysql中如何根据.frm和.idb文件恢复表结构

    .frm和.idb文件是Mysql数据库使用InnoDB数据库引擎时产生的两个文件. ~表名.frm文件存储的相关表的表结构.索引等元数据. ~表名.idb文件存储的相关表中的数据记录. 举例: ad ...

  9. mysql 二进制日志 解析c++_mysql二进制日志文件恢复数据库

    二进制日志的文件的作用 mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句.如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所 ...

最新文章

  1. 如何正确的学习Blender-入门到精通课程
  2. 循环数组函数c语言,C语言练习题2(分支结构循环结构数组函数2009-2012二级真题)..doc...
  3. asp.net获取客户端信息
  4. 从Windows 2012标准版升级到数据中心版
  5. Kafka参数broker.id详解
  6. 计算机公共基础知识实验报告,20140902413 李雪瑞 计算机工程系实验报告345.docx...
  7. linux中控和安卓中控哪个比较好,原厂中控和改装中控有什么区别?哪个更好?...
  8. sql 成功率_备考2022年MBA: 如何提高清华、北大MBA提前面试成功率|博雅汇MBA
  9. kafka:topic为什么要进行分区?副本机制是如何做的?
  10. 传感器 esp8266_如何使用ESP8266微控制器构建烟雾传感器
  11. 集群间动态扩展和删除hdfs的datanode和hbase的regionserver
  12. 反垄断重锤字节跳动,投资业务原地熄火 腾讯阿里争做“普通公司”
  13. Ubuntu开机加速
  14. 微信支付“下单账号和支付账号不一致,请核实后再支付”
  15. 在python3 encode和decode 的使用
  16. 用python绘制玫瑰花
  17. 解决“由于文件许可权错误 word无法完成保存”问题
  18. 热塑性塑料/热塑性橡胶
  19. ArcGIS产品---ArcGIS Enterprise概述
  20. WAV、PCM(波形文件)格式分析与详解

热门文章

  1. 腾讯再次投资国外著名游戏开发商 入股Epic布局长远
  2. 爬虫_app 5.3 adb工具
  3. Python Flask框架
  4. 每日学习一个设计模式--观察者模式(发布-订阅模式)
  5. 谷歌地图开发地图不能显示_Google,为什么地图不能让我在家工作?
  6. 大津二值化算法(Otsu)
  7. 笔记|数据分析:指标体系中的标准化方法
  8. 欧拉角和四元数之间是如何转换的?
  9. 使用mockjson-server 搭建 mock-server
  10. linux浏览器切换内核,电脑切换浏览器内核模式浏览网页的详细方法