首页主机资讯Ubuntu上SQL Server如何备份

Ubuntu上SQL Server如何备份

时间2025-11-18 21:12:03发布访客分类主机资讯浏览212
导读:Ubuntu上SQL Server备份实操指南 一 准备与工具 安装命令行工具:执行 sudo apt-get update && sudo apt-get install -y mssql-tools unixodbc-...

Ubuntu上SQL Server备份实操指南

一 准备与工具

  • 安装命令行工具:执行 sudo apt-get update & & sudo apt-get install -y mssql-tools unixodbc-dev,确保可用 sqlcmd。如使用本机实例,连接主机可填 localhost。为稳妥,建议使用具有备份权限的账户(如 SA 或具备相应权限的域/本地账户)。备份目录需对运行 SQL Server 的 mssql 用户可写(常见路径如 /var/opt/mssql/backup/var/opt/mssql/data/backup)。

二 使用 sqlcmd 执行备份

  • 完全备份(示例将文件写入 /var/opt/mssql/backup,文件名含日期) sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
    -Q “BACKUP DATABASE [YourDB] TO DISK = N’/var/opt/mssql/backup/YourDB_$(date +%F).bak’
    WITH INIT, SKIP, NAME = ‘YourDB-Full $(date +%F)’”
  • 差异备份(基于最近一次完全备份) sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
    -Q “BACKUP DATABASE [YourDB] TO DISK = N’/var/opt/mssql/backup/YourDB_$(date +%F)_diff.bak’
    WITH DIFFERENTIAL, INIT, SKIP, NAME = ‘YourDB-Diff $(date +%F)’”
  • 事务日志备份(数据库需为 FULLBULK_LOGGED 恢复模式) sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
    -Q “BACKUP LOG [YourDB] TO DISK = N’/var/opt/mssql/backup/YourDB_$(date +%F)_log.trn’
    WITH INIT, SKIP, NAME = ‘YourDB-Log $(date +%F)’”
  • 常用选项说明:INIT 覆盖同名文件、SKIP 跳过过期备份检查、NAME 指定备份集名称。路径建议使用 N’…’ 前缀避免转义问题。

三 自动化与远程备份

  • 定时任务(crontab)
    • 每天 01:00 做完全备份: 0 1 * * * /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
      -Q “BACKUP DATABASE [YourDB] TO DISK = N’/var/opt/mssql/backup/YourDB_$(date +%F).bak’ WITH INIT, SKIP, NAME = ‘YourDB-Full $(date +%F)’”
    • 每天 03:30 做差异备份、03:40 做日志备份(示例): 30 3 * * * /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
      -Q “BACKUP DATABASE [YourDB] TO DISK = N’/var/opt/mssql/backup/YourDB_$(date +%F)diff.bak’ WITH DIFFERENTIAL, INIT, SKIP, NAME = ‘YourDB-Diff $(date +%F)’" 40 3 * * * /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
      -Q "BACKUP LOG [YourDB] TO DISK = N’/var/opt/mssql/backup/YourDB
      $(date +%F)_log.trn’ WITH INIT, SKIP, NAME = ‘YourDB-Log $(date +%F)’”
    • 提示:crontab 中 % 需转义为 %,或使用脚本封装 date 命令。
  • 异地/对象存储备份(rclone 示例)
    • 安装:sudo apt-get install -y rclone
    • 配置:rclone config(按向导添加如 minios3onedrive 等远端)
    • 同步:rclone sync /var/opt/mssql/backup remote_name:bucket/mssql-backup
    • 可将同步命令加入 crontab,实现“本地保留 N 天 + 远端长期留存”的双地备份策略。

四 恢复与校验

  • 基本恢复(示例)
    • 完全恢复: sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
      -Q “RESTORE DATABASE [YourDB] FROM DISK = N’/var/opt/mssql/backup/YourDB_2025-08-30.bak’ WITH RECOVERY”
    • 使用 NORECOVERY 做分阶段恢复(先完全,再差异/日志): sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
      -Q “RESTORE DATABASE [YourDB] FROM DISK = N’/var/opt/mssql/backup/YourDB_full.bak’ WITH NORECOVERY” sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
      -Q “RESTORE DATABASE [YourDB] FROM DISK = N’/var/opt/mssql/backup/YourDB_diff.bak’ WITH NORECOVERY” sqlcmd -S localhost -U SA -P ‘YourStrong@Passw0rd’
      -Q “RESTORE LOG [YourDB] FROM DISK = N’/var/opt/mssql/backup/YourDB_log.trn’ WITH RECOVERY”
  • 一致性校验
    • 在 SSMS 或 sqlcmd 中执行:DBCC CHECKDB ([YourDB]),确保恢复后数据页与索引一致。
  • 恢复模式要点
    • 需要日志备份时,数据库恢复模式应为 FULLBULK_LOGGED;仅做时点恢复或不需要日志截断时可用 SIMPLE

五 常见问题与最佳实践

  • 权限与路径:确保备份目录对 mssql 用户可写(chown mssql:mssql /your/backup/dir),否则会报“操作系统错误 5(拒绝访问)”。路径建议使用 N’…’ 并避免空格。
  • 保留策略:在脚本中按日期滚动保留(如保留最近 7 天),并定期清理过期文件,避免磁盘被占满。
  • 监控与告警:将备份日志重定向到文件(> > /var/log/mssql/backup.log 2> & 1),并配置简单告警(如日志出现 “ERROR” 时邮件/企业微信/钉钉通知)。
  • 安全性:避免在命令行中明文写密码,生产可用 SQL Server 身份验证的集成安全mssql.conf 凭据文件环境变量 + 权限最小化 的方式;对远端存储启用 加密与最小权限访问
  • 图形化工具:需要可视化时可用 SSMS 连接 Ubuntu 上的 SQL Server 执行备份/恢复,适合临时操作或演练。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu上SQL Server如何备份
本文地址: https://pptw.com/jishu/750529.html
Ubuntu上SQL Server的日志如何管理 SQL Server能跨平台运行在Ubuntu吗

游客 回复需填写必要信息