# 前言
前段时间要重启一下mysqld
服务,结果不知道为什么mysqld
关掉后就再也起不来了😭
尝试多次后无果,准备重装MySQL
。不过在卸载MySQL
前把datadir
目录复制了一份,准备在重装后用datadir
目录恢复数据
下面开始恢复数据
恢复数据
注:以下步骤中如果你遇到了问题,可以尝试下文中的下一个标题:遇到的问题和问题的解决方案中提供的解决方案
- 卸载前复制一份
datadir
,命名为data_old
(便于区分) - 重装并能成功启动
MySQL
后,先关闭mysqld
,再将datadir
(这是新安装的MySQL
的数据目录)复制一份,命名为data_copy
- 假设
datadir
指定的目录为data
。删除data
中的ibdata1
,ib_logfile0
,ib_logfile1
。将data_old
中的ibdata1
复制到data
中 - 将
data_old
中你希望恢复的库的目录都复制到data
中 - 重启
mysqld
服务 - 尝试查询库和库中的表数据,数据存在且可访问表示数据恢复成功、
遇到的问题和问题的解决方案
-
在步骤5中出现打开库后提示表不存在。解决方案:重启
mysqld
-
在步骤5中出现打开表时提示权限问题,打不开表。解决方案:查看
data
目录的权限用户和你要恢复的库目录的权限用户是否一致。解决方案:修改库目录的权限用户我当时旧库目录的权限用户是root,而
data
目录的权限用户是mysql,结果打开表时出现权限问题。尝试chown -R mysql:mysql <databaseDir>
为什么不直接用旧data目录取代新data目录
我不知道你们能不能,反正我不能😂。尝试将整个旧的data
目录覆盖新的data
,结果mysqld
根本运行不起来。所以我只能一个一个把库目录从旧data
复制到新data
里