APP下载

解析SQL Server日志传送机制

2016-11-26

网络安全和信息化 2016年10期
关键词:备份文件日志备份

引言:在SQL Server早期版本中,便出现了日志传送(即Log Shipping)技术。日志传送拥有独特的功能,在SQL Server灾难恢复技术中扮演着重要的角色。其工作机制主要是通过事务日志备份和还原任务,来保持多台SQL Server主机之间的数据同步。

日志传送的工作机制

在日志传送机制中,主服务器可以同时对应多台辅助服务器,即可以存在多个主数据库的副本。

例如,当存在三台辅助服务器的情况下,前两台服务器上的辅助数据库设置为无恢复模式,提供冗余的灾备功能,即使其中一台服务器出现故障,另外一台也可以提供灾难恢复功能。第三台服务器上的辅助数据库可以设置为备用模式,将诸如报表读查询请求之类的操作交由其处理。

此外,还可以为日志传送机制配置监视服务器,主要用来记录备份/还原作业的历史和状态信息,可以在作业失败时生成警报。

日志传送机制的运作并不复杂,首先日志传送组件在主服务器上对主数据库进行日志备份.

然后将日志备份文件复制到所有的辅助服务器上,辅助服务器对备份日志进行还原,这样的一系列过程不断进行重复,实现主服务器和辅助服务器上数据的同步。

当然,需要在主服务器,辅助服务器和监视服务器上创建相应的Job作业(例如备份作业,复制作业,还原作业,监视作业等),并通过每台服务器上的SQL Server代理服务来触发这些作业,实现上述备份,复制和还原动作。

在主服务器上存在一个共享目录,日志备份作业将备份日志存放到该目录中。通过复制作业,将备份日志文件复制到辅助服务器上的本地目录中,同时创建相应的记录信息,利用还原作业,将日志备份文件还原到辅助数据库中。

如果在预设的时间内,无法完成以上备份,复制和还原作业,就会在监视服务器上触发监视作业,创建状态和历史记录以及警报信息。

日志传送的故障转移

当主数据出现异常,可以将应用切换到辅助服务器上。在一般情况下,当发生故障时,主数据库和辅助数据库是不同步的,如果主数据库还可以访问,就需要手工对其进行日志备份(即备份主数据库的尾日志),这样就获得了最后一次备份作业触发后所有的数据更新。

然后将主服务器上的共享目录中的所有未被复制的备份文件,连同尾日志备份,全部复制到所有的辅助服务器上。

在辅助服务器上,将所有未还原的事物日志备份按照顺序还原到辅助数据库中,完成数据同步工作。可以通过查看还原作业的历史信息,来清晰的了解究竟需要还原哪些日志备份。

接下来对辅助数据库执行恢复操作,使数据库处于一致的状态。执行“Restore Database”等T-SQL语句,使其上线并处于联机状态。这样,就完成了故障转移操作。

日志传送其实只是同步数据库的内容,并不会同步Logging登录信息,这些信息保存在Master数据库中,之后必须通过手动操作,将登录账号从原始的服务器实例迁移到辅助服务器上,使其变成新的主服务器实例。

在该主服务器实例上要保证登录名和密码以及登录名对应的SID与和原始数据库一致,修改应用程序的连接字符串,使之重定向到新的主服务器上。

日志传送是利用SQL Server Agent来执行备份还原作业,从而达到主副数据库同步的目的。

因为作业是每隔一段时间才被SQL Server Agent触发,所以主副数据库的同步并非实时进行,其最大数据损失量仅仅是由备份作业运行的时间间隔决定的。

因此,尽可能的减小备份作业的间隔时间,可以将数据损失尽可能的减低。注意,SQL Server允许的最小间隔时间为10秒。当然,过小的备份间隔也会给主服务器造成额外的负担。

当然,日志传送操作起来有些繁琐,并不适用于高可用环境,只能作为廉价的灾备方案使用。为主数据库提供一个或者多个副本作为保证。例如,可以在群集环境中使用日志传送功能,来提高其应对故障的能力。

注意,对于启用了日志传送任务的数据库来说,不能在维护计划中创建事务日志备份,但是可以创建完整的数据库备份和差异备份,而无需担心和日志传送产生冲突。因为任何的手动的日志备份,都会破坏日志传送的工作。如果找不到手工备份的日志文件,就会导致日志传送链条的中断,只能重建整个日志传送链条。

实例分析日志传送机制

这里举例来说明日志传送功能的实现方法。例如,SQLnode1为 主 服 务器,SQLnode2为辅助服务器。在SQLnode1中针对名为“chanpin”的数据库进行日志传送配置操作,将该数据库设置为完全恢复模式,方法是在Microsoft SQL Server Management Studio窗口中打开该数据库属性窗口,在左侧点击“选项”项,在右侧的“恢复模式”列表中选择“完整”项。

并 执 行“BACKUP DATABASE [chanpin]TO DISK = N′D:akchanpin.bak′ WITH NOFORMAT,NOINIT,NAME = N′CHANPIN-完 整 数 据 库 备 份′,SKIP, NOREWIND,NOUNLOAD, STATS= 10′”,“Go”之类的语句,对其执行一次全备份。事先需要在SQLnode1服务器上建议一个共享文件夹,路径为“D:ak”,用来存储日志备份文件。必须让SQL Server Service账户拥有对该目录的完全控制权限,让辅助服务器上的SQL Server Agent代理账户有权读取该文件夹内容。

在“CHANPIN”数 据库的右键菜单上点击“任务”-“传送事物日志”项,在弹出窗口(如图1)中选择“将此数据库启用为日志传送配置中的主数据库”项,点击“备份设置”按钮,在事务日志备份设置窗口中的“备份文件夹的网络路径”栏中输入共享路径。

例 如“\sqlnode1ak”。也可以在其下编辑栏中输入其本地路径。又例如“D:ak”,这要求备份文件夹存储在主服务器上。可以根据需要,调整备份文件保留时间和报警时间。

在默认情况下,备份文件经过72小时会被自动删除,如果在一个小时的间隔内没有触发备份作业,将会触发报警动作。为了控制备份文件的体积,可以在“设置备份压缩”列表中选择“压缩备份”项,在“作业名称”栏中可以更改其名称,点击“计划”按钮,在计划属性窗口(如图2)中的“执行间隔”栏中可以设置备份的频率。默认为每隔15分钟执行一次备份。

图1 传输日志配置界面

图2 设置计划属性参数

点击确定按钮保存配置,在上级窗口中的“辅助数据库”栏中点击“添加”按钮,在辅助数据库设置窗口中点击“连接”按钮,在连接到服务器窗口中的“服务器名称”列表中选择“SQLnode2”。

选择合适的身份验证方式,点击“连接”按钮,来添加辅助服务器实例,日志传送机制可以不依赖于AD域环境,只要服务器之间可以正常通讯即可。

在“辅助数据库”栏中输入“CHANPIN”。因为事先已经执行了主数据库的完整备份操作,所以在“初始化辅助数据库”面板中选择“是,将主数据库的现有备份还原到辅助数据库中”项,在“备份文件”栏中输入备份文件路径,例如“\sqlnode1akchanpin.bak”。在“复制文件”面板中的“复制文件的目标文件夹”栏中输入合适的网络路径。

例如“d:ak”,注意该文件夹位于SQLnode2服务器上。您可以根据需要,设置复制作业的名称以及删除复制文件的周期(默认为72小时)。这样,当触发复制作业后,就可以将SQLnode1上的共享目录中的备份文件复制到该文件夹中。

点击“计划”按钮,在弹出窗口中的“执行间隔”栏中可以更改复制作业的时间间隔,默认为15分钟。在“还原事物日志”面板中选择“备份模式”和“在还原备份时断开数据库中的用户连接”项,可以保证还原动作顺利进行。

点击“计划”按钮,可以修改还原作业的执行间隔。其余设置保持默认,点击确定按钮,保存配置信息,这样,就创建了备份,复制和还原作业。在数据库属性窗口中选择“使用监视服务器实例”项,可以配置监视服务器。在保存日志传送设置窗口中点击按钮“报告”→“查看报告”项,显示配置成功的信息。在SQLnode2上打开Microsoft SQL Server Management Studio窗口,在数据库节点上执行刷新操作,可以看到“chanpin(备用/只读)”的数据库名称,说明日志传送已经配置完毕。

在SQLnode1和SQLnode2上 选 择“SQL Server代理”项,在其右键菜单上点击“启动”项,启动SQLServer代理服务。在 SQLnode1上 点 击“SQl Server代理”→“作业”项,可以看到创建的备份作业项目。在SQLnode2上点击“SQl Server代 理”→“作业”项,可以看到创建的复制和还原作业项目。这样,当达到预设的时间间隔后,SQLnode1上的代理服务就会触发备份作业,在上述共享目录中可以看到生成的日志备份文件。

在SQLnode2上同样可以在预设的时间内执行复制和还原作业,在对应的目录中可以看到复制过来的日志备份文件。在SQLnode2上的“数据库实例名称”节点的右键菜单上点击“报表”→“标准报表”→“事物日志传送状态”项,可以查看相关的报表,来了解日志传送的具体信息。

猜你喜欢

备份文件日志备份
“备份”25年:邓清明圆梦
一名老党员的工作日志
文件智能备份好助手
扶贫日志
继电保护装置意外掉电的保护措施研究
iPhone备份文件加密模式及安全性研究
游学日志
浅析数据的备份策略
一种基于粗集和SVM的Web日志挖掘模型
出版原图数据库迁移与备份恢复