...
运维

数据磁盘满了后增加新硬盘扩展原硬盘软链接(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
共享打印机0x0000011b修复的另一种方法 yarn 设置淘宝镜像 yarn 错误There appears to be trouble with your network connection. Retrying... win11 安装限制去除 跳过TPM CPU检测 附软件 win11 桌面不满足要求水印去除 适用于跳过TPM CPU检测安装后的桌面水印 php正则获取网页中的json