<meta charset="utf-8">
1.为什么要读写分离
- 单个数据库服务器挂了,数据库里面所有的数据都挂了
- 所有的读写请求都是对单个数据库操作,数据库服务器压力巨大
原理
主数据库与多个从数据库实现了主从复制
当应用发起对数据库的写操作时,那么就去操作主数据库
当应用发起对数据库的读操作时,那么通过负载均衡算法去访问从数据库。
系统一般来说时“读多写少”,因此这样在一定程度上减轻了数据库的压力。
2.读写分离的实现步骤
①实现主从数据库复制,主数据库写入操作后,异步同步到从数据库。
- 基于 SQL 语句的复制(statement-based replication, SBR);
- 基于行的复制(row-based replication, RBR);
- 混合模式复制(mixed-based replication, MBR);
②不同数据库操作的请求,访问不同的数据库
- 利用中间件(Mycat、Oneproxy)(数据库变化中间也要调整,配置复杂,且臃肿)
- 基于spring的AOP的方式,通过拦截器过滤并做数据库访问切换;(最优选择)