'
SQL Server 2000 Enterprise Edition '
日志传送温备方案
1 原理
在
SQL Server 2000
企业版中,可以使用“日志传送”不间断地将事务日志从一个数据库提供给另一个。不间断地从源数据库中备份事务日志,然后将它们复制并还原到目的数据库,使目的数据库与源数据库保持同步。我们将源数据库所在的服务器称为源服务器,将目的数据库所在的服务器称为目的服务器。如下图所示:
源服务器上的备份作业定时生成源数据库的事务日志备份,然后由目的服务器上的复制作业定时从源服务器上将事务日志文件复制到本地,然后由目的服务器上的恢复作业定时将日志备份还原到目的数据库上。监视服务器可以监视每个日志传送对的工作情况,对未完成的同步给予警报。
由于源数据库和目的数据库通过事务日志传送的实现数据同步,这样我们就可以将目的服务器作为备用服务器。一旦源服务器出现故障,可以在短时间内将目的服务器还原为正常服务状态,接替源服务器提供服务。因此可以用
SQL Server
的日志传送作为我们的数据库服务器的温备方案。
2 日志传送设置步骤
1)
在源服务器和目的服务器中分别创建用户名和密码一致的Windows
帐户,如用户名/
密码:test/888888
;
2)
在源服务器和目的服务器中,都把“MSSQLSERVER
”、“SQLSERVERAGENT
”服务的登录身份改为1
)中所建的帐户:test
,并重启服务;
3)
在设置日志传送的客户端的企业管理器中注册所有的源服务器、目的服务器、监视服务器,并将源数据库的“故障还原模型”设置为“完全”;
本示例中的源服务器是RD122
(192.168.60.122
),目的服务器是RD156
(192.168.61.156
),监视服务器是RD120
(192.168.60.120
),要进行日志传送的数据库是test
。这里的每个服务器名都是在每个数据库实例上运行SELECT @@servername
获得的。注意:一定要用@@servername
值作为企业管理器的注册服务器的名字,因为在备份作业、复制作业和还原作业在通知监视服务器各自的工作状态时,是用各自所在数据库实例的@@servername
作为源服务器和目的服务器名字去通知的;而在日志传送设置过程中,在监视服务器上保存的源服务器和目的服务器的名称是配置客户端的企业管理器中的注册服务器的名称。
4)
在源服务器上创建一个目录f:\dbbackup
,并共享给test
用户,权限是可更改、读取。这个目录用来保存原数据库的事务日志备份文件,共享路径名是\\192.168.60.122\dbbackup
;
5)
在企业管理器中鼠标右击数据库test
,选择“所有任务 >
维护计划”;
6)
“选择数据库”这一页,默认勾选了数据库test
,这时我们要勾选“将事务日志传送到其它的SQL Server
”;
7)
然后跳过“更新数据优化信息”、“检查数据库完整性”这两页,在“指定数据库备份计划”这一页,将“作为维护计划的一部分来备份数据库”的勾选去掉;
8)
在“指定事务日志的备份磁盘目录”这一页中选择“使用此目录”,并填写目录路径名f:\dbbackup
,然后根据需要选择“删除早于此时间的文件”和删除文件的时间阀值;
9)
在“指定事务日志共享”这一页,填入保存事务日志备份文件的共享目录的共享路径名
10)
在“指定日志传送目的”页中点击“添加”按钮,
在如下弹出的对话框中选择目的“服务器名称”RD156
,这里的“事务日志目的目录”是用来保存从源服务器上复制过来的日志备份文件的,这里选择了默认路径,也可以根据实际情况选择其他本地路径。下面目的数据库的各个选项也可以选择其他值,这里也选择的默认选项。
在“数据库装载模式”中选择了“备用模式”,这样可以以只读方式访问目的数据库。“终止数据库中的用户”选项也可以根据实际情况勾选。
然后点击“确定”按钮,这个目的数据库就加入了。
11)
在“初始化目的数据库”页,保持默认选择,继续“下一步”;
12)
在“日志传送调度”配置目的服务器上的复制作业和还原作业的调度计划,可以根据实际情况修改调度计划,这里选择了默认调度计划;
然后在“日志传送阀值”页中,选择备份和同步的警报阀值;
13)
在“指定日志传送监视服务器信息”中选择将监视日志传送的服务器名称192.168.60.120
。
单击“使用 Windows
身份验证”或“使用 SQL Server
身份验证”连接到监视服务器。
log_shipping_monitor_probe
登录名是固定的,必须使用它连接到监视服务器。如果这是一个新帐户,则选择一个新密码。如果该帐户已经存在于监视服务器上,则必须指定现有的密码。这里选择了使用“使用 SQL Server
身份验证”。
14)
在“要生成的报表”页,选择了将报表写入源服务器上的F:\dbbackup\MonitorReport\
目录,便于观察日志传送情况;
15)
在“维护计划历史记录”中选择了默认选择。也可以根据实际情况调整;
16)
到这一步,填写本次维护计划的名称,设置基本结束。
点击下一步后显示如下页面,点击“完成”,就开始日志传送初始化了。
17)
如果中间没有什么错误的话,就会显示如下结果:
我们可以看到目的服务器RD156
上生成了一个只读的数据库。
3 目的服务器恢复为源数据库服务器的方法
方法'
1'
:
在目的服务器上用日志传送的最后一个日志恢复数据库即可,不过一定要带上
with recovery
选项。命令如下:
RESTORE LOG [DBName] FROM DISK = 'x:\xxx\xxx.TRN' WITH RECOVERY
方法'
2'
:
使用不还原的恢复数据库命令:
RESTORE DATABASE [DBName] WITH RECOVERY
4 注意事项
1)
源服务器和目的服务器上的
Windows
服务的登录帐号的用户名密码必须一致,而且都必须隶属于
Administrators
组;
2)
事务日志备份文件保存的共享目录必须对源服务器和目的服务器的
SQLServer
服务登录帐号有可读写的权限;
3)
设置日志传送的客户端的企业管理器必须注册所有的源服务器、目的服务器以及监视服务器,并且每个服务器的名称必须和各个数据库实例的本地服务器名称
@@SERVERNAME
一致;
4)
任何对事物日志的备份操作都会影响日志传送,所以在配置好日志传送后,不能对源数据库做日志备份操作或执行
Backup Log
命令;
5)
数据库的完全备份不会影响已经配置好的日志传送;
6)
在日志传送设置好并正常运行后,如果在源数据库中添加数据文件会导致下一个事务日志备份文件还原失败(若源数据库数据文件的路径和目的数据库文件路径一致,有可能避免这个问题),从监视服务器上得到的信息如下:
restore log [DBNAME] from disk ='[
添加数据文件后生成的第一个事务日志备份文件
]'
with move '[
添加的数据文件逻辑名
]' to '
本地新的数据文件物理路径名
',
standby ='Undo
文件名
'
例如,
test_tlog_200911191645.TRN
因为增加了数据文件还原事产生
5123
错误,可以用下面的命令手工恢复:
restore log test from disk ='C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\test_tlog_200911191645.TRN'
with move 'test_data1' to 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data1_data.ndf',
standby ='C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\test.TUF'
5 参考文献: