关闭

Sqlserver实现数据库读写分离介绍

发表于:2015-2-05 10:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:hy31337    来源:51Testing软件测试网采编

  实现多据库数据同步
  中间层有了,下一步的工作是设置构建数据库集群。对于负载均衡,最重要的就是所有服务器的数据都是同步的。这是一个集群所必需的,因为,如果数据不同步,那 么用户从一台服务器读出的数据,就有别于从另一台服务器读出的数据,这是不能允许的。所以必须实现一个数据库的数据同步。这里设置一个用于写入的数据库, 设置两个用于读出的数据库,因为据统计,一般来讲,70%的数据库操作为读操作。
  首先,在写入数据库上做一个发布服务器,主要基于SQL Server 2005的复制技术,将即将用到的表都选上。注意,在连接上要选用模拟用户,然后共享时选择sa用户,这样就可以将数据共享了。
  其次,在两个读服务器上做订阅服务,要注意同样的事项,这样一个“一写两读”的数据库集群就完成了。
  数据库的安全备份
  在一个大的系统中,系统的无故障性是很重要的,但是在刚才的系统下,如果用于写的服务器突然坏了,整个系统就会出现问题,所以,再做个备份是必要的。
  数据库镜像是SQL Server 2005大力推出的,它就是要实现数据库的安全转移,所以需要再单独拿出一台机器来做备份服务器,将完全镜像写入该服务器,这样,即使写入服务器坏了,它也可以自动转移到备份服务器上来,保证不影响用户。
  这实际上就相当于实现了对服务器的容灾管理,但是有一点需要注意,在这种镜像的体系中,必须要有一台服务器作为监视服务器,以便察看哪台服务器坏了,用以在机器出错之后迅速调整。
  回传数据库的状态
  数据库服务器均已配完,整体的机器集群架构已经构建,接下来的工作就是配置程序。
  首 先,在读和写的服务器都放上一个监控程序,它同样必须是Windows的服务,这样更稳定;其次,它可以设定成每隔30秒或者一定时间,将服务器的 CPU、内存、网卡流量和当前数据库状态等信息发送回来。在这里需要设置一个权值,用以衡量CPU、内存利用率等信息的各自比例。在这个系统中,建议以 CPU利用率为准。
  中间层实现的负载均衡
  到此为止,所有的准备工作都已完成,包括数据库的建立和配置,中间层的位置,下面所作的就是用软件来实现这个负载均衡。
  首先,当一个用户有数据库请求时,先判断是读还是写,如果是写的话,就直接返回写入服务器,这样当写服务器写完数据以后,差不多可以在3秒内返回其他两台机器。
  其次,当遇到一个读的请求时,根据监控返回来的数据判断,根据刚才的权值返回一个当前最空闲的机器。需要注意的是,这时最好做一个记录器,用以保持一段时间的数值,可以让管理员自行设定,更好地做到几台数据库的压力平衡。
  最后,如果为主的写入服务器突然坏掉,程序可以自动把备份的服务器切换过来,用刚才的备份服务器当作写服务器,然后做一个报警系统,用以通知管理员。同样, 当监控服务器发现其他两台读服务器坏掉时,也会自动通知管理员,来处理服务器的异常情况,这样就可以保证系统的稳定运行,而且易于管理和维护。
  总之,用软件和微软SQL Server 2005的一些新技术,可以很轻松地实现负载均衡,这样不但可以不用硬件来实现,方便管理员的操控,更有利于DBA管理数据库,及时发现问题。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号