环思产品论坛

标题: 工具:数据库自动备份 [打印本页]

作者: zhouf    时间: 2018-6-9 09:27
标题: 工具:数据库自动备份
本帖最后由 zhouf 于 2018-6-25 14:44 编辑

工具:数据库自动备份

目的:解决开发人员或用户误删除大批量数据;
方法:通过全备、差异备份、日志备份来处理;


前提条件:
1. 启动服务器上的“SQL代理服务”,将服务设置为“自动启动”;

2. 需要备份的数据库,恢复模式必须是“完整Full”;



实现步骤:
1. 下载附件“SqlBackupTool.zip”并解压;
2. 运行脚本 01_master.sql
3. 打开解压的脚本 02_createJob.sql, 修改执行参数,需要备份的数据库名;
    @sDBNames
        需要备份的数据库,逗号分隔, 前提条件是需要备份的数据库属性“恢复模式”必须是“Full”
        (右键数据库->属性Attribute->选项Options->恢复模式Recover Model->完全Full)
    @sPath
        备份文件存放位置 (最后一位必须是‘\’)
        这个文件夹的安全权限,必须确保“SQL代理服务”所有用户具有完全控制的权限
默认频率与过期天数(自动删除)
     完全备份,35天过期(计划:每周日2:00执行)
     差异备份,15天过期(计划:每天3:00执行)
     日志备份,15天过期(计划:每10分钟执行, 您也可以在执行后将调度时间改为5分钟)

4.  (需要测试) 打开查询分析器,找到“SQL代理”,展开到“任务Jobs”;
    右键执行这些Job,看看有没有执行成功(必须在目标路径看到有文件成功备份)    不成功的原因往往有两种:
    A.文件夹安全权限,手工在服务器上创建一次目标路径目录
    B.需备份的数据库恢复模式不是完全模式(Full);

5. 备份Job执行完成后,服务器文件夹 (@sPath) 会生成如下文件:
    (第一个是差异备份文件 _diff_,   第二个是完全备份 _full_, 第三个是日志备份 _log_)



如何恢复数据库:
1. 打开查询分分析器,在 Database 上右键,选择恢复数据库

2. 选择从设备恢复数据库

3. 选择原来备份文件,这里不需要选择所有文件,只需要从最后一次全备 (_full_) 文件之后的所有文件;

4. 点击“时间轴”,在弹出对话框中指定需要恢复的时间点

5. 切记切记:(重要的事情说三遍)
执行数据库恢复前,一定要修改恢复后的数据库名称。否则可能导致覆盖正式数据库;
执行数据库恢复前,一定要修改恢复后的数据库名称。否则可能导致覆盖正式数据库;
执行数据库恢复前,一定要修改恢复后的数据库名称。否则可能导致覆盖正式数据库;




特别注意事项:
此工具是使用了完全备份、差异备份、日志备份相结合的方式,sqlserver在每次执行备份时,每个备份中都会记录相应的时间戳,如果我们开发人员中途手工执行了一次完全备份,而完全整备份却没有放在上面所指定的目录,就会导致下次恢复数据时,时间戳连接不上,出现断层,无法达到恢复数据到某个时间点的效果;
所以,需要大家养成手工执行备份时,一定要将手工执行备份为“复制”模式;



SqlBackupTool.zip

15.21 KB, 下载次数: 175






欢迎光临 环思产品论坛 (http://bbs.huansi.cn/) Powered by Discuz! X3.2