一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

sql server2005实现方式数据库读写分离介绍实用指南

时间:2026-09-03 09:26:01 编辑:袖梨 来源:一聚教程网

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“sql server2005实现方法数据库读写分离介绍”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

从实现思路看,Internet的规模每一百天就会增长一倍,客户希望获得7天×24小时的不间断可用性及较快的系统反应时间,而不愿屡次看到某个站点“Server Too Busy”及频繁的系统故障。

落到代码里,随着业务量的提高,以及访问量和数据流量的更快增长,网络各个核心部分的处理性能和计算强度也相应增大,使得单一设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,必将造成现有资源的浪费,而且下一次业务量的提升,又将导致再一次硬件升级的高额成本投入。于是,负载均衡机制应运而生。

理解这一步时,对于负载均衡,笔者经常接触的当属Oracle的负载均衡机制。下面,我们先轻松了解Oracle的负载均衡的实现方案。

实际处理时,Real Application Clusters是双机同时行服务器(8i及以前版本称作Oracle Parallel Server,OPS),用来在集群环境下实现多机共享数据库,以保证应用的高可用性,同时能够自动实现并行处理及均分负载,还能实现数据库在故障时的排错和无断点恢复。它能够自动进行负载平衡、故障修复和规划停机时间,以兼容高可用性应用程序。若并行服务器中某节点失效,透明的应用程序容错能够把用户自动转接到另一节点上继续运行,应用程序在用户没有察觉的情况下继续执行。这使周期性和非周期性发生故障的系统增大了连续可用性。进程的失效能够完全透明地转移到另一节点上去,借助适当地设置,能够指定所有查询都在客户端进行缓存,这样它们便能够在转移后的节点上重新设置。

下面我们重点介绍Sql Server 2005是如何实现负载均衡的。

Sql Server 2005的新特性

端到端拓扑的事务性复制

落到代码里,SQL Server 2005对端到端(P2P)拓扑结构上事务性的复制加强了兼容。P2P的拓扑结构兼容无限的发布服务器,它们彼此之间能够互相交换事务。

从实现思路看,P2P拓扑是SQL Server的一个巨大进步。现在,多端点服务器能够更改数据,同时且向其他的发布者复制事务。这就是说,订阅服务器不再被限制在主要的报告环境中,能够借助事务性负载全球共享的方式将服务器分布开来。当用户的数量增加的时候,只要轻松地向这个群体中添加服务器即可。

落到代码里,除了将负载分布之外,这个拓扑结构还增加了可用性。如果任何一个点的服务器不可达,则池中其他服务器就会共享这个负载,因为每个服务器都有其他所有服务器上可获得的全部数据集合。

数据库镜像和快照

从实现思路看,SQL Server 2005引入了数据库镜像的概念,来帮助获得高可用性。特别提醒的是,只要它正式发布了,数据库镜像就能够在SQL Server 2005上采用。然而,只有到SQL Server 2005 Service Pack 1才会兼容镜像。

理解这一步时,数据库快照是SQL Server 2005中引入的另一项特性。快照是某一个时间点上的数据库的克隆。只要对镜像数据库进行了快照,就能够让用户查询快照。快照的生成通常只需几秒钟,因为它实际上在这个过程中同时没有拷贝任何数据。因此,要把负载分布到主服务器和备用服务器上,就能够将数据库做镜像,然后阶段性地对备份服务器进行快照。而且还能够采用快照在主服务器上进行报告。

软件实现SQL Server 2005的负载均衡

中间层

结合项目来看,实现数据库的负载均衡技术,首先要有一个能够控制连接数据库的控制端。在这里,它截断了数据库和程序的直接连接,由所有的程序来访问这个中间层,随后再由中间层来访问数据库。这样,我们就能够具体控制访问某个数据库了,然后还能够根据数据库的当前负载来调整每次连接到哪个数据库。好处在两个方面:首先,它成功地将数据库放到了内网之中,更好地保护了数据库的安全性。如果数据库也在公网上,1433端口是很容易被攻击的,所以要保护数据库与之的连接,就用到了中间层。它能够将数据库更加好地保护在内网。其次,连接数据库的所有连接都能够控制,更便于DBA对数据的管理,看哪些连接更耗费数据库资源,以便更好地优化代码。

实际处理时,但是,也有两点需留意:第一,必须要做成Windows的服务程序。Windows发展到今天,如果以一个集成的大系统来讲,做成服务程序更加稳定,也更加安全,这样做即采用户不登录机器,也能够采用。第二,必须要采用多个中间层。从中间层的作用能够看出,它承接了数据库的所有连接,所以,一旦出了问题,就会导致整个系统瘫痪。所以做多个中间层是必要的,这样,如果一个坏了能够登录到另一个。

实现多据库数据同步

从实现思路看,中间层有了,下一步的工作是设置构建数据库集群。对于负载均衡,最重要的就是所有服务器的数据都是同步的。这是一个集群所必需的,因为,如果数据不同步,那么用户从一台服务器读出的数据,就有别于从另一台服务器读出的数据,这是不能允许的。所以必须实现一个数据库的数据同步。这里设置一个用来写入的数据库,设置两个用来读出的数据库,因为据统计,一般来讲,70%的数据库操作为读操作。

实际处理时,首先,在写入数据库上做一个发布服务器,主要基于SQL Server 2005的复制技术,将即将用到的表都选上。注意,在连接上要选用模拟用户,随后共享时选择sa用户,这样就能够将数据共享了。

在这个场景下,其次,在两个读服务器上做订阅服务,需留意同样的事项,这样一个“一写两读”的数据库集群就完成了。

数据库的安全备份

在这个场景下,在一个大的系统里,系统的无故障性是很重要的,但是在刚才的系统下,如果用来写的服务器突然坏了,整个系统就会出现问题,所以,再做个备份是必要的。

实际处理时,数据库镜像是SQL Server 2005大力推出的,它就是要实现数据库的安全转移,所以需再单独拿出一台机器来做备份服务器,将完全镜像写入该服务器,这样,即使写入服务器坏了,它也能够自动转移到备份服务器上来,保证不影响用户。

理解这一步时,这实际上就相当于实现了对服务器的容灾管理,但是有一点需留意,在这种镜像的体系中,必须要有一台服务器作为监视服务器,以便察看哪台服务器坏了,用以在机器出错之后迅速调整。

回传数据库的状态

结合项目来看,数据库服务器均已配完,整体的机器集群架构已经构建,下面的工作就是设置程序。

从实现思路看,首先,在读和写的服务器都放上一个监控程序,它同样必须是Windows的服务,这样更稳定;其次,它能够设定成每隔30秒或者一定时间,将服务器的CPU、内存、网卡流量和当前数据库状态等信息发送回来。在这里需设置一个权值,用以衡量CPU、内存借助率等信息的各自比例。在这个系统中,建议以CPU借助率为准。

中间层实现的负载均衡

结合项目来看,到此为止,所有的准备工作都已完成,包括数据库的建立和设置,中间层的位置,下面所作的就是用软件来实现这个负载均衡。

实际处理时,首先,当一个用户有数据库请求时,先判断是读还是写,如果是写的话,就直接得到写入服务器,这样当写服务器写完数据以后,差不多能够在3秒内得到其他两台机器。

在这个场景下,其次,当遇到一个读的请求时,根据监控得到来的数据判断,根据刚才的权值得到一个当前最空闲的机器。这里需留意,这时最好做一个记录器,用以保持一段时间的数值,能够让管理员自行设定,更好地做到几台数据库的压力平衡。

结合项目来看,最后,如果为主的写入服务器突然坏掉,程序能够自动把备份的服务器切换过来,用刚才的备份服务器当作写服务器,随后做一个报警系统,用以通知管理员。同样,当监控服务器发现其他两台读服务器坏掉时,也会自动通知管理员,来处理服务器的异常情况,这样就能够保证系统的稳定运行,而且易于管理和维护。

落到代码里,总之,用软件和微软SQL Server 2005的一些新技术,能够很轻松地实现负载均衡,这样不但能够不用硬件来实现,便于管理员的操控,更有利于DBA管理数据库,及时发现问题。

您可能感兴趣的文章:
  • SQL Server 2005附加数据库时Read-Only错误的解决方案
  • sql server2012附加数据库问题解决方法
  • Sqlserver 2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法
  • sqlserver附加.mdf权限问题解决
  • 从实现思路看,MSSQL2005在networkservice权限运行附加数据库报(Microsoft SQL Server,错误: 5120)
  • SQL SERVER 2008 无法附加数据库的解决方法
  • mssql server 数据库附加不上解决办法分享
  • SQLServer 附加数据库后出现只读或失败的解决方法
  • mssql server .ldf和.mdf的文件附加数据库的sql语句
  • SQL Server 数据库分离与附加 就这么轻松!

热门栏目