更换内置硬盘后未导出数据库,如何从外置硬盘恢复数据库?
前置检查
- 确认旧硬盘已被当前系统正常挂载识别:Windows在文件资源管理器查看对应盘符,macOS在访达边栏确认挂载条目,Linux执行
lsblk查看块设备挂载路径,确保旧硬盘无坏道、文件系统报错,可正常浏览目录内容 - 提前关闭新硬盘上运行的所有同类型数据库服务,避免端口占用、文件锁冲突,防止恢复过程触发写入错误
- 注意:恢复前需记录旧硬盘上原数据库的大版本号,新旧版本必须完全匹配,跨版本直接替换存储目录大概率会导致服务启动失败
分数据库类型的恢复操作
MySQL / MariaDB
- 在外置旧硬盘中定位原数据库的默认存储路径:
- 旧Windows系统:
X:\ProgramData\MySQL\MySQL Server [对应版本号]\Data(X为外置盘分配的盘符) - 旧Linux/macOS系统:外置盘挂载路径下的
/var/lib/mysql目录
- 旧Windows系统:
- 将整个Data目录完整复制到新系统的MySQL存储路径下,替换空的初始化目录
- 调整目录权限:Linux/macOS下执行
chown -R mysql:mysql [新系统下的Data目录路径],Windows下给运行MySQL的系统账号分配该目录的完全控制权限 - 启动数据库服务,执行查询语句验证原有库表、数据是否完整
PostgreSQL
- 定位旧硬盘上的PostgreSQL数据存储目录:
- 旧Windows系统:
X:\Program Files\PostgreSQL\[对应版本号]\data - 旧Linux/macOS系统:外置盘挂载路径下的
/var/lib/postgresql/[对应版本号]/main
- 旧Windows系统:
- 停止新系统的PostgreSQL服务,将旧数据目录完整替换到新系统的PostgreSQL存储路径下
- 调整目录权限为postgres用户所有后,启动服务验证数据完整性
SQLite 等文件型本地数据库
- 直接在外置旧硬盘的原项目目录中,找到后缀为
.db、.sqlite、.sqlite3的数据库文件 - 无需启动独立数据库服务,直接将文件复制到新项目的指定存储路径,修改项目配置中的数据库文件指向即可正常读取
异常排查
- 若数据库启动提示权限错误:检查复制后的数据目录是否保留原所有者、组权限,不要直接用普通管理员权限运行数据库服务
- 若启动后看不到原有业务库:确认数据目录下的系统表文件(如MySQL的
ibdata1、PostgreSQL的PG_VERSION)未遗漏,不要仅单独复制业务库文件夹 - 若旧硬盘目录提示无访问权限:Linux下使用
sudo权限读取目录,Windows下右键对应文件夹选择“取得所有权”后再操作
内容的提问来源于stack exchange,提问作者younes hamitouche
相关产品推荐
相关产品推荐

