微软sql server2005 standby有两个解决方案,一是数据库镜像,而是传送事务日志。本文主要介绍传送事务日志需要注意的地方。生产环境的数据库原先的备份方式是,每天凌晨一个整备,每隔15分钟一个log备份。
第一步,主数据库上右击 任务 ,传送事务日志
第二步:
勾选将此数据库启用为日志传送配置中的数据库
注意:share为共享文件夹,本例将备份日志放到了辅助服务器上.
第三步:
点击 添加,按下图设置
注:temp1.bak为主数据库的最新完整备份文件,提前已将该备份拷入辅助数据库的share文件夹中.
第四步:
复制文件 必须输入备份所在地址
注:“在以下时间后删除复制的文件”的作业=复制作业,也就是本例中的LSCopy_temp1
第五步:
还原事务日志
注:选无恢复模式后,数据库一直处于还原状态,不能访问,无法验证数据的同步情况。
备用模式的好处就是可以在restore作业不执行的时候,执行select查询;需要注意的是,有查询连接辅助服务器时,restore会报错。所以尽量不要读取辅助数据库。
备用模式是通过产生一个tuf的文件来记录的。每进行一次restore,tuf文件就会recreate一次。
第六步:
作业执行几天后,出错啦!很多时候不是刚设置完成就暴露这个错误。
提示如下:
此备份集中的日志开始于 LSN 22000000007700001,该 LSN 太晚,无法应用到数据库。可以还原包含 LSN 22000000007600001 的较早的日志备份
原因:主数据库每15分钟的log备份和该功能的backup作业交替执行,乱了手脚。解决办法,主数据库的15分钟log备份是要不得了。这点似乎和oracle的redo、archive差远了。主数据的全备还是没问题的,可以继续保留而且全备很关键。
总结:
传送事务日志的原理
备份主数据库的log,将该log备份restore至辅助数据库,辅助数据库应为还原状态或者备用/只读模式。用T-sql表述如下:
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
PS:正在还原状态的数据库无法drop,可执行
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
备用/只读状态的辅助数据库,复制中带了主数据库的发布。drop辅助数据库时提示数据库正应用于发布,无法删除。可执行
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
PS:如果是多台standby,那么首先停掉主上的日常log备份,再执行晚上的全备作业。将备份拷贝到多台辅助数据库机器上,使用上述代码恢复数据库的全备份至standby状态。配制主数据库,选择否,辅助数据库已经初始化。将主的备份放到主数据库的机器上,使用辅助数据库上的copy作业将主数据库上的备份拷贝到辅助数据库的机器上。