SQL Server数据库备份和恢复数据库的全过程


Posted in SQL Server onJune 14, 2022

1. 概述

在一些对数据可靠性要求很高的行业,若发生意外停机或数据丢失,其损失是十分惨重的;

数据库管理员应针对具体的业务要求指定详细的数据库备份与灾难恢复策略,并通过模拟故障对每种可能的情况进行严格测试,只有这样才能保证数据的高可用性;

数据库的备份是一个长期过程,而恢复只在发生事故后才能进行,恢复后可看做是备份数据库的逆过程,恢复程度的好坏很大程度上依赖于备份的情况;

数据库管理员在恢复时采取的步骤正确与否也会直接影响最终的恢复结果;

2. 备份类型

备份数据库是指对数据库或事务日志进行复制,当系统,磁盘或数据库文件损坏时,能使用备份文件进行恢复,防止数据丢失;
SQL Server 数据库备份支持以下几种类型,分别应用于不同的场合:

仅复制备份

独立于正常 SQL Server 备份序列的特殊用途备份;

数据备份

完整数据库的数据备份(数据库备份)、部分数据库的数据备份(部分备份)或一组数据文件或文件组的备份(文件备份);

数据库备份

数据库的备份,完整数据库备份表示备份完成时的整个数据库;差异数据库备份植保会自最近完整备份以来对数据库所做的更改;

差异备份

基于完成数据库或部分数据库以及一组数据文件或文件组的最新完整备份的数据备份(“差异基准”),仅包含自差异基准以来发生了更改数据区;部分差异备份仅记录自上一次部分备份(称为“差异基准”)以来文件组中发证更改的数据区;

完整备份

一种数据备份,包含特定数据库或者一组特定的文件组或文件中的所有数据,以及能恢复这些数据的足够的日志;

日志备份

包括以前日志备份中未备份的所有日志记录的事务日志备份,完整恢复模式;

文件备份

一个或多个数据库文件或文件组的备份;

部分备份

仅包含数据库中部分文件组的数据(包含主要文件组、每个读/写文件组以及任何可选指定的只读文件中的数据);

3. 恢复模式

恢复模式在控制事务日志维护,提供给用户选择;SQL Server 数据库中有3中恢复模式:简单恢复模式、完全恢复模式、大容量日志恢复模式;
通常,数据库使用完全恢复模式或简单恢复模式;

3.1 简单恢复模式

简单恢复模式能最大限度地减少事务日志的管理开销,因为它不备份事务日志;若数据库损坏,则简单恢复模式将面临极大的工作丢失风险,数据只能恢复到已丢失数据的最新备份

所以,在简单恢复模式下,备份间隔应尽可能短,以防止大量丢失数据,但,间隔的长度应该足以避免备份开销影响生产工作;在备份策略中加入差异备份有助于减少开销;

对于用户数据库,简单恢复模式用于测试和开发数据库,或用于主要包含只读数据的数据库(如数据仓库);简单恢复模式并不适用生产系统,因为对于生产系统来说,丢失最新的更改是无法接受的,在这种情况下建议使用完全恢复模式;

3.2 完全恢复模式和大容量日志恢复模式

相对于简单恢复模式,完全恢复模式和大容量日志恢复模式提供了更强的数据保护功能;这些恢复模式基于备份事务日志来提供完整的可恢复性及在最大范围的故障情形内防止丢失工作;

完全恢复模式

完全恢复模式需要日志备份;此模式完整记录所有事务,并将事务日志记录保留到对其备份完毕为止;若能够在出现故障后备份日志尾部,就能使用完全恢复模式将数据库恢复到故障点;完全恢复模式也支持还原单个数据页;

大容量日志恢复模式

大容量日志记录大多数大容量操作,他只用在完全恢复模式的附加模式;对于某些大规模大容量操作(如大容量导入或索引创建),暂时切换到大容量日志恢复模式可提供性能并减少日志空间使用量;与完全恢复模式相同,大容量日志恢复模式也能将事务日志记录保留到对其备份完毕为止;

注意: 由于大容量日志恢复模式不支持时点恢复,所以必须在增大日志备份与增加工作丢失风险之间进行权衡;

4. 备份数据库

为了方便用户,SQL Server 数据库支持用户在数据库在线并正在使用时进行备份;

但,存在以下限制:

无法备份脱机数据; 隐式或显式引用脱机数据的任何备份操作都会失败;即使一个或多个数据文件不可以,日志备份也能成功;

注意: 若某个文件包含大容量日志恢复模式下所作的大容量日志更改,则所有文件都必须处于联机状态才能成功备份;

备份过程中的并发限制; 数据库仍在使用时,SQL Server 能使用联机备份过程来备份数据库;在备份过程中,能进行多个操作;但,若正在创建或删除数据库文件时尝试启动备份操作,则备份文件将等待,直到创建或删除完成或备份超时;

若备份操作与文件管理操作或收缩操作重叠,就会发生冲突;无论哪个冲突操作首先开始,第二个操作总会等待第一个操作设置的锁超时(超时期限由会发超时设置控制);若在超市期限内释放锁,第二个操作将继续执行;若锁超时,则第二个操作失败;

使用 SSMS 继续备份的过程如下:

右击要备份的数据库,任务备份

SQL Server数据库备份和恢复数据库的全过程

先删除,再添加;

SQL Server数据库备份和恢复数据库的全过程

SQL Server数据库备份和恢复数据库的全过程

在弹出的选择备份目标对话框汇总,选择好备份的路径;文件类型选择备份文件文件名 填写需要备份的数据库的名称,最好在备份的数据库的名称后加上日期,方便以后查找,再连续单击确定,即可完成备份;

SQL Server数据库备份和恢复数据库的全过程

SQL Server数据库备份和恢复数据库的全过程

SQL Server数据库备份和恢复数据库的全过程

5. 恢复数据库

数据库完整还原的目的还是还原整个数据库,真个数据库在还处于脱机状态

在数据库的任何部分变成联机之前,必须将所有数据恢复之前,必须将所哟数据恢复到同一点,即数据库的所有部分都处于同一时间点并不存在未提交的事务;

简单恢复模式下,数据库不能还原到特定备份中的特定时间点;

完整恢复模式下,还原备份数据库之后,必须还原所有后续的事务日志备份,再恢复数据库,能将数据库还原到这些日志备份之一的特定恢复点;恢复点可以是特定的日期和时间、标记的事务或日志序列号,还原数据库时,特别是在完整恢复模式大容量日志恢复模式下,应使用一个还原顺序;

注意: 还原顺序由通过一个或多个还原阶段来移动数据的一个或多个还原操作组成;

用 SSMS 对象管理资源管理器恢复数据库,操作步骤如下:

展开数据库,根据具体的数据库选择一个用户数据库,或展开系统数据库并选择一个系统数据库;右击数据库,单击还原数据库

SQL Server数据库备份和恢复数据库的全过程

常规,使用部分指定要还原的备份集和位置;在目标部分,数据库文本框自动填充要还原的数据库的名称;

若要更改数据库名称,可在数据库文本框中输入新名称;

还原到框中,保留默认选项至最近一次进行的备份,或单击时间线访问备份时间线,以手动选择要停止恢复的时间点;

SQL Server数据库备份和恢复数据库的全过程

SQL Server数据库备份和恢复数据库的全过程

SQL Server数据库备份和恢复数据库的全过程

总结 

到此这篇关于SQL Server数据库备份和恢复数据库的文章就介绍到这了,更多相关SQLServer数据库备份恢复内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

SQL Server 相关文章推荐
SQL Server数据定义——模式与基本表操作
Apr 05 SQL Server
SQLServer2019 数据库的基本使用之图形化界面操作的实现
Apr 08 SQL Server
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
Jun 30 SQL Server
SQL语句中JOIN的用法场景分析
Jul 25 SQL Server
SQL Server2019数据库备份与还原脚本,数据库可批量备份
Nov 20 SQL Server
SQL Server查询某个字段在哪些表中存在
Mar 03 SQL Server
SQL Server远程连接的设置步骤(图文)
Mar 23 SQL Server
SQL Server使用导出向导功能
Apr 08 SQL Server
SQL Server2019安装的详细步骤实战记录(亲测可用)
Jun 10 SQL Server
在SQL Server中使用 Try Catch 处理异常的示例详解
Jul 15 SQL Server
SQL bool盲注和时间盲注详解
Jul 23 SQL Server
一次SQL查询优化原理分析(900W+数据从17s到300ms)
Jun 10 #SQL Server
SQL Server2019安装的详细步骤实战记录(亲测可用)
SQL Server携程核心系统无感迁移到MySQL实战
SQL解决未能删除约束问题drop constraint
May 30 #SQL Server
SQL使用复合索引实现数据库查询的优化
May 25 #SQL Server
SQL Server中的逻辑函数介绍
May 25 #SQL Server
SQL Server删除表中的重复数据
May 25 #SQL Server
You might like
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
2016/11/16 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
PHP7 标准库修改
2021/03/09 PHP
Javascript之文件操作
2007/03/07 Javascript
如何用js控制css中的float的代码
2007/08/16 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
Bootstrap精简教程
2015/11/27 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
MUI实现上拉加载和下拉刷新效果
2017/06/30 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
vue路由守卫+登录态管理实例分析
2019/05/21 Javascript
Typescript3.9 常用新特性一览(推荐)
2020/05/14 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
Python3.6正式版新特性预览
2016/12/15 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
详解python上传文件和字符到PHP服务器
2017/11/24 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
简单了解python 邮件模块的使用方法
2019/07/24 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
python switch 实现多分支选择功能
2020/12/21 Python
大学新生入学教育方案
2014/05/16 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
2014年变电站工作总结
2014/12/19 职场文书
长城导游词400字
2015/01/30 职场文书
故宫的导游词
2015/01/31 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers