sql server 数据还原--日志备份、实现远程异地备份

完整备份

提示:因为所有类型的备份都是基于完整备份的,如果没有至少一次的完整备份,其他的备份都是多余
的,所以一定要在建完数据库后做一次完整备份。
提示:在生产环境中,都强烈建议使用【完整恢复模式】,即使说相对于其他两中恢复模式,完整恢复
模式产生的日志会很大,但是在出现问题的时候,这都不算什么了。

2022-10-10 凌晨 做了完整备份
2022-10-14 15:00 误删除一个表。
引入这个区别: 数据备份 是备份数据的, 日志备份: 是记录操作的,说白也是备份数据的,只是有类似时间轴的特点,可以恢复任何时间的数据【日志备份之前】
如果操作 才能把数据损失降到最低

操作方法

1.做日志备份,记住一定要选择【备份日志尾部】。
sql server 数据还原--日志备份、实现远程异地备份_第1张图片
压缩备份 不是必须的,
sql server 数据还原--日志备份、实现远程异地备份_第2张图片

然后在【选项】中,严格按照红色框中的选择项进行勾选,否则,达不到效果设置不能恢复。并且保证数据库不要
有连接
,因为有链接,日志备份是备份不了的
sql server 数据还原--日志备份、实现远程异地备份_第3张图片
经过上面的备份日志尾部,则数据库会变成如下 【正在还原状态…】
在这里插入图片描述
经过上面几步,日志备份 完成后 就可以进行数据还原了

还原

注意 先要还原完整备份,注意一定要选择最后那一次的完整备份,否则是还原不了的
sql server 数据还原--日志备份、实现远程异地备份_第4张图片
sql server 数据还原--日志备份、实现远程异地备份_第5张图片
注意 一定要 选择 restore with norecovery ,这样才能继续还原数据

最后一步就是还原日志备份了,选择恢复的时间点不必太在意,只要填写你误操作之前的时间点,就
可以了
sql server 数据还原--日志备份、实现远程异地备份_第6张图片
sql server 数据还原--日志备份、实现远程异地备份_第7张图片
注意 一定要选择 restore with recovery 就是数据库可以正常使用了,

全备份【完整备份】

创建备份完成时数据库内存在的数据的副本

差异备份

只记录自上次数据库备份【最近一次全备份】后发生更改的数据。差异数据库备份比数据库备份小,而且备份速度快,因此可以更经常地备份,经常备份将减少丢失数据的危险。
还原步骤:①完整备份②还原最后一次差异备份

日志备份

是自上次备份事物日志后对数据库执行的所有事物的一些列记录。可以使用事物日志备份将数据库恢复到特点的时间点(如输入多余数据前的那一刻)或恢复到故障点
还原步骤:①还原完整备份②依次还原每个事物日志备份,而不是还原最后一次事物日志备份。

文件组备份

可以备份和还原数据库中的个别文件。可以只还原已还原损坏的文件,而不用还原数据库的其余部分,从而加快恢复速度。

不同的备份类型适应的范围也不同。
全备份,可以只用一步操作完成数据的全部备份,但执行时间比较长。
差异备份和日志备份,都不能独立作为一个备份集来使用,需要进行一次全备份。
文件备份必须与事物日志备份一起使用,所以文件备份只适应用于完全恢复模型和大容量日志记录恢复模型

每一种备份类型都有不足之处,要针对需要选择备份类型,或者使用几种备份方法的配合来完成数据库的备份

经常使用备份方式组合有以下几种

  1. 全备份+差异备份:以一周为周期,星期日进行全备份,星期一到星期六每天进行差异备份
  2. 全备份+日志备份:以一周为周期,星期日进行全备份,星期一到星期六每天进行日志备份
  3. 文件组备份+日志备份:备份周期取决于数据库的大小和能力,每周期分别进行一部分数据文件备份,每天进行日志备份。

使用T-SQL脚本备份数据库事务日志

备份语法:backup log 数据库名 to disk=文件完整路径;

使用T-SQL脚本还原数据库事务日志

如果要还原的数据库不存在

还原语法:
第一步还原数据库:restore database 数据库名 from disk=文件完整路径 with norecovery;
第二步还原事务日志:restore log 数据库名 from disk=文件完整路径 with recovery;

如果要还原的数据库存在

还原语法:
第一步还原数据库:restore database 数据库名 from disk=文件完整路径 with norecovery,replace;
第二步还原事务日志:restore log 数据库名 from disk=文件完整路径 with recovery

优点:

1、日志备份会节约更多的时间,恢复起来也更快可以及时恢复,数据丢失少。
2、在SQL Server中,事务日志备份是增量备份,它捕获的是自上一次事务日志备份以来的变化,而差异备份则包
含了自上一次完整备份以来所有变化的页。
3、日志备份可以恢复到相应的时间点。

缺点:

恢复过程比较慢,需要恢复多个备份包括完整备份和日志备份。

远程异地备份

方法1: 利用作业
sql server 数据还原--日志备份、实现远程异地备份_第8张图片
解释: 利用xp_cmdshell创建一个网络映射, 把备份好的数据库, 远程存入到映射盘符中,data是112.118.0.2服务器的一个允许读写的共享文件夹,执行完成后,把映射删除掉,释放资源.

在使用cp_cmdshell创建网络映射时, 先要开启, 否则会有报错, 如下命令:
EXEC sp_configure ‘show advanced options’, 1;-- 允许配置高级选项
–配置选项’show advanced options’ 已从1 更改为1。请运行RECONFIGURE 语句进行安装。
RECONFIGURE;-- 重新配置
–命令已成功完成。
EXEC sp_configure ‘xp_cmdshell’, 1;-- 开启xp_cmdshell
–配置选项’xp_cmdshell’ 已从1 更改为1。请运行RECONFIGURE 语句进行安装。
RECONFIGURE;-- 重新配置
–命令已成功完成。

exec master…xp_cmdshell ‘net use \IP\data 密码 /user: IP\administrator’
– net use \IP\data 允许网络读写的共享文件路径
– 密码 : IP服务器的登录密码
–/user:: IP\administrator IP的登录名
declare @ss varchar(50) --声明变量
set @ss = convert(varchar(100),GetDate(),112)
-–赋值当前日期, 我这里没有使用
set @ss =‘\IP\data\MSGC.bak’
–最好是使用同名的备份, 否则还原的时候可能会有问题
backup database MSGC to disk=@ss WITH FORMAT
–WITH FORMAT可以做到覆盖任何现有备份和创建新媒体集
exec master…xp_cmdshell’net use \IP\data /delete’
–删除刚才创建的映射

方法2:利用维护计划
sql server 数据还原--日志备份、实现远程异地备份_第9张图片
sql server 数据还原--日志备份、实现远程异地备份_第10张图片
sql server 数据还原--日志备份、实现远程异地备份_第11张图片
T_SQL 数据库备份 数据库还原

--创建备份设备
exec sp_addumpdevice 'disk','Back1','d:\backup\backData.bak'
---创建完整备份
backup database 数据库名称 to Back1
with init ;--覆盖
--备份事务日志
backup log 数据库名称 to Back1
----数据库还原指定时间点
---首先要完整还原数据库    NORECOVERY
RESTOre Database 数据库名称
from Back1
with File=1---备份集为1,这个在前面完整备份的时候从message中得到
Replace,
NORECOVERY;
----根据日志信息以及备份恢复日志至某一点
restore log 数据库名称
from Back1
with Recovery,
file =2---备份集2
stopAt='指定时间点';
--是在执行上述操作以后,TESTDB2往往处于restoring状态,使用此语句使数据库可用
RESTORE DATABASE 数据库名称 WITH RECOVERY; 
---stopAt:必须在备份备份log,的start time之后,

你可能感兴趣的:(SQL)