Ubuntu上SQL Server备份恢复工具与方案
一、常用工具总览
| 工具/方案 |
类型 |
主要用途 |
在Ubuntu上的使用要点 |
| sqlcmd |
命令行/T-SQL |
完整/差异/日志备份与还原、自动化脚本 |
安装客户端驱动后用 T-SQL 执行 BACKUP/RESTORE;配合 shell 与 cron 定时 |
| SMO/脚本(如 PowerShell/Python) |
编程接口 |
高级备份策略、企业集成 |
在外部主机运行,通过连接字符串调用 SMO 执行备份/还原 |
| SQL Server Management Studio(SSMS) |
图形化 |
备份/还原向导、对象级操作 |
远程连接 Ubuntu 上的 SQL Server 实例进行可视化操作 |
| 第三方备份工具(如 Redgate SQL Backup Pro) |
商业软件 |
压缩加密、调度、集中管理 |
通过客户端/代理连接实例执行备份,适合复杂策略 |
| 第三方恢复/修复工具(如 Stellar Repair for MS SQL、SysTools SQL Recovery、Recovery for SQL Server) |
数据恢复 |
.bak/.mdf 损坏修复、对象级提取 |
多用于故障后的数据挽救,非日常备份工具 |
| 自动化脚本 + 远程同步(rclone) |
运维方案 |
备份落地后异地/云端复制 |
将 .bak 文件用 rclone 同步到对象存储/远端服务器,做离线/异地容灾 |
| 以上工具/方案均在实际生产中有落地案例,适用于 Ubuntu 上的 SQL Server 备份与恢复场景。 |
|
|
|
二、命令行与脚本工具
- 安装与准备:在 Ubuntu 上安装 Microsoft ODBC 驱动(msodbcsql17)后即可使用 sqlcmd 连接本地或远程实例。
- 基本备份示例:
- 完整备份:sqlcmd -S localhost -U SA -P ‘YourPassword’ -Q “BACKUP DATABASE [YourDB] TO DISK=‘/var/opt/mssql/backup/YourDB_full.bak’ WITH FORMAT, COMPRESSION, STATS”
- 基本还原示例:
- 直接上线:sqlcmd -S localhost -U SA -P ‘YourPassword’ -Q “RESTORE DATABASE [YourDB] FROM DISK=‘/var/opt/mssql/backup/YourDB_full.bak’ WITH RECOVERY”
- 配合差异/日志还原:先 WITH NORECOVERY 还原完整/差异,再 WITH RECOVERY 还原日志
- 自动化:将备份命令写入 Shell 脚本,使用 crontab 定时执行(如每日全备、按日/周差异备、按小时日志备)。
三、图形化与第三方工具
- SSMS:在 Windows 或跨平台环境下远程连接 Ubuntu 上的 SQL Server,使用“备份/还原数据库”向导执行操作,适合一次性或不太熟悉命令行的场景。
- 第三方备份工具:如 Redgate SQL Backup Pro,提供压缩、加密、调度、集中化存储等功能,适合企业级备份合规与运维管理。
- 第三方恢复/修复工具:如 Stellar Repair for MS SQL、SysTools SQL Recovery、Recovery for SQL Server,用于 .bak 或 .mdf/.ndf 损坏时的数据挽救与对象级提取;注意这类工具并非替代常规备份流程。
四、自动化与异地容灾方案
- 脚本化备份 + 定时任务:用 Shell 封装 BACKUP/RESTORE,cron 负责按策略执行(如每周一/三/六全备、每日差异、每小时日志)。
- 远程/云端备份:使用 rclone 将 .bak 文件同步到对象存储或远端机房,实现离线/异地副本与快速回滚;可与本地保留策略组合形成多级备份。
五、选型与注意事项
- 备份策略:根据业务选择 FULL/DIFFERENTIAL/LOG 的组合;日志备份需数据库处于 FULL 或 BULK_LOGGED 恢复模式。
- 恢复路径:还原顺序通常为“完整备份(NORECOVERY)→ 差异备份(NORECOVERY)→ 日志备份(RECOVERY)”;必要时使用 WITH MOVE 指定新数据/日志文件路径。
- 安全性:避免在命令行中明文写密码,可使用 SQL Server 身份验证的集成/受控账号、密钥管理或凭据文件;限制备份目录与拷贝通道的访问权限。
- 验证与演练:定期做 RESTORE VERIFYONLY 与 DBCC CHECKDB,并在测试环境演练恢复流程,确保 RPO/RTO 达标。
- 版本与兼容性:确认工具与 SQL Server 2017/2019/2022 的兼容性;跨版本还原时关注兼容级别与功能差异。