数据库镜像对性能影响多大

数据库镜像对性能影响多大,第1张

数据库镜像是一种针对数据库高可用性的基于软件的解决方案。

其维护着一个数据库的两个相同的副本,这两个副本分别放置在不同的SQL Server数据库实例中。

建议使用不同位置的两台服务器来承载。在同一时刻,其中一台上的数据库用于客户端访问,充当“主体服务器”角色;而另一台则根据镜像会话的配置和状态,充当热备份服务器,即“镜像服务器角色”,这两种角色不是绝对的。

优点

l 增强了数据保护功能

l 提高了数据库的可用性

l 提高了生产数据库在升级期间的可用性

工作方式

在“数据库镜像会话”中,主体服务器和镜像服务器是相互通信和协作,并双方互补。

主体服务器角色上的数据库副本为生产数据库。数据库镜像会尽快将主体数据库中执行的每一项 *** 作(如:插入、更新和删除等)在镜像数据库中进行重新执行。这一过程是通过将活动事务日志记录的流发送到镜像服务器来完成,这可以尽快将日志记录按顺序应用到镜像数据库中。

而且数据库镜像是在物理日志记录级别执行这一“重做” *** 作的。SQL Server 2008 R2(以下简称:SQL08R2)中,为了减少网络的负载,主体服务器会将事务日志记录压缩后进行发送。

为避免磁盘介质出现故障影响数据库可用性,许多数据库管理系统提供了数据库镜像功能,用于数据库恢复,是一种容灾技术。即根据DBA要求,自动把整个数据库或其中关键数据复制到另一个磁盘上,数据库更新时,DBMS自动将数据复制过去

SQL Server 2005相对于SQL Server 2000来说,无论是性能还是功能都有一个相当大的提高,甚至可以用“革命”来形容这一次升级。SQL Server 2005使 SQL Server 跻身于企业级数据库行列。在数据高可用性方面,SQL Server 2005为用户提供了数据镜像、复制、故障转移群集、日志传送功能。本文向读者简单介结SQL Server 2005镜像功能。

一、镜像简介

数据库镜像是一个高可用性软件解决方案,为客户端提供小于10秒故障转移。每个数据库镜像配置均包含一个主体服务器(包含主体数据库)、一个镜像服务器(包含镜像数据库)和一个见证服务器,其中见证服务器是可选的。主体服务器和镜像服务器要求是独立的服务器实例。主体服务器和镜像服务器的角色是相对的,可以自动或者手动地将主体服务器设置为镜像服务器,镜像服务器设置为主体服务器。与主体服务器和镜像服务器不同的是,见证服务器并不能用于数据库。见证服务器监视主体服务器和镜像服务器,确保在给定的时间内这两个故障转移服务器中有且只有一个作为主体服务器,从而支持自动故障转移。如果存在见证服务器,同步会话将以“高可用性模式”运行,如果主体服务器出现故障,可以实现故障自动转移。如果见证服务器不存在,同步会话将以“高级别保护模式”运行,出现故障需要手动故障转移,并且有可能丢失数据。

图1:两台服务器镜像

图2:两台服务器镜像,一台见证服务器

数据库准备结束,端点创建完成,用户便可以启用数据库镜像。镜像启动后,每个伙伴都将开始维护所在数据库中有关其数据库,以及另一个伙伴和见证服务器的状态信息。这些状态信息允许服务器实例维护称为“数据库镜像会话”的当前关系。在数据库镜像会话过程中,服务器实例将通过彼此定期交换 PING 消息来互相监视。

对 *** 作系统进行备份和还原也许是最常用的 实际业务环境升级后 因多方面原因存在严重问题 这时很可能需要还原到升级前的状态 因此数据库建立备份并能进行还原就很有意义 本文是一个使用C#(Visual Studio )结合Oracle客户端完成还原点的建立与恢复的完整例子

明确还原目标

在建立还原点时 首先要明确还原对象 我们所提及的还原并不是简单地对数据库某个时间点整个数据库的备份与还原 因为在升级后发生的实际业务数据是不能进行还原的

会引起重要问题的主要是程序 在数据库中体现在包 函数和存储过程以及与流程相关的参数 方案等核心字典数据与界面层的一致性 而具体业务中产生的数据如收费项目 收费明细等 是不能进行还原的 明确还原目标后 问题的解决就有方向性了

要建立还原点 首先要了解数据库中关键对象的存放位置 对于包 函数等可以在Oracle的数据库视图user_source中找到

备份 建立还原对象列表

在建立C#的工程之后 今天我们利用配置文件nfig xml 设定了相应的 导出对象 Oracle连接 等内容 如图

这样参数就可以在CONFIG中进行调整了 在进行备份时 我们首先要取得相关的程序列表 下面的语句可以找到我们需要的导出对象

selectdistinctus name us typefromuser_sourceuswhereus typein( PROCEDURE FUNCTION PACKAGE PACKAGEBODY );

可以使用 configurationAppSettings来取得配置文件中的设置 如导出对象 数据库连接 回滚目录 如

ls_configs=(string)(configurationAppSettings GetValue( 导出对象 typeof(string))); 首先针对 导出对象 所定义的串进行拆分 ls_typeinfo存放需要导出的类型 并建立Oracle的数据库连接 再根据需要取得数据查询结果

ls_querysql= SelectdistinctUs Name

us typeFromUser_SourceUswhereus typein( +ls_typeinfo+ )orderbyus Name us Type ;

OracleCommand CommandText=ls_querysql;

OracleCommand CommandType=CommandType Text;

//如何解析mandText的值

OracleDataReadermyReader=OracleCommand ExecuteReader(CommandBehavior CloseConnection);

while(myReader Read())

//使用OracleDateReader前进到下一条记录 通过循环 获得信息列表存放到对象列表listPrcInfo中 它包括两个项目 分别就是 对象名strName 对象类别strType

备份 有进度地产生各个对象体

生成了对象列表后 再根据每个对象名和对象类别来读取内容 相对来说就比较简单 只要使用以下方法

ls_querysql = Select us line us text From User_Source Us where us name = + listPrcInfo[i] strName + and us type= +listPrcInfo[i] strType+ order by us line ;  OracleCommand CommandText = ls_querysql;  OracleCommand CommandType = CommandType Text;//如何解析mandText的值 来读取对象的程序内容 并按照我们在CONFIG中所对应的各种文件扩展名来保存文件:

以上就是关于数据库镜像对性能影响多大全部的内容,包括:数据库镜像对性能影响多大、数据库镜像是什么、sql server 数据库镜像功能是做什么用的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9394322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存