SQLServer数据库备份 [实践]


设置数据库备份策略时,需要根据数据的重要性、恢复需求、存储成本和备份频率等因素来制定合理的策略。以下是常见的数据库备份类型及其设置建议:

1. 完整备份(Full Backup)

定义: 完整备份是数据库的完整备份,包括所有数据和数据库结构。

设置建议:

  • 频率: 通常每周进行一次或每天一次,具体取决于数据的变化频率和业务需求。
  • 存储: 确保有足够的存储空间来保存完整备份。通常保留最近几周或几个月的完整备份。
  • 时间窗口: 选择系统负载较低的时间进行完整备份,避免影响生产环境性能。

2. 差异备份(Differential Backup)

定义: 差异备份是从上一个完整备份以来发生变化的数据的备份。

设置建议:

  • 频率: 结合完整备份的频率进行,例如每天进行一次差异备份。如果完整备份是每周一次,则差异备份可以是每天进行一次。
  • 存储: 差异备份通常比完整备份小,但需要与完整备份结合使用,存储策略要考虑到保留多个差异备份的需求。
  • 恢复: 恢复时需要完整备份和最新的差异备份。

3. 日志备份(Transaction Log Backup)

定义: 日志备份是备份数据库事务日志的文件,包含自上次日志备份以来的所有事务。

设置建议:

  • 频率: 根据业务需求和数据恢复点目标(RPO),可以每15分钟、每小时或更频繁地进行日志备份。频繁备份日志可以减少数据丢失。
  • 存储: 日志备份文件较小,但需要保留足够长的时间以便恢复到所需的时间点。存储策略应考虑到日志备份的频繁程度。
  • 恢复: 恢复时需要完整备份和所有相关的日志备份,以便恢复到特定时间点。

备份策略的综合建议

  1. 备份计划:

    • 结合完整备份、差异备份和日志备份制定一个完整的备份计划。例如,周一进行完整备份,周二到周六进行差异备份,频繁地进行日志备份。
  2. 测试恢复:

    • 定期进行备份恢复测试,以确保备份文件能够正确恢复,并且恢复过程符合业务要求。
  3. 自动化备份:

    • 使用数据库管理系统的自动化工具进行备份,以减少人为错误和遗漏。
  4. 备份存储和安全:

    • 将备份存储在不同的物理位置或云存储中,以防止硬件故障或灾难。同时确保备份文件的安全性,防止未授权访问。
  5. 备份监控:

    • 实施备份监控和警报系统,以确保备份操作成功完成,并在出现问题时及时通知管理员。

通过制定合理的备份策略和计划,可以有效地保护数据库数据,确保在发生故障时能够迅速恢复并最小化数据丢失。

 

备份脚本:

完整备份

SQL 全选
-- 完整备份 每周一次
USE Master
GO
declare @str varchar(100)
set @str='D:\DB_Backup\Demo\full_'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.bak'
BACKUP DATABASE [Demo] TO DISK=@str
WITH RETAINDAYS=15,NOFORMAT,NOINIT,
NAME=N'Demo完整备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO

差异备份

SQL 全选
-- 差异备份,每天一次
USE Master
GO
declare @str varchar(100)
set @str=''D:\DB_Backup\TCE\diff'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.diff'
BACKUP DATABASE [Demo] TO DISK=@str
WITH DIFFERENTIAL,RETAINDAYS=8,NOFORMAT,NOINIT,
NAME=N'Demo差异备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO

日志备份

SQL 全选
-- 日志备份 每30分钟一次
USE [Demo]
GO
declare @str varchar(100)
set @str='D:\DB_Backup\demo\log_'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.trn'
BACKUP LOG [Demo] TO DISK=@str
WITH RETAINDAYS=3,NOFORMAT,NOINIT,
NAME=N'Demo日志备份',SKIP,NOREWIND,
NOUNLOAD,STATS=10
GO

 

删除过期的日志备份文件

SQL 全选
--删除过期的备份文件,每天一次,保留7天的日志文件
declare @str varchar(100),@dir varchar(100),@fileName varchar(30)
set @dir='del D:\DB_Backup\demo\'
set @filename=left(replace(replace(replace(convert(varchar,getdate()-7,20),'-',''),' ',''),':',''),8)
set @str=@dir+'full_'+@filename+'*.bak'
exec xp_cmdshell @str
set @filename=left(replace(replace(replace(convert(varchar,getdate()-7,20),'-',''),' ',''),':',''),8)
set @str=@dir+'diff_'+@filename+'*.bak'
exec xp_cmdshell @str
set @filename=left(replace(replace(replace(convert(varchar,getdate()-7,20),'-',''),' ',''),':',''),8)
set @str=@dir+'log_'+@filename+'*.trn'
exec xp_cmdshell @str

日志文件作操作

SQL 全选
--截断日志
USE Master
GO
BACKUP LOG Demo  WITH NO_LOG
GO
--收缩日志文件
USE Demo
GO
DBCC SHRINKFILE (N'Demo_log',0,TRUNCATEONLY)
GO

关于日志文件的注意事项

注意事项

  1. 备份日志:在收缩日志文件之前,确保已经进行过日志备份。否则,未备份的日志可能会导致数据丢失。

  2. 频率:频繁地收缩日志文件可能会导致磁盘碎片化,影响性能。通常建议只在需要时(例如,日志文件增长异常)进行收缩。

  3. 备份路径:确保备份路径存在并有足够的权限进行写操作。

  4. 事务日志恢复模式:如果数据库处于 FULLBULK_LOGGED 恢复模式中,定期备份日志是必需的,以避免日志文件无限增长。

  5. 监控和测试:定期监控备份和收缩操作的结果,确保它们按预期工作,并且在恢复测试中验证备份的有效性。

 

 

新建数据库作业参考:

https://www.cnblogs.com/GarsonZhang/p/6905607.html

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:SAP公有云接口按照日期+时间增量查询数据
下一篇:bat脚本获取时分秒字符串的时候如果小于10小时会出现空格
评论列表

发表评论

评论内容
昵称:
关联文章

SQLServer数据库备份 [实践]
SqlServer备份还原 出现操作系统错误 5(拒绝访问) 的解决方案
C# SQLServer数据库连接
使用SQL 创建数据库备份作业
C#数据类型和常见数据库(SQLServer,MySQL,Oracle,SQLite)的数据类型对应关系
EFCore数据库提供程序
SQL Server 数据库安全之角色
初始化配置-数据库配置
GZDBHelper连接MySQL数据库
GZDBHelper连接Oracle数据库
GZDBHelper连接SQLite数据库
省市区数据库
C#连接Sybase数据库
服务器安全:SQLServer对外网开放后,被人尝试登录sa账户
SqlServer PIVOT函数快速实现行转列,UNPIVOT实现列转行
GZDBHelper连接SQL Server 数据库
C# 数据库连接字符串Microsoft.Data.Sqlite数据库连接
查询参数类:SQLServer
Docker安装SQLServer2019
YESWEB数据库模型数据库补丁排除特定表

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码