温馨提示×

Ubuntu上SQL Server备份恢复流程是怎样的

小樊
45
2025-12-12 04:26:43
栏目: 云计算

Ubuntu上SQL Server备份与恢复流程

一 环境准备与权限

  • 安装客户端工具:sudo apt-get update && sudo apt-get install -y mssql-tools unixodbc-dev,确保能在命令行使用 sqlcmd。如使用本机实例,连接主机可填 localhost。为备份目录(如 /var/opt/mssql/backups)设置属主与权限:sudo mkdir -p /var/opt/mssql/backups && sudo chown mssql:mssql /var/opt/mssql/backups && sudo chmod 700 /var/opt/mssql/backups。执行备份前确认 SQL Server 服务为运行状态。

二 备份流程

  • 手动完整备份(示例):/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ‘YourPassword’ -Q “BACKUP DATABASE [YourDatabaseName] TO DISK = N’/var/opt/mssql/backups/YourDatabaseName_full.bak’ WITH INIT, COMPRESSION, STATS = 5”。其中 INIT 覆盖同名文件,COMPRESSION 减少体积,STATS 显示进度。
  • 差异与日志备份:差异示例:sqlcmd -S localhost -U SA -P ‘YourPassword’ -Q “BACKUP DATABASE [YourDatabaseName] TO DISK = N’/var/opt/mssql/backups/YourDatabaseName_diff.bak’ WITH DIFFERENTIAL, INIT, STATS = 5”;日志示例:sqlcmd -S localhost -U SA -P ‘YourPassword’ -Q “BACKUP LOG [YourDatabaseName] TO DISK = N’/var/opt/mssql/backups/YourDatabaseName_log.bak’ WITH INIT, STATS = 5”。
  • 自动化备份脚本与定时任务:将备份命令写入脚本(如 backup_mssql.sh),赋予可执行权限,并用 crontab -e 添加计划任务(如每日 **0 1 * * *** 执行)。示例脚本与定时写法可参考下述实践。

三 恢复流程

  • 仅完整备份恢复:sqlcmd -S localhost -U SA -P ‘YourPassword’ -Q “RESTORE DATABASE [YourDatabaseName] FROM DISK = N’/var/opt/mssql/backups/YourDatabaseName_full.bak’ WITH RECOVERY”。
  • 完整+差异恢复:先恢复完整备份并指定 NORECOVERY,再恢复差异备份并指定 RECOVERY。示例:sqlcmd -S localhost -U SA -P ‘YourPassword’ -Q “RESTORE DATABASE [YourDatabaseName] FROM DISK = N’/var/opt/mssql/backups/YourDatabaseName_full.bak’ WITH NORECOVERY”;随后 sqlcmd -S localhost -U SA -P ‘YourPassword’ -Q “RESTORE DATABASE [YourDatabaseName] FROM DISK = N’/var/opt/mssql/backups/YourDatabaseName_diff.bak’ WITH RECOVERY”。
  • 完整+日志恢复(FULL 恢复模式):完整备份与差异备份步骤同上(均用 NORECOVERY),随后依次恢复各日志备份,最后一条日志使用 WITH RECOVERY 使数据库上线。示例:sqlcmd -S localhost -U SA -P ‘YourPassword’ -Q “RESTORE LOG [YourDatabaseName] FROM DISK = N’/var/opt/mssql/backups/YourDatabaseName_log1.bak’ WITH NORECOVERY”;…;sqlcmd -S localhost -U SA -P ‘YourPassword’ -Q “RESTORE LOG [YourDatabaseName] FROM DISK = N’/var/opt/mssql/backups/YourDatabaseName_logN.bak’ WITH RECOVERY”。
  • 图形化恢复:也可使用 SSMS 连接到实例,在“任务”中选择“备份/恢复”,按向导执行。

四 验证与运维建议

  • 恢复后完整性校验:执行 DBCC CHECKDB,例如 sqlcmd -S localhost -U SA -P ‘YourPassword’ -Q “DBCC CHECKDB ([YourDatabaseName])”。
  • 备份策略与保留:结合业务选择 FULL/DIFFERENTIAL/LOG 的组合,定期清理过期备份(如 find /var/opt/mssql/backups/ -name “*.bak” -mtime +30 -exec rm {} ;)。
  • 安全与可用性:备份目录仅对 mssql 用户可写,避免泄露 SA 口令;恢复可能影响可用性,建议在低峰时段执行,并在测试环境验证流程。

0