SQL2005事务日志传送步骤
SQL2005事务日志传送步骤
结构:
环境:两台电脑,操作系统都是Windows7,两台电脑上都安装SQL2005 开发者版
主机的计算机名:JOE
备机的计算机名:WIN7U-20130414Z
要备份的数据库:hengshan
---------------------------------------------------华丽的分割线------------------------------------------------------
下面说的步骤配合截图跟sql脚本来做
1、在备机上建立共享文件夹和复制文件夹 我这里是复制文件夹和备用文件夹都用同一个\\WIN7U-20130414Z\PrimaryData
在备机的D盘根目录下建了一个PrimaryData的文件夹,然后设置administrator有完全控制权限,大家可以根据需求新建一个Windows用户
设置相应权限,这里我就不说了
2、设置数据库的恢复模式
需要做事务日志传送的数据库需要设置为完整恢复模式
1 USE master; 2 ALTER DATABASE [hengshan] SET RECOVERY FULL;--完整恢复模式 3 GO
设置备机上的administrator的密码为:888888,然后在cmd下执行 net view要看到备机 能ping通
能否打开共享文件夹,点击 开始-》运行-》
开启SQLSERVER中的xp_cmdshell权限,然后执行下面语句
1 EXEC master..xp_cmdshell 'net use \\WIN7U-20130414Z\PrimaryData 888888 /user:WIN7U-20130414Z\administrator'
3、执行完整备份
1 BACKUP DATABASE [hengshan] 2 TO DISK = '\\WIN7U-20130414Z\PrimaryData\hengshan.bak' 3 WITH FORMAT; 4 GO
4、开始执行日志传送
这一步看配图,我没有使用sql脚本,因为在网上找不到
按照上图输入路径就可以了
在连接备机数据库的时候我使用的是sa用户,大家可以使用其他用户来连接备库,只有那个用户有权限
连接好之后,就可以配置备库了,因为这里截图是我先前做实验的时候截的,可能机器名跟数据库名跟本次文章说的不一样
不过设置都是一样的,这里初始化辅助数据库的时候,不需要在备机上先建好数据库
选择复制路径
这一步要注意了
------------------------------------------------华丽的分割线--------------------------------------------------------------
这里介绍一下事务日志恢复模式
事务日志模式
在设置辅助数据库时,对于恢复事务日志Restore Transaction Log选项卡,我们设定了为无恢复模式No recovery mode,还有一个可供选择的则为备用模式Standby mode。
在事物日志的传送过程中,恢复事务日志Restore Transaction Log与我们普通的恢复不同,一般情况下的恢复是回滚所有未提交的事务,前滚所有已提交但未写入
磁盘的事务。事务日志中,如果一个事务回滚,所有改变的数据将会被丢失, 因为在这个时候,你并不知道下一事物究竟是回滚还是提交。
故在事务日志传送中提供了两个模式 无恢复模式No recovery mode和备用模式Standby mode
两者的介绍如下:
1. 无恢复模式(No recovery mode):既不前滚也不回滚未提交的事务,数据不可读。
2. 备用模式(Standby mode):在恢复日志期间回滚所有未提交的事务,并且将所有未提交的事务保存为一个单独的Transaction Undo File(TUF)文件,
恢复过程通过该文件来维护事务的完整性,当恢复下一个事务的时候则恢复所有已提交的事务。
Standby mode中的复选框勾选则当日志恢复的时候,断开所有用户的连接,如果有一个用户没有断开,则还原无法进行。
就是说如果TUF文件里还保存着未提交的事务则不能恢复,所以要断开所有用户连接才能恢复
备用模式才有TUF文件
-------------------------------------------------华丽的分割线--------------------------------------------------------
辅助服务中hengshan 数据库由restoring显示为standby/read-only模式
辅助服务中hengshan 数据库由restoring显示为standby/read-only模式。如果设定的复制和恢复间隔时间很长,
可以手动执行主服务器中的backup作业和辅助服务器其中的copy 作业和restore作业,将主服务器上所有未复制的日志文件复制到设定的恢复目录(restorelog)中,
然后恢复到辅助服务器中。
备库:
主库:
同样也可以将Standby mode切换回No recovery mode期间回滚所有未提交的事务,并且将所有未提交的事务,
保存为一个单独的Transaction Undo File(TUF)文件,恢复过程通过该文件来维护事务的完整性,
当恢复下一个事物的时候则恢复所有已提交的事务。Standby mode中的复选框勾选则当日志恢复的时候,
断开所有用户的连接,如果有一个用户没有断开,则还原无法进行。
5、辅助服务器上查看记录
如果以上步骤没问题的话,我们可以在辅助服务器上的PrimaryData 目录下看到trn后缀的文件。
可以在代理下 查看作业执行的历史记录。
6、故障恢复
故障转移
在主服务器切换到master数据库,然后执行备份hengshan数据库的尾部日志。
1 USE master 2 go 3 --备份主库尾部日志 4 BACKUP LOG [hengshan] TO DISK ='\\WIN7U-20130414Z\PrimaryData\last.bak' WITH NO_TRUNCATE 5 GO
将主、辅助、监视服务器上日志传送的几个作业禁用(Disable) 。
在辅助服务器上执行copy作业和resotre作业将未复制过来的日志复制到恢复目录并全部恢复完毕。
将尾部日志恢复到辅助服务器辅助数据库中并使辅助数据库hengshan数据库处于联机状态。在辅助服务器master数据库中执行如下脚本:
1 RESTORE LOG [hengshan] FROM DISK = 'D:\PrimaryData\last.bak' WITH NORECOVERY; 2 go 3 --显示正在还原 4 RESTORE DATABASE [hengshan] WITH RECOVERY; 5 go 6 --可以访问了
改变应用程序的连接字符串,使应用程序连接到辅助服务器的辅助数据库,此时辅助服务器的辅助数据库已变成为主服务器主数据库。
当原始主服务器修复后,再重新配置日志传送即可。
------------------------------------------------华丽的分割线----------------------------------------------------------------------------
刚才说到一般配置备份间隔在每天在 0:00:00 和 23:59:00 之间、每 15 分钟 执行。将从 2013/4/30 开始使用计划
一般执行间隔都在15分钟,但是你可以自己手动执行作业:
先在主机上执行LSBackup_hengshan
然后在备机上执行LSCopy_JOE_hengshan
然后在备机上执行LSRestore_JOE_hengshan
执行方法:在SQLSERVER代理->作业->LSBackup_hengshan按右键->点击 "作业开始步骤" 按钮
禁用作业跟启用作业的按钮就在那个右键菜单的下面,很容易找的
写完了,继续水饺了 o(∩_∩)o