SQL Server的数据库备份与还原

数据库备份分类

备份分类

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

完全备份与还原

备份

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

完成还原

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

posted @ 2024-12-17 12:09  厚礼蝎  阅读(176)  评论(0编辑  收藏  举报