记一次 Windows MySQL 恢复
程序员文章站
2023-11-19 15:48:04
0x00 事件 因为本地的服务器硬件出现故障,导致一台 Windows 系统的开发环境挂了,且无法短时间内恢复状态。 应急方案是使用了云上的系统重建了开发环境。 开发人员说需要挂了的那台 Windows 开发环境中的数据库数据,因为一些数据只有那个环境里面有。于是找了把螺丝刀把硬盘拆下来,用移动硬盘 ......
0x00 事件
因为本地的服务器硬件出现故障,导致一台 windows 系统的开发环境挂了,且无法短时间内恢复状态。
应急方案是使用了云上的系统重建了开发环境。
开发人员说需要挂了的那台 windows 开发环境中的数据库数据,因为一些数据只有那个环境里面有。于是找了把螺丝刀把硬盘拆下来,用移动硬盘盒将数据库的数据目录拉了出来,因为 windows 环境是使用的是mysql作为数据库存储数据,所以准备用「冷备」的方式将数据导出。
吾在 linux 系统中装了 mysql,停下服务后将备份的 windows 数据库整个数据目录覆盖进去数据目录,接着重启服务,启动失败了:
jan 15 12:01:30 izo7e61fz42ik0z mariadb-prepare-db-dir[7537]: database mariadb is probably initiali jan 15 12:01:30 izo7e61fz42ik0z mariadb-prepare-db-dir[7537]: if this is not the case, make sure th jan 15 12:01:31 izo7e61fz42ik0z mysqld_safe[7567]: 190115 12:01:31 mysqld_safe logging to '/var/log jan 15 12:01:31 izo7e61fz42ik0z mysqld_safe[7567]: 190115 12:01:31 mysqld_safe starting mysqld daem jan 15 12:01:32 izo7e61fz42ik0z systemd[1]: mariadb.service: control process exited, code=exited st jan 15 12:01:32 izo7e61fz42ik0z systemd[1]: failed to start mariadb database server. -- subject: unit mariadb.service has failed -- defined-by: systemd -- support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- unit mariadb.service has failed.
跟着这个错误,在网上找到一些方法仍然没能解决。
0x01 恢复
于是思考是不是系统环境造成,然后在另一台 windows 机器上安装了 mysql,重现之前那台 windows 的数据库环境,再次尝试以冷备的方式导出开发数据。
安装完mysql后停止服务:
覆盖目录:
以无密码的方式启动服务,执行完命令之后终端会 hang 住:
!
再打开一个终端登录数据库导出 sql:
问题解决。
总结:此次数据迁移的难题在与在 linux 环境的 mysql 中导入 windows 环境 mysql 的 data 目录,导致 linux 中的 mysql 无法运行服务从而无法导出数据,在笔者的解决方法中,就是还原其本身的环境——在 windows 中建立 mysql 服务,将 data 覆盖进去解决。
推荐阅读