EF的项目也会遇到读写分离或者db高可用的问题,以此做个demo
1. 环境准备
a. Failover
使用mirror来做,缺点是只能1对1,好处是能自动切换,还挺快的也。
因为mirror的库持续处于restoring状态,不能做只读的负载了。
Primary Db:
Mirror Db:
b. 读写分离
有replication(发布订阅)、Alwayson、db复制能多种方式,采用一个最省钱的方式:log-shipping 日志传送。可以做到1拖n的只读副本,不过有最低10s的延迟。
Standby Db:
以上不赘述具体的步骤,百度可达。
需要注意的是:
i. 做mirror的话,一定要有一个带事务的bakup,并且让其处于restoring状态。
ii. mirror或者standby和primary的,db服务和agent服务都基于域用户来运行。
==未完待续==
2. EF测试failover
<connectionStrings>
<add name="DefaultConnection" connectionString="server=svn.edaysoft.cn;Failover Partner=win-oud0ufulr1k.edaysoft.cn;database=synctest;uid=uid;pwd=pwd;MultipleActiveResultSets=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
3. EF测试读写分离
NDF.Infrastructure