积极答复者
SQLServer 能做负载均衡吗?

问题
答案
全部回复
-
-
楼主遇到的问题,我们项目中也遇到,并且已解决,楼主可以参考如下:
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>实际项目中,可以根据数据规模及生产环境,做出正确的选择;因为每种方式都有利有弊。
而且做了主从结构后,一般的工作模式是,需要定期维护的;否则,都有可能存在数据不一致的情况。
只是提出个人看法,楼主可以参考。