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 相关文章推荐
【HBU】数据库第四周 单表查询
Apr 05 SQL Server
SqlServer: 如何更改表的文件组?(进而改变存储位置)
Apr 05 SQL Server
sqlserver2017共享功能目录路径不可改的解决方法
Apr 16 SQL Server
SQL Server2019数据库之简单子查询的具有方法
Apr 27 SQL Server
SQL 窗口函数实现高效分页查询的案例分析
May 21 SQL Server
数据库之SQL技巧整理案例
Jul 07 SQL Server
Windows环境下实现批量执行Sql文件
Oct 05 SQL Server
SQL Server查询某个字段在哪些表中存在
Mar 03 SQL Server
MSSQL基本语法操作
Apr 11 SQL Server
SQL SERVER中的流程控制语句
May 25 SQL Server
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
May 25 SQL Server
SQL Server删除表中的重复数据
May 25 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中文验证码实现方法
2015/06/18 PHP
php用wangeditor3实现图片上传功能
2019/08/22 PHP
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
运算符&&的三个不同层次
2013/04/07 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
javascript实现密码验证
2015/11/10 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
Javascript封装id、class与元素选择器方法示例
2017/03/13 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
2017/08/18 Javascript
p5.js 毕达哥拉斯树的实现代码
2018/03/23 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
python实现弹窗祝福效果
2019/04/07 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
pandas如何处理缺失值
2019/07/31 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
python变量的作用域是什么
2020/05/26 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
马德里竞技官方网上商店:Atletico Madrid Shop
2019/03/31 全球购物
Pureology官网:为染色头发打造最好的产品
2019/09/13 全球购物
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
社团成立邀请函
2014/01/08 职场文书
杠杆的科学教学反思
2014/01/10 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js