阅读量:4
在CentOS上备份和恢复SQL Server数据库可以通过多种方式实现,以下是详细的步骤和策略:
备份流程
- 创建备份目录并设置权限:
sudo mkdir -p /var/opt/mssql/backupssudo chown mssql:mssql /var/opt/mssql/backupssudo chmod 700 /var/opt/mssql/backups
- 编写备份脚本(示例):
DECLARE @DBNAME NVARCHAR(100)
DECLARE @BackupPath NVARCHAR(100) = '/var/opt/mssql/backups/'
DECLARE @SQL NVARCHAR(MAX)
BEGIN TRY
-- 测试路径写入权限
EXEC xp_create_subdir @BackupPath;
DECLARE CurDBName CURSOR FOR
SELECT name FROM sys.databases
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')
OPEN CurDBName
FETCH NEXT FROM CurDBName INTO @DBNAME
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @FileName NVARCHAR(500) = @BackupPath + @DBNAME + '_test.bak' -- 使用最小化参数测试
SET @SQL = N'BACKUP DATABASE [' + @DBNAME + '] TO DISK = N''' + @FileName + ''' WITH INIT, STATS = 5'
PRINT 'Executing: ' + @SQL
EXEC(@SQL)
FETCH NEXT FROM CurDBName INTO @DBNAME
END
CLOSE CurDBName
DEALLOCATE CurDBName
END TRY
BEGIN CATCH
PRINT 'Error: ' + ERROR_MESSAGE()
END CATCH
- 执行备份:
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'zxcvbnm@123' -i bk.sql
- 删除超过30天的备份:
crontab -l
0 2 * * * find /var/opt/mssql/backups/ -name "*.bak" -mtime +30 -exec rm {} \;
恢复流程
- 恢复完整备份:
RESTORE DATABASE [AdventureWorks2019] FROM DISK '/backups/AdventureWorks2019.bak' WITH RECOVERY;
- 恢复差异备份(在完全恢复之后):
RESTORE DATABASE [AdventureWorks2019] FROM DISK '/backups/AdventureWorks2019_Diff.bak' WITH NORECOVERY;
- 恢复事务日志备份(在差异备份之后):
RESTORE LOG [AdventureWorks2019] FROM DISK '/backups/AdventureWorks2019_Log.bak';
注意事项
- 确保数据库的恢复模式设置为“完整”,以便进行更全面的恢复。
- 定期检查备份文件的完整性和可用性,确保在需要时能够成功恢复。
- 使用SQL Server Agent或其他调度工具自动化备份任务,确保备份的及时性和一致性。
以上就是在CentOS上备份和恢复SQL Server数据库的方法。
以上就是关于“SQL Server在CentOS上的备份恢复流程是怎样的”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm