...
运维

数据磁盘满了后增加新硬盘扩展原硬盘软链接(mklink)方案

一、背景:数据库突然写不进数据了

有没有遇到这种场景:

某天数据库突然异常,发现是磁盘空间不足
再一看,数据库的数据目录或日志目录(比如 D:\Database\Data)已经塞满了,而你只有另一个磁盘(比如 E:)还剩大量空间。

如果你正面临以下限制:

  • 当前项目已上线,不能修改数据库配置路径
  • 数据文件庞大,迁移花时间
  • 其他磁盘有空间,但数据库程序只认原路径

别急,一条命令就能解决 —— mklink


二、mklink 是什么?

mklink 是 Windows 自带的命令行工具,可以创建软链接(符号链接)。

你可以理解为:创建一个假的文件夹/文件,其实内部指向了另一个路径

程序会以为你还在用原来的 D:\Database\Data,但实际上你已经把数据存到了 E:


三、实战案例:释放数据库空间

假设数据库的数据目录在:

D:\Database\Data

步骤 1:关闭数据库服务

先停掉数据库服务,防止读写冲突:

net stop mysql   # 示例,具体看你的数据库服务名

步骤 2:移动数据目录到新磁盘

move D:\Database\Data E:\DatabaseData

此时,D:\Database\Data 这个原始路径已经空了。


步骤 3:使用 mklink 创建目录符号链接

mklink /D D:\Database\Data E:\DatabaseData

执行后,D:\Database\Data 会变成一个“伪装门口”,实则内部已经跳转到 E:\DatabaseData


步骤 4:重启数据库服务

net start mysql

程序和服务丝毫不知情,但你已经巧妙地把数据搬了家。


四、这种做法有什么好处?

零配置变更:不需要改数据库配置文件
快速见效:几分钟就能完成整个搬迁
安全可靠:不影响服务启动、数据访问
节省磁盘空间:彻底解决“原盘空间打爆”的问题


五、适用于哪些数据库?

这方法适用于大多数部署在 Windows 上的数据库

  • MySQL / MariaDB
  • SQL Server
  • MongoDB
  • PostgreSQL
  • SQLite(单文件)
  • 甚至本地开发用的轻量级数据库或缓存服务

六、一些注意事项

问题 解决方案
无法创建链接? 请用「管理员身份」运行 CMD
移动数据失败? 确保数据库服务已完全关闭
怎么知道链接成功? dir 命令查看目录类型,应该是 <SYMLINKD>
删除链接会删数据吗? 删除链接本身不会删除目标文件夹数据

七、拓展场景

你也可以用 mklink 做:

  • 日志文件夹转移
  • 数据备份目录链接
  • 多环境共用配置
  • 跨盘共享数据资源

八、总结

磁盘满了不是末日,不一定非得删数据、扩容或重建路径。
在 Windows 下,mklink 是一个老派但实用的武器,能帮你优雅地处理这种临时性资源瓶颈问题。

只需一条命令,你就能把数据“搬走”,而系统、程序、服务完全不知情


附:mklink 命令语法速查

mklink            # 创建文件软链接
mklink /D         # 创建目录软链接(最常用)
mklink /J         # 创建目录联接(Junction,速度更快)
特性 mklink /D(目录符号链接) mklink /J(目录联接 Junction)
支持跨分区 ✅ 可以指向不同盘符(如 C: → D:) ✅ 可以指向不同盘符
是否为符号链接(软链接) ✅ 是 ❌ 不是(是一种 NTFS 的“挂载”机制)
是否被识别为链接 ✅ 是符号链接,部分程序能识别 ❌ 在大多数程序眼中就是普通目录
需要 NTFS 文件系统
权限需求(Win10+) 需要管理员权限或启用开发者模式 管理员权限即可
支持远程路径 ✅ 可以链接网络路径 \server\dir ❌ 不支持网络路径
被删除目录的行为 链接仍在,但会提示“目标不存在” 链接仍在,但访问会报错
推荐用途 更像 Linux 的软链接,适合跨设备、备份、数据复用等 更快更兼容,适合软件目录重定向、大型数据挂载
奇葩问题解决 Windows 共享错误 0x80004005
biu biu biu
PHP 在 Console 控制台模式下的进度显示 标准输出 打印 Navicat Premium 15破解 windows Navicat Premium 注册出现 Rsa Public Key not Find... Uninstall Tool 绿色版下载 微信网页版发送消息代码 windows cmd控制台隐藏运行