在企业级数据库管理中,灾难恢复是一个至关重要的环节。日志传输(Log Shipping)是一种常见的数据库故障转移策略,它允许将一个服务器(主服务器)的事务日志备份到另一个服务器(辅助服务器)。当主服务器发生故障时,辅助服务器可以接管服务,从而实现业务的连续性。本文将详细介绍如何进行日志传输故障转移,包括灾难恢复测试、故障转移执行以及故障回复的步骤。
在开始执行日志传输故障转移之前,需要对主脚本进行定制,以生成所需的故障转移脚本。
首先,下载并打开提供的zip文件,然后使用SQL Management Studio打开其中的SQL_DR_Master.sql文件。
接下来,更新变量声明后的变量:
在运行脚本之前,请查看“考虑事项”部分,了解所需的先决条件。例如:
在辅助服务器上执行脚本。这不会实际开始故障转移过程。它只是生成将用于执行故障转移的脚本。
在辅助服务器上随时运行此脚本以查看脚本/步骤是安全的。如果确实要进行故障转移,请将其作为整个过程的一部分运行,以确保生成的脚本尽可能最新,并正确反映当前环境。
下表描述了每个生成的脚本将采取的主要操作以及预期的结果。前5个脚本从主服务器故障转移到辅助服务器,最后5个脚本从辅助服务器故障回复到主服务器(如果需要)。
要开始故障转移,请在SQL Management Studio中打开01.sql - 05.sql。查看下面的表格,并花时间仔细检查生成的.sql脚本,确保它们对有意义,并且没有预见到任何问题。在确认生成的脚本看起来不错之后,就可以开始执行服务器的故障转移的第一步了。
验证01.sql连接到正确的服务器,并点击执行。重复此操作,执行02.sql - 05.sql以完全执行故障转移。在执行过程中参考下面的表格,以确保一切按预期进行。
脚本 | 目标服务器 | 主要操作 | 预期结果 |
---|---|---|---|
01.sql | 主服务器 | 执行并禁用LS备份作业。 | LS备份作业已运行并已禁用。 |
02.sql | 辅助服务器 | 移除任何LS还原延迟,应用所有日志,并禁用LS还原作业。 | 数据库已应用所有可用日志。 |
03.sql | 主服务器 | 执行日志备份。 | 数据库处于NORECOVERY模式,准备故障回复。 |
04.sql | 辅助服务器 | 生成数据库剩余日志的列表并恢复它们。 | 数据库已应用所有日志并保持不可访问。 |
05.sql | 辅助服务器 | 在每个数据库上执行还原命令。 | 数据库现在可用并准备使用。 |
执行05.sql之后,将在辅助服务器上运行。如果这是一次DR测试,可以在辅助服务器上执行一些测试(例如,暂时将应用程序指向它以确保它正常工作)。
要执行故障回复,请在SQL Management Studio中打开06.sql - 10.sql。验证06.sql连接到正确的服务器并点击执行。重复此操作,执行07.sql - 10.sql以完全完成故障回复。在执行过程中参考下面的表格,以确保一切按预期进行。
脚本 | 目标服务器 | 主要操作 | 预期结果 |
---|---|---|---|
06.sql | 辅助服务器 | 执行日志备份。 | 数据库处于NORECOVERY模式,等待LS重新参与。 |
07.sql | 主服务器 | 还原可用的日志备份。 | 数据库已应用所有可用日志并仍处于NORECOVERY模式。 |
08.sql | 主服务器 | 将所有数据库设置回多用户模式。 | 数据库现在可用并准备使用。 |
09.sql | 主服务器 | 启用所有LS备份作业。 | 主服务器正在制作日志备份。 |
10.sql | 辅助服务器 | 启用所有LS还原作业。 | 日志备份正在由辅助服务器还原,日志传输正常运行。 |
请注意,在这段时间内对辅助服务器所做的任何更改都将被带回主服务器,以保持数据库同步。这允许日志传输在离开的地方立即恢复。将应用程序重新指向主服务器,并进行任何必要的测试,以确保一切按预期进行,并为用户完全做好准备。