当前位置: 代码网 > it编程>数据库>Mysql > 通过mysql中的Data目录恢复数据库数据的实践

通过mysql中的Data目录恢复数据库数据的实践

2026年08月16日 Mysql 我要评论
系统表(mysql 库)损坏,导致服务启动失败、连接失败以及数据库表不存在。操作前请将原 data 文件进行备份。第一步:使用 innodb_force_recovery 强制启动 mysql(只读模

系统表(mysql 库)损坏,导致服务启动失败、连接失败以及数据库表不存在。

操作前请将原 data 文件进行备份。

第一步:使用 innodb_force_recovery 强制启动 mysql(只读模式)

1. 停止 mysql 服务

1.1 打开cmd窗口,输入:services.msc

1.2 在服务窗口中找到 mysql 停止服务。

2. 打开 c:\programdata\mysql\mysql server 5.7\my.ini 配置文件。

在末尾或任何空行,添加以下两行:

innodb_force_recovery = 1   #让 innodb 引擎强制启动(跳过一些检查,允许你读取数据)
skip-grant-tables   #绕过权限表检查,避免因 mysql.columns_priv 缺失而启动失败。

3. 保存文件,然后启动mysql服务。

注意:此模式下mysql是只读的,不允许写入,使我们导出数据。

第二步:导出所有业务数据库(关键操作)

1. 使用管理员身份打开cmd窗口,进入 mysql 的 bin 目录:

cd /d "c:\program files\mysql\mysql server 5.7\bin"

2. 使用 mysqldump 导出所有业务库(你用到的数据库),同时跳过系统库(mysql、performance_schema、sys):

mysqldump --skip-grant-tables --databases xxx xxxx xxx > d:\backup_all.sql
  • --skip-grant-tables:绕过权限检查,避免因系统表损坏而报错。
  • --databases:后面跟的是你所有需要恢复的库名(若忘记库名,此时可以通过navicat查看库名,数据库表为空状态)
  • 导出文件保存到 d:\backup_all.sql,路径可自行修改
  • 检查sql文件是否存在,确认数据已导出。

第三步:关闭服务,移除 my.ini 中的添加项

1. 停止 mysql 服务。

2. 再次打开 my.ini,删除 第一步-步骤2 添加的两行命令。

第四步:重建系统表(清空data,重新初始化)

1. 将当前的 data 文件夹重命名为 data_old_full(作为完整备份,包含旧 ibdata1)。

2. 创建一个新的空文件夹,命名为 data (位置不变 c:\programdata\mysql\mysql server 5.7\data)。

3. 以管理员身份打开 cmd,进入 bin 目录,执行初始化(无密码):

mysqld --initialize-insecure --datadir="c:\programdata\mysql\mysql server 5.7\data" --console

成功后,新的 data 目录下会生成完整的系统表(但没有业务数据)。

步骤五:导入之前导出的 sql 文件

1. 启动 mysql 服务。

2. 导入备份文件:

mysql -u root -p < d:\backup_all.sql

注意:密码直接回车,因为初始化时无密码。

步骤六:设置密码

1. 打开 cmd 窗口,输入

mysql -u root -p
alter user 'root'@'localhost' identified by '你的新密码';
flush privileges;

到此这篇关于通过mysql中的data目录恢复数据库数据的文章就介绍到这了,更多相关mysql data目录恢复 内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com