说在前头
养好定时备份的习惯,每隔一段时间就备份数据库
此方法需要重装MySQL,不到万不得已不要使用此方式,做好数据留存!!!
先去查看数据库服务无法启动的原因,会查看日志很重要,后面有提到如何查看日志
查看错误日志
我所使用的MySQL版本 MySQL 8.4 mysql-8.4.0-winx64.msi
注意要恢复的数据库版本一定是一样的,不同版本的可能会不行(博主也没试过恢复不同的版本,网上看下来的都没有说版本不一样的)
目录
背景
博主暂停了MySQL的服务后无法再次启动,试了很多方法都不行,但是最近的数据又没有进行备份,所以只能通过ibd的方式去恢复。
网上很多都是关于8.0之前的版本,但是就是没有8.0后对博主有实际帮助了,为此也踩了不少坑
直接的操作方法
1.暂停MySQL服务
参考下面的方法
2.找到原始数据库的ibd文件即Data文件夹
选择默认安装Mysql都在 这几个位置
当然每个人的版本或保存的地方不一样,找到对应的data数据文件夹就好
C:\ProgramData\MySQL\MySQL Server 8.4\Data
C:\Program Files\MySQL\MySQL Server 8.4\data
这些文件夹就是对应的每一个数据库
将整个Data文件夹复制多一份(物理备份)注意是整个Data文件夹免得漏东西
3.迁移数据
重装完MySQL后再次找到存放ibd文件的Data文件夹,将需要恢复的数据库复制过去
重点需要把这4个文件也一同复制到Data里面去,博主试过只替换这4个文件即可,
auto.cnf、ib_buffer_pool、ibdata1、mysql.ibd
4.启动MySQL服务
重新启动数据库服务,就会神奇的发现,原有的数据库都恢复了,里面的表的结构、表数据都无损恢复了 参考了MySQL通过Data恢复数据库 - 风香客 - 博客园的8.0前版本的数据恢复
停止&开启MySQL服务
方法1 使用命令行
查询名称
MySQL84 这里指的是你的MySQL版本 默认是直接MySQL就行 如果不行就需要加上确切的MySQL服务名称
如果不知道自己MySQL服务的确切名字 使用以下命令查询
sc query | findstr MySQL
停止服务
net stop MySQL84
启动服务
net start MySQL84
方法2 找到服务启动项
win + r 输入 services.msc
找到MySQL服务即可手动点击停止或启动
查看错误日志
找到错误日志文件,通常日志文件在Data文件夹里面
以你的计算机命名后缀为err的文件
翻到最后面查看具体的错误内容
尝试过的努力
尝试过的努力1
直接把my.ini文件里面的数据执行改为我备份的数据库
# Path to the database root
datadir=C:/ProgramData/MySQL/MySQL Server 8.4/Data
修改 datadir 的路径
失败,直接启动不了服务
尝试过的努力2
参考mysql利用.ibd文件恢复数据_mysql ibd恢复-CSDN博客
Mysql 通过 .ibd 文件恢复数据
使用ibd文件进行恢复 只复制对应的数据库文件夹,替换部分文件
ALTER TABLE tb_user DISCARD TABLESPACE;
ALTER TABLE tb_user IMPORT TABLESPACE;
失败,执行import时出现,没办法import成功
1808 - Schema mismatch (CFG file is missing and source table is found to have row versions. CFG file is must to IMPORT tables with row versions.)
CFG file is missing and source table is found to have row versions报错原因分析 - 柴米油盐酱醋 - 博客园
另外参考的一些资料,说不定能给到你们些帮助
本地计算机上的 mysql 服务启动后停止,不重置解决问题_本地计算机上的mysql服务-CSDN博客
如何通过mysql的data文件恢复数据和从中遇到的各种报错以及解决方案_mysql data文件夹恢复数据-CSDN博客