SQL Server在CentOS中的备份与恢复方法
一 环境准备与常用工具
- 安装命令行工具:执行 sudo yum install -y mssql-tools unixODBC-devel,用于通过 sqlcmd 执行备份与恢复。
- 准备备份目录并授权:例如 sudo mkdir -p /var/opt/mssql/backup,并确保 mssql 用户对目录有读写权限。
- 验证服务状态:使用 sudo systemctl status mssql-server 检查 SQL Server 是否正常运行。
- 连接数据库:使用 sqlcmd -S localhost -U sa -P your_password 连接本机实例。
二 数据库备份方法
- 使用 T-SQL 完整备份(推荐)
- 示例:BACKUP DATABASE [YourDatabaseName]
TO DISK = N’/var/opt/mssql/backup/YourDatabaseName_$(date +%F).bak’
WITH FORMAT, COMPRESSION, STATS = 10;
- 说明:FORMAT 用于新建介质集;COMPRESSION 减少备份体积;STATS 显示进度。
- 使用 SSMS 图形化备份
- 在 SSMS 中连接到实例,右键数据库 → 任务 → 备份,选择备份类型(完整/差异/日志)、目标路径并执行。
- 自动化备份(crontab)
- 示例(每天 02:00 完整备份):
0 2 * * * /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P ‘your_password’ -Q “BACKUP DATABASE YourDatabaseName TO DISK = ‘/var/opt/mssql/backup/YourDatabaseName_$(date +%F).bak’ WITH FORMAT, COMPRESSION, STATS = 10;”
- 对象级导出(可选)
- 使用 bcp 导出表数据:
bcp “SELECT * FROM YourDatabaseName.dbo.YourTableName” queryout /var/opt/mssql/backup/YourTableName.csv -c -t, -S localhost -U sa -P your_password。
三 数据库恢复方法
- 使用 T-SQL 从磁盘恢复
- 基本恢复:
RESTORE DATABASE [YourDatabaseName]
FROM DISK = N’/path/to/backup.bak’
WITH RECOVERY, REPLACE;
- 指定新文件路径(当默认路径不可用时):
RESTORE DATABASE [YourDatabaseName]
FROM DISK = N’/path/to/backup.bak’
WITH MOVE N’YourLogicalDataFileName’ TO N’/new/path/datafile.mdf’,
MOVE N’YourLogicalLogFileName’ TO N’/new/path/logfile.ldf’,
RECOVERY, REPLACE;
- 时间点恢复(先完整/差异,再日志):
RESTORE LOG [YourDatabaseName]
FROM DISK = N’/path/to/log.trn’
WITH RECOVERY, STOPAT = ‘2025-12-27 10:00:00’;
- 使用 SSMS 图形化恢复
- 在 SSMS 中右键“数据库” → “还原数据库”,选择“设备”并指定 .bak,在“选项”页按需勾选 WITH REPLACE、设置恢复状态,执行还原。
- 无备份时的处理
- 可尝试第三方工具进行损坏文件数据提取;如数据至关重要,建议联系厂商或专业机构。
四 备份验证与恢复演练
- 验证备份文件有效性
- 查看备份集信息:RESTORE HEADERONLY FROM DISK = N’/path/to/backup.bak’;
- 校验数据一致性:执行 DBCC CHECKDB([YourDatabaseName]) 确认恢复后数据页一致性。
- 定期恢复演练
- 在测试环境定期执行“还原→校验→业务验证”的演练流程,确保备份可用、流程可行。
五 常见问题与最佳实践
- 常见问题
- 权限不足:确保 mssql 用户对备份目录具备读写权限。
- 文件被占用/数据库存在:还原时使用 WITH REPLACE;必要时先让目标库脱机。
- 逻辑文件名不匹配:使用 RESTORE FILELISTONLY 查看备份中的逻辑名,并在 MOVE 子句中正确映射。
- 路径不存在:还原前创建目标目录,或改用已存在路径。
- 最佳实践
- 备份策略:采用“完整备份 + 差异备份 + 事务日志备份”组合,满足快速恢复与时间点恢复需求。
- 存储与保留:将备份存放在不同物理位置(如本地与远端),并设置合理保留周期与定期清理策略。
- 安全与合规:对备份启用加密与访问控制,定期验证备份完整性,并进行恢复演练。