none
SQLServer 能做负载均衡吗? RRS feed

  • 问题

  • 现在的服务器快顶不住了,不知道能不能做负载均衡,包括SQLServer2000 和2005。

    麻烦高人给解释下,谢谢!

    2010年5月26日 6:27

答案

  • sql server 没有实现 负载均衡,可以使用集群增加可用性。

    oracle rac也不是绝对完美。不过在机器比较少的情况下还是表现还是差强人意。

    RAC的主要针对的是CPU和内存的负载均衡。没有实现磁盘IO的负载均衡.(当然,磁盘IO可以通过Raid或NAS来实现)。

    RAC要全局协调数据高速缓存,保证每个实例上连接的用户看到的缓存数据是一致,这样导致资源竞争的厉害,这个也就是我为什么说rac的机器多了,效率下降很快的原因了。

     

     


    family as water
    • 已标记为答案 softking 2010年5月29日 1:09
    2010年5月27日 1:08
  • 看业务需要,任何事都有一个平衡

    Oracle RAC适合写少读多的情况,或者某时期批量更新的情况

    可考虑将非实时查询转移到Standby or MIRROR上实现

    也或者定时将数据同步到备用机,自己写代码实现Oracle的逻辑Standby亦可


    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com
    • 已标记为答案 softking 2010年5月29日 1:10
    2010年5月27日 2:18

全部回复

  • 现在的服务器快顶不住了,不知道能不能做负载均衡,包括SQLServer2000 和2005。

    麻烦高人给解释下,谢谢!

    It doesn't support load balancing, but possible for read only database.
    2010年5月26日 12:25
  • 看上去不错,不过我想知道微软有没有给出过SQLServer的负载均衡方案,如果实在没有,我才会考虑其他的方法。

    甚至在以后软件选型的时候,考虑用Oracle。

    2010年5月27日 0:41
  • sql server 没有实现 负载均衡,可以使用集群增加可用性。

    oracle rac也不是绝对完美。不过在机器比较少的情况下还是表现还是差强人意。

    RAC的主要针对的是CPU和内存的负载均衡。没有实现磁盘IO的负载均衡.(当然,磁盘IO可以通过Raid或NAS来实现)。

    RAC要全局协调数据高速缓存,保证每个实例上连接的用户看到的缓存数据是一致,这样导致资源竞争的厉害,这个也就是我为什么说rac的机器多了,效率下降很快的原因了。

     

     


    family as water
    • 已标记为答案 softking 2010年5月29日 1:09
    2010年5月27日 1:08
  • 看业务需要,任何事都有一个平衡

    Oracle RAC适合写少读多的情况,或者某时期批量更新的情况

    可考虑将非实时查询转移到Standby or MIRROR上实现

    也或者定时将数据同步到备用机,自己写代码实现Oracle的逻辑Standby亦可


    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com
    • 已标记为答案 softking 2010年5月29日 1:10
    2010年5月27日 2:18
  • SQL Server 可以将一个数据库分成多个数据库,存放在不同的服务器上.这样就能将压力分担到不同服务器了.不过你的应用要修改了.

    2010年5月28日 2:21
  • 没有现成的方案 (2008 R2 Data Center 据说已经有了, 但还没有详细去看)

    DB 层页可以考虑的方案有:

    Log Shipping 或 Database Mirror , DB 级的方案, 可以分担查询压力

    Replication . 表级的解决方案.

    2010年5月28日 4:41
  • 2008 R2 Data Center is not for load balancing.
    2010年5月28日 13:05
  • 楼主遇到的问题,我们项目中也遇到,并且已解决,楼主可以参考如下:

    sqlserver 数据库同步方式(数据库负载均衡,分库,分表等功能都有),一般可以考虑以下方案

    1:sql server 自带的工具

    2:第三方同步工具

    3:编码方式实现(等同于第三方同步工具)

    我们项目中,就使用了一个通用的数据库访问组件,可以实现数据实时同步到从节点;当然,也可以配置成通过sql server 自带的同步方式,或者使用第三方同步工具同步;

    如下,是一个数据库切分方案配置规则表

    <?xml version="1.0" encoding="UTF-8" ?>
    <DbLoadBalanceConfig allowCheckDbStatus="true" checkDbStatusSpanSeconds="5" weightCalType="Lztech.DbLoadBalance.WeightCalculationRoundRobin, Lztech.DbLoadBalance">
      <adminEmails emails="xxx@xxx.com|xxx@xxx.com" status="true" type="Lztech.AdministratorNotice.SendEmail,Lztech.AdministratorNotice" />
      <adminMobilePhones mobilePhones="13800008888|13900008888" status="true" type="Lztech.AdministratorNotice.SendSMS,Lztech.AdministratorNotice" />
      <DbLoadBalanceConfigs>
        <DatabaseConfigInfo uniqueDbAlias="UserMark_Base" desc="测试库">
          <splitPoints>
            <Point masterConnName="User_MasterDb" masterDbName="User_MasterDb" masterCanRead="true" masterCanWrite="true" masterStatus="true" pointBegin="0" pointEnd="0" allowSyncDataByProgram="true">
              <slaves>
                <Slave connName="User_SlaveDb1" dbName="User_SlaveDb1" canRead="true" status="true" weight="1" />
                <Slave connName="User_SlaveDb2" dbName="User_SlaveDb2" canRead="true" status="true" weight="1" />
              </slaves>
            </Point>
          </splitPoints>
          <tableNameRules>
            <TableNameRule prefix="tbUser" allowSplitTable="false" splitType="NULL" format="0" />
            <TableNameRule prefix="tbAuth" allowSplitTable="false" splitType="NULL" format="0" />
          </tableNameRules>
        </DatabaseConfigInfo>
      </DbLoadBalanceConfigs>
    </DbLoadBalanceConfig>

    实际项目中,可以根据数据规模及生产环境,做出正确的选择;因为每种方式都有利有弊。

    而且做了主从结构后,一般的工作模式是,需要定期维护的;否则,都有可能存在数据不一致的情况。

    只是提出个人看法,楼主可以参考。

    2010年12月3日 2:53