首页 > 数据库 >SQL Server的数据库备份与还原

SQL Server的数据库备份与还原

时间:2024-12-17 12:20:39浏览次数:3  
标签:-- 备份 Server LR 还原 SQL flowchart 数据库

数据库备份分类

备份分类

  • 完全备份:(常用方式)
    • 备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。
    • 因而,占用不少时间和空间,这种方式不建议太频繁,一般一周一次
  • 差异备份:也叫增量备份
    • 它不使用事务日志,相反,它使用整个数据库的一种新映象
    • 比最初的完全备份小,它只包含自上次完全备份以来所改变的数据库
    • 它的优点是存储和恢复速度快。推荐每天做一次差异备份。
  • 事务日志备份
    • 只需要复制自上次备份以来对数据库所做的改变,只备份日志文件 ,建议备份频繁,甚至半小时一次
  • 文件备份
    • 如果这个数据库非常大,并且一个晚上也不能将它备份完,那么可以使用文件备份每晚备份数据库的一部分。
    • 由于一般情况下数据库不会大到必须使用多个文件存储,所以这种备份不是很常用。

完全备份与还原

备份

flowchart LR 右键单击需要备份的数据库--点击-->任务--点击-->备份

先删除自动生成的存储路径

flowchart LR 选择对应的数据库-->类型选择完整-->选择备份到磁盘-->添加存储文件-->确定

点击确定

检查文件

还原

数据库先设置单用户模式

flowchart LR 右键单击需要还原的数据库--点击-->属性

flowchart LR 选择左侧选择页中的选项-->状态-->限制访问--选择-->SINGLE_USER也就是单用户模式




表明设置成功。

还原

flowchart LR 右键单击需要还原的数据库--点击-->任务--点击-->还原--点击-->数据库

flowchart LR 源选择设备-->选择右边的三个点-->添加--找到之前存放备份文件的路径-->选择对应的备份文件





还原成功!

差异备份与还原

备份

差异备份的前提是已经进行了一次完全备份了。

同样

flowchart LR 右键单击需要备份的数据库--点击-->任务--点击-->备份


先删除自动生成的存储路径

flowchart LR 选择对应的数据库-->类型选择差异-->选择备份到磁盘-->添加存储文件-->确定


备份完成

同样的方法再备份一个,用来模拟多差异备份还原。
检查文件

还原

数据库先设置单用户模式

单机跳转查看方法

还原

需要先通过完全备份文件还原,再用差异备份集还原

先还原 完全备份

flowchart LR 右键单击需要还原的数据库--点击-->任务--点击-->还原--点击-->数据库

flowchart LR 源选择设备-->选择右边的三个点-->添加--找到之前存放备份文件的路径-->选择对应的备份文件



flowchart LR a(选择左边 选择页 的 选项 )-->取消还原前进行结尾日志备份的勾选-->选择覆盖现有数据库-->1[选择 RESTORE WITH NORECOVERY]


完成完全备份的还原

此时状态

再依次还原其他 差异备份

同样

flowchart LR 右键单击需要还原的数据库--点击-->任务--点击-->还原--点击-->数据库

flowchart LR 源选择设备-->选择右边的三个点-->添加--找到之前存放备份文件的路径-->选择第一个差异备份对应的备份文件


因为不是最后一个差异备份,所以还是要同样选择RESTORE WITH NORECOVERY

flowchart LR a(选择左边 选择页 的 选项 )-->取消还原前进行结尾日志备份的勾选-->选择覆盖现有数据库-->1[选择 RESTORE WITH NORECOVERY]


完成第一个差异备份

此时的状态还是正在还原...

如果还有更多非最后一个差异备份的中间备份,同样按照上面的做法还原

...

还原最后一个差异备份
同样

flowchart LR 右键单击需要还原的数据库--点击-->任务--点击-->还原--点击-->数据库

flowchart LR 源选择设备-->选择右边的三个点-->添加--找到之前存放备份文件的路径-->选择最后一个差异备份对应的备份文件


因为是最后一个差异备份,所以只需要默认选择RESTORE WITH NORECOVERY就可以了


此时就完成了所有差异备份的还原,状态也变成正常状态了。

事务日志的备份与还原

截断事务日志备份与还原

这里备份两个,模拟多事务日志备份的备份与还原

备份

同样需要先完全备份

完全备份方法

flowchart LR 右键单击需要备份的数据库--点击-->任务--点击-->备份


先删除自动生成的存储路径

flowchart LR 选择对应的数据库-->类型选择事务日志-->选择备份到磁盘-->添加存储文件-->确定

flowchart LR a[选择左边的 【选择页】 中的 【介质选项】]-->b[事务日志选择 【截断事务日志】]--点击-->确定



如上方法再备份一个
最后得到如下的文件

还原

数据库先设置单用户模式

单机跳转查看方法

还原

先还原完整备份

还原基础完整备份的方法
此时状态

还原中间多个事务日志备份
flowchart LR 右键单击需要还原的数据库--点击-->任务--点击-->还原--点击-->事务日志

flowchart LR a[还原的源 选择 源设备]-->点击右边的点-->添加备份介质-->查找中间的事务日志备份的备份文件


选择左边选择页中的 选项,将恢复状态设置为 RESTORE WITH NORECOVERY只要不是最后一个恢复备份,都需要设置成RESTORE WITH NORECOVERY

完成中间备份的还原

多个中间事务日志备份,都按照上面的操作依次恢复
此时数据库的状态还是正在恢复

恢复最后一个事务日志
flowchart LR 右键单击需要还原的数据库--点击-->任务--点击-->还原--点击-->事务日志

flowchart LR a[还原的源 选择 源设备]-->点击右边的点-->添加备份介质-->找到最后一个事务日志备份的备份文件


选择左边选择页中的 选项,因为是最后一个,所以将恢复状态设置为 RESTORE WITH RECOVERY


完成恢复,此时数据库状态已经恢复正常。

指定时间点事务日志备份与还原

备份

同样需要先完全备份

完全备份方法

同时,中间的备份是上面的截断事务日志的备份,所以这里省略

直接说最后一个备份的备份方法

最后一个备份有点特殊,需要先将数据库设置为单用户模式

同时,需要记住需要还原的时间点

例如: 我再2024年12月17号的11时13分误操作导致数据丢失,我需要把数据库数据恢复到2024年12月17号的11时12分时的状态

数据库先设置单用户模式

单机跳转查看方法

备份

flowchart LR 右键单击需要备份的数据库--点击-->任务--点击-->备份


先删除自动生成的存储路径

flowchart LR 选择对应的数据库-->类型选择事务日志-->选择备份到磁盘-->添加存储文件-->确定

flowchart LR a[选择左边的 【选择页】 中的 【介质选项】]-->b[事务日志选择 【备份日志尾部,并使数据库处于还原状态】]--点击-->确定



最后得到如下的文件

还原

先还原完整备份

还原基础完整备份的方法

再还原中间事务日志

再还原多个中间事务日志

最后还原到之前的时间点

flowchart LR 右键单击需要还原的数据库--点击-->任务--点击-->还原--点击-->事务日志

flowchart LR a[还原的源 选择 源设备]-->点击右边的点-->添加备份介质-->找到最后一个事务日志备份的备份文件


选择还原的时间点,就是之前的2024年12月17号的11时12分

最后设置 RESTORE WITH RECOVERY

完成还原

然后设置成多用户模式,就好了

标签:--,备份,Server,LR,还原,SQL,flowchart,数据库
From: https://www.cnblogs.com/guangdelw/p/18612051

相关文章

  • sqlserver查字段的默认值
    在SQLServer中,您可以通过查询系统视图来查找字段的默认值。以下是一些查询字段默认值的常用方法:使用 INFORMATION_SCHEMA.COLUMNS 视图:SELECTTABLE_NAME,COLUMN_NAME,COLUMN_DEFAULTFROMINFORMATION_SCHEMA.COLUMNSWHERETABLE_NAME=......
  • Ubuntu 22.04手动安装MYSQL5.7
    1、下载安装包:mysql-server_5.7.41-1ubuntu18.04_amd64.deb-bundle.tar 2、解压安装包tarxvfmysql-server_5.7.41-1ubuntu18.04_amd64.deb-bundle.tar3、先安装依赖lib包sudoapt-getupdatesudoapt-getupgradesudoapt-getinstall./libmysql*sudoapt-getin......
  • Springboot 单元测试报错:javax.websocket.server.ServerContainer not available
    错误描述 解决方案@SpringBootTest(webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT)  importlombok.extern.slf4j.Slf4j;importorg.junit.Test;importorg.junit.runner.RunWith;importorg.springframework.beans.factory.annotation.Autowired;im......
  • 5 Oracle PL/SQL 存储过程--函数--包
    一、存储过程之前写的代码declarebeginend;称为匿名块,没有名称,没有存储在数据库中;存储过程:StoredProcedure,简称sp、存过,它是一种数据库对象,它遵从PL/SQL基本语法;语法:CREATE[ORREPLACE]PROCEDURE存储过程名[参数1[IN/OUT]参数类型,参数2[IN/OUT]参数类型,...]IS|AS声明......
  • Linux学习栈记——MySQL安装并远程连接
    本文主要介绍了MySQL的作用和两种安装方法,使用源代码包安装MySQL的方法,并使用Navicat等客户端工具远程连接MySQL。这里以Ubuntu24.04操作系统为例。基础知识MySQL的作用MySQL是一款开源的关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,目前属于Oracle公司旗下产品。它以......
  • 为什么 Oracle 和 Sql Server 都能用存储过程,到了 MySQL 这却不让用!
    在日常开展MySQL运维工作的过程中,常常会碰到这样一种状况。研发部门的同学总是感到疑惑,他们经常问的一个问题是:为什么在Oracle以及SqlServer这两种数据库里都能够使用存储过程,可一到MySQL这儿,却压根不让用了呢。向DBA询问原因时,得到的回复往往只是说性能不行,但从来......
  • sql优化--mysql隐式转换
    sql隐式转换在SQL中,隐式转换是数据库自动进行的类型转换,隐式转换可以帮助我们处理不同类型的数据。比如,数据表的字段是字符串类型的,传入一个整型的数据,也能够运行sql。sql隐式转换的弊端sql隐式转换,有可能会导致用不上索引,导致查询变慢。mySqlCAST()函数转换类型CAST(1A......
  • 初步了解——SQL注入之增删改注入
    增删改注入主要是insert(增)注入,delete(删)注入,update(改)注入一、insert注入1.原理:“insert注入”主要涉及到SQL的插入(insert)语句。(从下面对insert注入的举例中的脚本语言可以看出来)攻击者利用应用程序对用户输入数据的不恰当处理,通过在输入数据中插入恶意SQL代码片段,来篡改原......
  • JAVA开源毕业设计 在线文档管理系统 Vue.JS+SpringBoot+MySQL网上订餐系统
    本文项目编号T039,文末自助获取源码\color{red}{T039,文末自助获取源码}......
  • JAVA开源毕业设计 在线文档管理系统 Vue.JS+SpringBoot+MySQL网上订餐系统
    本文项目编号T039,文末自助获取源码\color{red}{T039,文末自助获取源码}......