温馨提示×

CentOS SQL Server数据库恢复步骤是什么

小樊
42
2025-12-17 20:23:10
栏目: 云计算

CentOS 上 SQL Server 数据库恢复步骤

一 准备与检查

  • 确认备份文件可用:通常为 .bak(数据/差异)与 .trn(事务日志)。在 Linux 上通过 sqlcmd 执行还原,RESTORE 是 T‑SQL 命令而非系统命令。必要时先用 SSMS 或 sqlcmd 校验备份可用性。
  • 将备份放到实例可访问路径,例如 /var/opt/mssql/backups,并确保 mssql 用户对目录有读写权限:
    sudo mkdir -p /var/opt/mssql/backups
    sudo chown mssql:mssql /var/opt/mssql/backups
    sudo chmod 700 /var/opt/mssql/backups
  • 若备份来自云平台或包含多个库,先查看备份集信息:
    sqlcmd -S localhost -U SA -P ‘<密码>’ -Q “RESTORE HEADERONLY FROM DISK=‘/var/opt/mssql/backups/xxx.bak’”
    如需指定第 N 个备份集,使用 WITH FILE=N;查看数据/日志文件逻辑名:
    sqlcmd -S localhost -U SA -P ‘<密码>’ -Q “RESTORE FILELISTONLY FROM DISK=‘/var/opt/mssql/backups/xxx.bak’”。

二 使用 T‑SQL 还原

  • 基本完整恢复(适用于简单场景):
    sqlcmd -S localhost -U SA -P ‘<密码>’ -Q “RESTORE DATABASE [YourDB] FROM DISK=‘/var/opt/mssql/backups/YourDB.bak’ WITH RECOVERY”

  • 指定新库名并移动文件(当目标路径或库名不同时):

    1. 获取逻辑名:
      sqlcmd -S localhost -U SA -P ‘<密码>’ -Q “RESTORE FILELISTONLY FROM DISK=‘/var/opt/mssql/backups/YourDB.bak’”
    2. 还原并 MOVE(示例逻辑名:YourDB、YourDB_log):
      sqlcmd -S localhost -U SA -P ‘<密码>’ -Q "
      RESTORE DATABASE [NewDB]
      FROM DISK=‘/var/opt/mssql/backups/YourDB.bak’
      WITH MOVE ‘YourDB’ TO ‘/var/opt/mssql/data/NewDB.mdf’,
      MOVE ‘YourDB_log’ TO ‘/var/opt/mssql/data/NewDB_log.ldf’,
      REPLACE, RECOVERY""
  • 多备份集与时间点恢复(完整 → 差异 → 日志):

    1. 完整备份(末尾 NORECOVERY,便于后续还原):
      sqlcmd -S localhost -U SA -P ‘<密码>’ -Q "
      RESTORE DATABASE [YourDB]
      FROM DISK=‘/var/opt/mssql/backups/YourDB_Full.bak’
      WITH NORECOVERY, STATS=5"
    2. 差异备份(如存在,末尾 NORECOVERY):
      sqlcmd -S localhost -U SA -P ‘<密码>’ -Q "
      RESTORE DATABASE [YourDB]
      FROM DISK=‘/var/opt/mssql/backups/YourDB_Diff.bak’
      WITH NORECOVERY, STATS=5"
    3. 事务日志备份(最后一个用 RECOVERY,中间用 NORECOVERY):
      sqlcmd -S localhost -U SA -P ‘<密码>’ -Q "
      RESTORE LOG [YourDB]
      FROM DISK=‘/var/opt/mssql/backups/YourDB_Log.trn’
      WITH RECOVERY""

三 使用 SSMS 图形界面

  • 在 Windows 上用 SSMS 连接到 CentOS 上的 SQL Server 实例,右键 Databases → Restore Database,选择 Device 并添加 .bak
  • Source 选择源库,Destination 可修改目标库名;在 Files 页按需设置数据/日志文件的新路径。
  • 若需继续还原日志,首轮选择 Options → Recovery state: RESTORE WITH NORECOVERY;随后对后续日志依次还原,最后一个日志选择 RESTORE WITH RECOVERY

四 常见问题与验证

  • 备份集顺序与时间点:日志还原必须按时间顺序连续执行,缺一环将无法前滚到最终时间点。
  • 多库备份集:一个 .bak 可能包含多个备份(如系统库与目标库),用 RESTORE HEADERONLY … WITH FILE=N 指定读取第 N 个备份集。
  • 权限与路径:确保运行 SQL Server 的 mssql 用户对备份目录和目标数据目录具备读写权限,且目标目录已存在。
  • 一致性校验与后续维护:还原后执行 DBCC CHECKDB 校验一致性,必要时重建索引并更新统计信息,确认应用功能与性能正常。

0