• 大型网站数据库架构发展升级11个阶段
    时间:2012-04-21   作者:飞洋过海   出处:cnblogs.com/fygh

    SQLServer2008在数据的高安全、高性能、高可用方面的技术已经比较成熟,这些技术和方案都是随着很多公司的业务和数据访问压力的增加而不断的升级和变迁的,同时经历了方方面面的考验,证明了它们都是成熟可靠的,下面就这方面的技术方案和变迁过程来做一些分析。

    阶段一 裸奔时代:

    优点:裸奔最大的好处就是简单,成本低。
    缺点:一旦服务器出现问题,恢复起来比较麻烦;如果访问压力变大,服务器可能不堪重负。
     
    阶段二 单库+Mirror+BackUp方案:
     

    说明:Mirror有两种方式,同步和异步;同步方式能保证主库和Mirror端数据的一致性,而且不需要使用企业版,但是对主库的性能影响也比较大;异步方式需要企业版才支持,绝大部分时刻能保证数据的一致性,但是也有丢失小部分的数据可能,不过它主库的影响比较小。

    优点:此方案对主库的数据提供了可靠的保护,一旦主库出现问题,从库能在比较短的时间内恢复,尤其是数据库很大时(从备份恢复需要的时间会很长),能尽快的恢复业务使用,而且Mirror端能生成快照,能给实时性要求不高的业务使用。
    缺点:Mirror会影响主库的部分性能(异步方式影响比较小),主库出现问题后,前端需要更改访问的IP地址(或者将从服务器的IP地址改成主服务器的IP地址),还需要账号、权限和作业等信息迁移过去。
     
    阶段三 单库+Replication+ BackUp方案:

     
    优点:Replication端可以提供给前段访问,可以将读操作放到从库,分担主库的部分压力,还能提供数据库的备份功能,不过这种备份很可能数据会有丢失。
    缺点:不能提供安全的数据保护功能,对主库有一些性能影响。
     
    阶段四 单库+Replication+Mirror+BackUp方案:


    优点:这种方案是前面两种方案的结合,既能够解决数据保护的问题,也能够提供读写分离的功能。
    缺点:主库上既有Mirror又有Replication,这种方式对主库影响会比较大,而且实际证明,Mirror和Replication在同一台机器上部署,在一个出现问题时,会对另一个造成影响。

    阶段五 Cluster(双A)+BackUp方案:

     

    说明:图中矩形部分代表存储,两台服务器做了双A的群集。

    优点:Cluster能确保其中的一个服务器出现问题时所有的数据和服务能切换到另外一台机器,切换的时间很短,能尽快的恢复业务访问。
    缺点:双A群集一般要求配置比较好,价格比较高;因数据都存放在存储上,所以群集不能保护数据,一旦数据或者存储出现问题,需要从备份中恢复数据;SQLServer的群集不能提供负载均衡的功能。
     
    阶段六个 Cluster(双A)+Mirror+BackUp方案:


    说明:双A群集再加两个服务器上库的Mirror保护。
     
    优点:这个方案能对数据提供可靠的保护,无论是服务器故障还是存储故障,都能保证数据的安全,而且数据恢复的时间比较短。
    缺点:Mirror会消耗主服务器的部分性能,多了两台Mirror机器,成本会增加,如果存储出现问题,快速恢复的方案是启用Mirror机器,后面可能需要重做群集。
     
    阶段七 Cluster(双A)+Mirror+BackUp+Replication+单分发方案:
     

    说明:双A 群集,Mirror保护,单分发机器和读写分离方案。

    优点:群集和Mirror能充分保护数据的安全,读写分离能提高系统整体的性能。
    缺点:成本较高,单分发机存在单点故障,如果分发机器出现问题,将需要重建,此时读和写都将集中到主库,压力会比较大。
     
    阶段八 Cluster(双A)+Mirror+BackUp+Replication+双分发方案:
     

    优点:与单分发机相比,没有单点故障,即使某台分发机出现问题,也能保证读写分离机制继续运行。
    缺点:成本增加,维护方面更复杂。
     
    阶段九 Cluster(双A)+双存储+BackUp+Replication+双分发方案:
     

    优点:双存储方案使得数据能得到有效的保护,而且避开了Mirror和Replication同时在主库运行对主服务器造成的影响,节省主服务器资源,而且恢复比较方便。
    缺点:成本增加。
     
    阶段十 Cluster(双A)+双存储+BackUp+Replication+双分发+SSB异步方案:
     

    此方式的主要优势是将数据流异步处理,缓解瞬时高流量主库的压力,因为此方案比较复杂,暂时不做说明,可以参考数据库架构。
     
    阶段十一 根据业务情况拆分整合
     
       拆分业务和数据、采用分布式数据库、使用能负载均衡集群功能的数据库等。
     
       此文档大致描述了随公司的发展、服务器压力的增加,数据库架构方面的变迁阶段,当然我们应该根据公司的具体情况,选择性的采用其中的技术,也可能是直接跳过某些阶段,而上更高效的方案(如果成本能够接受),因此技术和方案的选择应该根据实际情况,灵活应对。

    网友留言/评论

    我要留言/评论

    相关文章

    另一个角度看千万级数据的分页解决方案:想说这个问题,来源来自于CSDN论坛的一个帖子:《sqlserver2005,1690万的数据量怎么快速分页查询》。在之前也有很多人问类似这样的问题,回复这样的问题,我们一般会从索引,水平分区,垂直分区和硬件的升级等方面考虑。
    NoSQL 为什么会崛起:NoSQL产品越来越火,NoSQL产品通常以其高性能,强扩展性和高容错性为大家所称道,我们在问为什么NoSQL会流行起来的时候,或许应该问一下为什么这些功能会变得这么重要,下面本文列举一下6个原因。
    SQL语句查询优化技巧:对于程序开发人员,我们要做到不但会写SQL,还要做到写出性能优良的SQL。不同的SQL对于程序的执行会有很大的区别,特别是对于大并发量的程序。下面本文将给大家提供一些SQL书写以及优化技巧,向往会对大家受益匪浅。
    PHP开发者常犯的MySQL错误总结:数据库是WEB大多数应用开发的基础。如果你是用PHP,那么大多数据库用的是MYSQL–也是LAMP架构的重要部分。
    MongoDB的学习记录:MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。这么好的东东一定要学习一下了,虽然木有在实际项目中运用,还是记录一下自己的总结。
    MySQL中varchar类型最大长度研究:工作当中经常被问到一个问题:MySQL中varchar最大长度是多少?这不是一个固定的数字。本文简要说明一下Mysql限制规则。
    Php+Mysql注入专题教学:攻击是现今最流行的攻击方式,依靠它强大的灵活性吸引了广大黑迷。 OK,这一期我将给大家伙仔仔细细的吹一吹php+mysql注入,一定让你满载而归哦(谁扔砖头哩!)。 本文主要是为小菜们服务的,如果你已经是一只老鸟呢,可能某些东西会感觉比较乏味,但只要你仔细的看,你会发现很多有趣的东西哦。
    PHP+MYSQL注入实例与防范措施总结:做网站安全十分重要,最近总结了以下SQL注入最常见的例子和相关的防范措施,在此与大家共享,希望对大家有所帮助。 另外作为程序员应该牢记的一句话:一切用户输入的都是不安全的。