You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker中Microsoft SQL Server容器如何带数据迁移到新主机

MSSQL Docker实例跨主机最快迁移方案

你当前部署架构下所有实例数据(含系统库、用户库、账号密码、配置、作业)全部持久化在外部命名卷MSSQL中,不需要做传统的数据库备份还原,直接迁移Docker卷是速度最快、完整性最高的方案,停机窗口仅为卷数据传输耗时。

1. 旧主机停服保证数据一致性

进入旧主机存放docker-compose.yml的目录,执行停服命令,禁止传输过程中有新数据写入造成文件损坏:

docker compose down

注意:绝对不要加-v参数,否则会直接删除本地存储的MSSQL数据卷。

2. 导出卷数据并传输到新主机

不需要手动找WSL2里Docker卷的底层存储路径,直接用临时容器打包卷数据,规避WSL2跨文件系统的权限问题:
在旧主机执行以下命令,会在当前目录生成全量数据压缩包:

docker run --rm -v MSSQL:/source -v $(pwd):/backup alpine tar czf /backup/mssql_migrate.tar.gz -C /source .

两台主机网络连通的前提下,直接用scp传输压缩包到新主机即可:

scp mssql_migrate.tar.gz <新主机登录用户>@<新主机IP>:<新主机存放压缩包的路径>

3. 新主机导入数据启动服务

  • 先在新主机安装和旧主机大版本一致的Docker、Docker Compose环境,不需要提前拉取MSSQL镜像,启动服务时会自动拉取对应版本。
  • 在新主机创建同名的外部Docker卷:
docker volume create MSSQL
  • 进入新主机存放压缩包的目录,执行命令把备份数据导入新卷:
docker run --rm -v MSSQL:/target -v $(pwd):/backup alpine tar xzf /backup/mssql_migrate.tar.gz -C /target
  • 把旧主机上原有的docker-compose.yml原封不动复制到新主机的任意工作目录,执行启动命令:
docker compose up -d

异常处理

如果容器启动失败,先执行docker logs <mssql容器ID>查看日志,若报目录权限错误,执行以下命令修复卷内文件归属后重启容器即可:

docker run --rm -v MSSQL:/var/opt/mssql mcr.microsoft.com/mssql/server:2019-latest chown -R mssql:mssql /var/opt/mssql

验证

容器启动后等待10~15秒让数据库完成初始化,直接使用旧实例原有的SA密码、连接参数访问新主机1433端口即可,所有数据、配置、账号完全和旧实例停服时一致,不需要额外配置。

内容的提问来源于stack exchange,提问作者qkhanhpro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 09:12:22