温馨提示×

Debian怎么备份SQLServer

小樊
36
2026-07-01 16:37:04
栏目: 云计算

在 Debian 上备份 Microsoft SQL Server,常见做法是使用 SQL Server 自带的工具SQL 语句 进行备份,而不是单纯依赖系统级备份。下面是最常用、最可靠的方法。


一、使用 sqlcmd 备份(官方推荐)

1️⃣ 确认已安装 SQL Server 和工具

sqlcmd -?

如果没有,先安装:

sudo apt update
sudo apt install mssql-tools unixodbc-dev

添加到环境变量(可选):

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

2️⃣ 使用 T-SQL 进行数据库备份

全量备份示例

sqlcmd -S localhost -U SA -Q \
"BACKUP DATABASE [YourDB]
TO DISK = '/var/opt/mssql/backup/YourDB.bak'
WITH COMPRESSION, INIT"

/var/opt/mssql/backup/ 必须是 mssql 用户有权限的目录

创建备份目录:

sudo mkdir -p /var/opt/mssql/backup
sudo chown mssql:mssql /var/opt/mssql/backup

二、备份所有数据库(脚本方式)

自动生成备份脚本

sqlcmd -S localhost -U SA -Q \
"SELECT name FROM sys.databases WHERE name NOT IN ('master','tempdb','model','msdb')" \
-h -1 -W | while read db
do
  sqlcmd -S localhost -U SA -Q \
  "BACKUP DATABASE [$db] TO DISK = '/var/opt/mssql/backup/${db}_$(date +%F).bak' WITH COMPRESSION"
done

三、使用 cron 定时备份(推荐生产环境)

编辑计划任务

sudo crontab -e

每天凌晨 2 点备份:

0 2 * * * /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'YourPassword' \
-Q "BACKUP DATABASE [YourDB] TO DISK = '/var/opt/mssql/backup/YourDB_$(date +\%F).bak' WITH COMPRESSION"

四、逻辑备份(导出数据和结构)

不推荐用于大型数据库,但可用于迁移。

sqlcmd -S localhost -U SA -d YourDB -E -o backup.sql

或使用 bcp 导出表:

bcp YourDB.dbo.YourTable out data.csv -S localhost -U SA -c

五、Debian 系统层面备份(辅助)

⚠️ 不建议单独使用

sudo systemctl stop mssql-server
sudo tar czf mssql-data.tar.gz /var/opt/mssql
sudo systemctl start mssql-server

✅ 只能作为 容灾补充,不是 SQL Server 推荐方式。


六、备份策略建议

类型 建议
全量 每天
差异 每小时
日志 每 15 分钟(完整恢复模式)
备份保留 7~30 天
备份验证 RESTORE VERIFYONLY

七、恢复示例

sqlcmd -S localhost -U SA -Q \
"RESTORE DATABASE [YourDB]
FROM DISK = '/var/opt/mssql/backup/YourDB.bak'
WITH REPLACE"

如果你愿意,可以告诉我:

  • SQL Server 版本
  • 数据库大小
  • 是否主从 / Docker / 单机

我可以帮你设计一套 完整备份 + 自动清理 + 异地同步 的方案。

0