SQLServer 事务日志传送

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQLServer 事务日志传送

事务日志传送概述

SQL Server的事务日志传送备份是仅次于镜像的高可靠性备份方案,可以达到分钟级的灾难恢复能力。其项目实施成本,又远小于镜像的投入,因此是一种非常实用的备份解决方案。前文介绍过SQLServer 镜像功能完全实现,镜像是一种高性能的备份方案,但其局限性在于镜像的辅

助服务器也就是镜像服务器只能有一个,当我们考虑过个目标服务器的时候,镜像就满足不了我们的需求了,这时候日志传送可谓雪中送炭,日志传送也可以结合镜像来组合使用。

在选择镜像还是日志传送的时候我们应考虑:

需要多少个目标服务器?

如果只需要一个目标数据库,建议使用数据库镜像解决方案。

如果需要多个目标数据库,则需要使用日志传送(可以单独使用,也可以与数据库镜像一起使用)。如果将这两种方法组合使用,就既能享有数据库镜像的好处,又能获得日志传送提供的多个目标数据库的支持。

如果需要延迟还原目标数据库的日志(通常是为了防止逻辑错误),请使用日志传送(可以单独使用,也可以与数据库镜像一起使用)。

日志传送还可以和数据库复制一起使用。

故在事务日志传送中提供了No recovery mode和Standby mode,两者的介绍如下:

1. 无恢复模式(No recovery mode):既不前滚也不回滚未提交的事务,数据不可读。

2. 备用模式(Standby mode):在恢复日志期间回滚所有未提交的事务,并且将所有未提交的事务保存为一个单独的Transaction Undo File(TUF)文件,恢复过程通过该文件来维护事务的完整性,当恢复下一个事物的时候则恢复所有已提交的事务。Standby mode中的复选框勾选则当日志恢复的时候,断开所有用户的连接,如果有一个用户没有断开,则还原无法进行。

事务日志传送实现

其实操作比较简单,但是会遇到稀奇古怪的问题。在这里也把问题总结下。

首先需要两个用来做日志传送的数据库。叫做主数据库和辅助数据库。当然还可以配置监视数据库。

主数据库IP: 192.168.0.2

辅助数据库IP:192.168.0.3

下面通过简单的几步就可以实现

1,建立共享文件夹以及复制文件夹

建立好需要传送日志的数据库,并在辅助服务器上建一个共享文件夹叫做PrimaryData,用来传送备份文件。

设置好权限。保证主服务器可以访问,或者直接设置EveryOne都可访问。

这里设置不当会出现以下错误

无法打开备份设备'\\192.168.0.3\PrimaryData\test.bak'。出现操作系统错误53(找不到网络路径。)。

解决方法.

设置共享文件

exec master..xp_cmdshell 'net use \\192.168.0.3\PrimaryData密码/user:用户名’

至于句话的意思大家可以去查下咯.执行成功后就可以将数据库备份到网络路径上了。

报错为:

1 系统发生1312错误

3 指定的登陆会话不存在。可能已被终止

解决方法.

exec master..xp_cmdshell 'net use \\192.168.0.3\PrimaryData 密码

/user:192.168.10.3\administrator'

2,执行完全备份

USE master;

ALTER DATABASE test SET RECOVERY FULL;

GO

BACKUP DATABASE test

TO DISK='\\192.168.0.3\PrimaryData\test.bak'

WITH FORMAT;

GO

如果上面一句话执行成功的话,这个应该没问题。之后的步骤就简单了。

3,开始执行日志传送

访问\\192.168.0.3\PrimaryData\可以看到刚才备份的文件。

然后在数据库上右键-属性-事务日志传送

设置备份文件夹,这里我都备份到了辅助服务器上。

确定之后点击添加服务器,设置要连接的数据库。

设置复制文件的位置,这里最好在辅助服务器上。可以很快访问到,省去了网络带来的延迟。

这里的两种模式上文都有介绍,大家可以根据需要来选择。

到此,主服务器上的配置就完成了。

4,辅助服务器上查看记录

如果以上步骤没问题的话,我们可以在辅助服务器上的PrimaryData 目录下看到trn后缀的文件。

可以在代理下查看作业执行的历史记录。

如果你选择的是备用模式。我通过查看历史记录遇到了一个问题是

“因为数据库正在使用,所以无法获得对数据库的独占访问权“

网上有介绍说用sql语句来杀掉进程,不过这种方式不是长久之计。可以通过配置数据库的属性,在数据库属性的【选项】选项卡中,设置【限制访问】参数为“Single”即可。

使用无恢复模式不会出现这样的问题。

5,故障恢复

将主服务器上的日志传送停止,然后将最后的备份文件复制到辅助服务器上执行以下语句

RESTORE LOG

FROM DISK ='d:\PrimaryData\Database_name.trn' WITH RECOVERY

如果无法访问活动事务日志,那么可以使用下面的命令来恢复数据库。RESTORE DATABASE WITH RECOVERY;

下篇详细讲故障恢复。

相关文档
最新文档