LogShipping是MS SQL Server高可用性解决方案中比较容易实现的一种,其优劣程度及具体的配置步骤,相信大家都已经很熟悉了,所以不再赘述。我们知道,LogShipping只能使用手工方式实现故障转移,所以往往都有这种感觉:实现主从切换要比前期配置Logshipping更难。今天我结合常见的两个场景,整理了下实现主从切换的详细步骤。
背景:
为了方便截图,我将Primary server及Secondary设定为在同一个instance上,也就是说LogShipping跟LogShipping_secondary是在同一instance上的两个数据库,我们已经为primary数据库LogShipping配置了日志传送,且LogShipping_secondary是secondary数据库。但是为了方便区分主从,我还是使用 Primary server 及Secondary server来代指这两个数据库。
截图:
场景一,Primary 数据库依然可访问,只是需要切换至Secondary数据库。
Step1,在Primary server的master数据库中打开一个新的查询窗口,运行下面的sql语句以完成对LogShipping的日志备份且with NORECOVERY。
Backup log LogShipping to disk = 'E:\backup\LogShippingLog.bak' with NORECOVERY
截图:
Step2, 手动运行Secondary server上的复制文件agent及还原agent,以完成从备份共享文件夹的文件复制及在Secondary server上的还原。
截图:
Step3, 将警报agent、Primary server上的备份agent、Secondary server上的复制文件agent及还原agent都禁用掉。
截图:
Step4,在Secondary server上使用step1中创建的日志备份还原LogShipping_secondary数据库,且with RECOVERY。
Restore log LogShipping_secondary from disk ='E:\backup\LogShippingLog.bak' with RECOVERY
截图:
Step5, 重新配置现在的Primary server(原Secondary server)对应的Logshipping选项,还是用以前的配置即可,只是将原来的Primary server 设定成了现在的Secondary server(standby mode)。
截图:
Step6,启用当前Primary server(原Secondary server)上的备份agent,启用当前Secondary server(原Primary server)上的复制文件agent及还原agent。
场景二,Primary 数据库遇到了灾难,已不可正常访问,需要迅速转移至Secondary数据库。
截图:
Step1, 手动运行Secondary server上的复制文件agent及还原agent,以完成从备份共享文件夹的文件复制及在Secondary server上的还原。
截图:
Step2, 将警报agent、Primary server上的备份agent、Secondary server上的复制文件agent及还原agent都禁用掉。
截图:
Step3, 在Secondary server的master数据库中打开一个新的查询窗口,运行下面的sql语句以完成对LogShipping_secondary的还原,且with RECOVERY。实际上也就是将LogShipping_secondary数据库从read-only状态改成online状态。
Restore database LogShipping_standby with Recovery
Step4, 重新配置现在的Primary server(原Secondary server)对应的Logshipping选项,还是用以前的配置即可。如果原Primary server还继续可用,只需将原来的Primary server设定成了现在的Secondary server(standby mode),并使用现在的LogShipping_secondary数据库还原出来一个新的LogShipping数据库。
注意:在SQL Server 2008 版本中无需再使用DTS/SSIS包或者bcp去同步两个db之间的logins及users了,因为在每次的还原剂备份中都会自动将Primary server上的login及users同步至Secondary server中。