在⽣产环境中我们经常会遇到这种情况:
前端的oltp业务很繁忙,但是需要对这些运营数据进⾏olap,为了不影响前端正常业务,所以需要将数据库进⾏读写分离。
这⾥我将⼏种可以⽤来进⾏读写分离的⽅案总结⼀下,这⾥并不考虑数据库是否⾼可⽤,只针对读写分离场景,⽅案本⾝并⽆优劣可⾔,只看是否适合业务使⽤场景,所以只把⼏个⽅案的特点罗列出来,遇到具体的问题时按⾃⼰需求和环境综合考虑后再进⾏取舍
读写分离⽅案实时同步副本数据是否直接可读副本数最⼩粒度副本建⽴索引环境缺点
镜像
是
log shipping否发布订阅是
always on是
否(需要开启快照,只读)
1
是(只读)
N
是(读写,但写可能会产
⽣数据不⼀致)N
是(只读)
4(sql 2012)8(sql 2014)
库
否
库
否
表(查询)是库否在⾼安全模式下对主库
域/⾮域(使⽤证书)
性能有⼀定影响
UNC⽅式可访问
副本库在做resotre时会断开已连接⽤户连接/可能影响常规⽇志备份
在主库上有⼤量DML操作时,对分发服务域/⾮域
器会有⼀定影响,且订阅数据库可能有数据同步延迟域
⾮域环境⽆法使⽤
因篇幅问题不能全部显示,请点此查看更多更全内容