以下是在CentOS下备份SQL Server数据的实用技巧:
安装工具
需先安装mssql-tools和unixODBC-devel:
sudo yum install -y mssql-tools unixODBC-devel
使用sqlcmd命令行备份
sqlcmd -S localhost -U sa -P '密码' -Q "BACKUP DATABASE 数据库名 TO DISK='/var/opt/mssql/backup/备份名.bak' WITH FORMAT"
sqlcmd -S localhost -U sa -P '密码' -Q "BACKUP DATABASE 数据库名 TO DISK='/var/opt/mssql/backup/备份名_diff.bak' WITH DIFFERENTIAL"
sqlcmd -S localhost -U sa -P '密码' -Q "BACKUP LOG 数据库名 TO DISK='/var/opt/mssql/backup/备份名_log.trn' WITH NORECOVERY"
指定备份路径与压缩
/var/opt/mssql/backup),建议包含日期参数:BACKUP DATABASE 数据库名 TO DISK='/var/opt/mssql/backup/数据库名_$(date +%F).bak' WITH COMPRESSION
通过crontab定时任务
编辑定时任务脚本:
sudo crontab -e
添加如下内容(每日凌晨2点执行完整备份):
0 2 * * * /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P '密码' -Q "BACKUP DATABASE 数据库名 TO DISK='/var/opt/mssql/backup/数据库名_$(date +\%F).bak' WITH FORMAT"
远程备份到其他服务器
通过SMB或NFS挂载远程目录,或使用scp传输备份文件:
scp /var/opt/mssql/backup/备份名.bak user@远程服务器:/远程路径/
权限管理
sudo chown -R mssql:mssql /var/opt/mssql/backup
sudo chmod -R 700 /var/opt/mssql/backup
备份验证
定期检查备份文件完整性,可通过RESTORE VERIFYONLY命令测试:
sqlcmd -S localhost -U sa -P '密码' -Q "RESTORE VERIFYONLY FROM DISK='/var/opt/mssql/backup/备份名.bak'"
保留策略
结合find命令清理过期备份(如保留7天):
find /var/opt/mssql/backup -name "*.bak" -mtime +7 -exec rm -f {} \;
sqlcmd适合自动化场景,支持脚本批量执行。注意:备份前需确认SQL Server服务正常运行,且备份路径有足够磁盘空间。建议定期测试备份恢复流程,确保数据可正常还原。