原因: 由于一次未知原因,服务器停机后,导致数据库不能启动,由于刚接手项目,对此数据库的配置不是那么清晰,分析了很多,最后还是没发正常启动。由于发现数据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还原数据_mysql通过idb文件,恢复数据库相关推荐

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

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

  2. mysql .ibd恢复数据_mysql 根据ibd文件恢复数据

    恢复 recover_user.ibd 文件 1.创建数据库recover_ibd 2.创建相同结构表(若有其他库中相同结构表,可根据show create table recover_user;获取 ...

  3. MySQL基于日志还原数据

    简介 Binlog日志,即二进制日志文件,用于记录用户对数据库操作的SQL语句信息,当发生数据误删除的时候我们可以通过binlog日志来还原已经删除的数据,还原数据的方法分为传统二进制文件还原数据和基 ...

  4. linux ora 01157,案例:Oracle报错ORA-01157 ORA-01110 数据启动报错RMAN恢复数据库思路

    天萃荷净 rman从多份备份中还原操作,运维DBA工程师反映数据库在进行恢复时报错ORA-01157 ORA-01110,分析原因为11号数据文件需要recover 1.数据恢复ORA错误 RMAN& ...

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

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

  6. oracle怎么恢复删除数据库数据库文件,Oracle只有数据文件恢复数据库

    Oracle只有数据文件恢复数据库 恢复前准备工作 1备份数据文件,文件路径为%ORACLE_NOME%/oradata/xxxx(xxxx为数据库实例) 2备份ORACLE安装路径下的D:\app\ ...

  7. mysql ibd文件还原_Mysql 通过ibd文件恢复数据

    由于未关闭mysql服务就将服务器重启,导致服务器无法重启,使用fsck修复磁盘后启动服务器后,发现mysql数据文件损坏和丢失,但还存在idb文件. 数据库版本:5.7.20 什么是idb文件 如何 ...

  8. MySQL命令导入表数据_Mysql命令行导入sql数据

    mysqldump  是在  操作系统命令行下运行的,不是在 MySQL 命令行下运行的. 登陆数据库: 登陆本地mysql : mysql -h localhost -u root -p123456 ...

  9. mysql 备份表和数据_Mysql数据库备份(一)------数据库备份和表备份

    一.Mysql中的数据备份: Mysql中数据备份使用的命令是:mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中.mysqldump命令的 工作原 ...

最新文章

  1. Just enough(刚刚好)的软件开发文档什么样?
  2. python爬虫面试遇到的问题
  3. X权限 gpasswd getent 命令详解
  4. 深入理解Transformer及其源码
  5. 什么是面向对象,为什么要面向对象
  6. 程序猿的爱情--2011-01-05
  7. 【计算机网络】关于IP数据报 首部检验和的反码问题(二进制反码)
  8. 服务器数据库密码修改了,服务器密码修改后数据库
  9. 【转】pom.xml详解
  10. 深度报告 | 4G应用启示录与5G应用展望
  11. 腾讯业务架构:六大事业群
  12. java 二进制转换为十进制_二进制转换十进制 算法解析
  13. 留在一线,逃离一线?我从上海举家回老家的生活经历告诉你!
  14. TFP与TFTP的联系与区别
  15. 网络信息检索(一)检索模型:布尔,向量,概率检索
  16. Win实用好用软件清单推荐
  17. 去除硬盘安全删除硬件图标
  18. 拼多多的商业模式和营销套路
  19. java上传图片怎么查看,Java上传图片并查看
  20. 好用的拍照识别翻译的软件有哪些?这3个工具你知道吗?

热门文章

  1. hashCode()方法的作用使用分析
  2. 获取 Web 设计的免费资源
  3. 753 Cracking the Safe
  4. [Leedcode][JAVA][第45题][跳跃游戏 II][贪心算法]
  5. ZOJ -3203 三分+数学
  6. 1195C. Basketball Exercise
  7. android tv字体,best登陆「永久地址0365.tv」android默认字体android使用代码使用新的字体的常用代码...
  8. bower overrides 配置
  9. cisco服务器维修,面向终端的AMP控制台的思科维护的排除列表更改
  10. python 读取excel太慢_Python 读取excel并转换为字典