分类: 服务器与存储
2008-06-11 17:58:54
2。实时备份容灾原理
2.1 SQLServer事务日志架构
每个 SQLServer数据库都有事务日志,用以记录所有事务和每个事务对数据库所做的修改。SQLServer使用预写日志技术。预写日志确保在相关的日志记录之后才将数据修改写入磁盘。日志文件在概念上是一串连续的日志记录。每条日志记录由一个日志序号 (LSN) 标识,且在一个虚拟日志文件中后续日志记录的LSN总是高于前一记录的 LSN。日志记录按创建时的串行序列存储。每条日志记录由所属的事务的 ID 标记。对于每个事务,使用可提高事务回滚速度的向后指针,在链内单向链接与事务相关联的所有日志记录。
事务日志内记录许多类型的操作,包括:每个事务的起点和终点;数据修改(插入、更新或删除),包括DDL语言对系统表的更改;每次分配或释放扩展盘区;表或索引的创建或除去;数据库进程启动时的操作标记。
日志记录包含的数据有已修改数据的前像(undo)和后像(redo)两种类型。前像是操作执行前的数据复本;后像是操作执行后的数据复本。
基于上述事务日志架构,SQLServer数据库镜像通过实时捕获预写日志文件块,并解析还原成数据库记录,再执行到目标数据库,即可实现SQLServer数据库实时备份容灾。
2.2 镜像引擎架构
SQLServer数据库镜像引擎包括代理、镜像服务器、基准装载器三大部件。代理包含事务日志实时捕获器、事务日志分析器、自适应数据字典、初步过滤器、传输控制器和任务队列等;镜像服务器包含接收队列、事务队列和Snapshot存储、SQL应用机构等。如下图
2.3 复制流程
事务日志实时捕获器实时监控源SQLServer事务日志文件和捕获其变化数据;事务日志分析器通过数据字典将日志数据解析还原成数据库记录,并过滤不需要镜像的表或其他数据库对象;传输控制器从任务队列中取出记录数据传输至镜像服务器。镜像服务器接收队列将记录数据保存至事务队列和Snapshot文件中;SQL应用机构扫描事务队列,将提交事务应用到目标SQLServer。
2.4 实时事务捕捉及解析
镜像系统通过内嵌的Windows文件系统驱动程序实时捕捉SQLServer数据库的日志I/O及数据块。其具备以下技术特点:
第一,镜像系统在SQLServer数据库内安装少量对象用来存储需复制的信息,但这些对象从创建时就被设置成禁用状态,不参与复制工作,也不会影响数据库结构。
第二,文件系统驱动程序的捕捉完全独立于SQLServer数据库进程,因此镜像系统对SQLServer数据库的性能影响极小。
第三,文件系统驱动程序仅捕获需要复制的数据库的日志文件,且仅捕获其写操作,忽略其他文件的任何操作。因此,对操作系统性能影响也极小。
第四,只有发生变化的日志文件块才会被捕捉,而不是整个日志文件,因此提高了解析性能,降低了网络传输流量。
事务日志分析器根据数据字典依次解析日志文件块,获取该记录的操作类型、涉及对象等,忽略不在数据字典中的对象并放弃该日志记录的后续解析。
当DDL语言更改了数据库结构时,事务日志分析器将通知数据字典使其动态调整对象结构。因此数据字典具备自适应能力,无需重新启动即可解析后续日志文件块。
2.5 传输控制
镜像系统的传输协议基于TCP/IP实现。传输控制器记录当前传输成功的事务点。当连接中断等因素导致传输失败,传输控制则停止传输工作,尝试连接直至成功。
镜像系统可创建多个通道实现并行传输,提高传输效率。
2.6 应用数据
镜像系统将客户端传送到信息转化为SQL语句,并按照在源数据库中的Commit顺序发送给目标SQLServer数据库执行。
2.7 基准装载
基准装载器使用SQLServer数据库提供的在线备份功能,将源数据库备份出来,还原至目标数据库,实现源和目标数据库基准一致。
3。技术特性
1)目标数据库状态
目标SQLServer数据库处于运行状态,能读能写,运行的目标系统保证了系统的一致性。
2)两阶段检查(2PC)
在传输阶段和数据库记录提交阶段均设置成功检查点。两阶段检查可防止如网络连接断开、目标数据库没有运行、进程崩溃等意外因素发生造成的事务丢失。
3)特性列表
4)其他功能
定时镜像计划,系统还提供便捷的定时镜像计划。镜像计划作业可配置信息字段:开始时间、结束时间和日期以及在这段时间之内的镜像频率、需要镜像数据库。定时镜像计划类似于基准装载,均通过SQLServer数据库提供在线备份功能实现。
数据库备份存储,镜像系统可将基准装载或定时镜像计划使用的数据库备份保存在磁盘上;系统采用时间戳命名备份文件。用户可调节保存的备份版本数量或时间;用户可手工在SQLServer企业管理将数据库备份还原至数据库中。
基于Web的任务监控和配置管理,镜像系统提供基于WEB的监控、管理平台,用户可以通过浏览器即可管理全网的镜像代理、镜像服务器、传输备份策略以及任务监控。
镜像任务监控是镜像系统的一个组成部分,用来实时的监控信息包括:
从主(源)服务器到备(目标)服务器数据复制的结果;
镜像客户端和镜像服务器的工作状态。