将MySQL的库目录复制到data中,恢复库中数据

前言

前段时间要重启一下mysqld服务,结果不知道为何mysqld关掉后就再也起不来了😭mysql

尝试屡次后无果,准备重装MySQL。不过在卸载MySQL前把datadir目录复制了一份,准备在重装后用datadir目录恢复数据sql

下面开始恢复数据code

恢复数据

注:如下步骤中若是你遇到了问题,能够尝试下文中的下一个标题:遇到的问题和问题的解决方案中提供的解决方案class

  1. 卸载前复制一份datadir,命名为data_old(便于区分)
  2. 重装并能成功启动MySQL后,先关闭mysqld,再将datadir(这是新安装的MySQL的数据目录)复制一份,命名为data_copy
  3. 假设datadir指定的目录为data。删除data中的ibdata1ib_logfile0ib_logfile1。将data_old中的ibdata1复制到data
  4. data_old中你但愿恢复的库的目录都复制到data
  5. 重启mysqld服务
  6. 尝试查询库和库中的表数据,数据存在且可访问表示数据恢复成功、

遇到的问题和问题的解决方案

  • 在步骤5中出现打开库后提示表不存在。解决方案:重启mysqldfile

  • 在步骤5中出现打开表时提示权限问题,打不开表。解决方案:查看data目录的权限用户和你要恢复的库目录的权限用户是否一致。解决方案:修改库目录的权限用户权限

    我当时旧库目录的权限用户是root,而data目录的权限用户是mysql,结果打开表时出现权限问题。尝试chown -R mysql:mysql <databaseDir>命名

为何不直接用旧data目录取代新data目录

我不知道大家能不能,反正我不能😂。尝试将整个旧的data目录覆盖新的data,结果mysqld根本运行不起来。因此我只能一个一个把库目录从旧data复制到新data数据

相关文章
相关标签/搜索