【mysql数据库】读写分离的常见方案

【学习背景】
近期陆续接触到数据分析和数据可视化的项目,考虑到数据库的性能,涉及了读写分离,特地了解一下mysql读写分离的常见方案。做个学习笔记。

主要参考文献:
https://www.cnblogs.com/fyc119/p/7529902.html
https://yq.aliyun.com/articles/241744

【读写分离的目的】
通过数据库中间件,可以对数据库进行水平扩展,由原来单台数据库扩展到多台数据库,数据库中间件通过路由规则将数据的访问请求路由到其中一台数据库上,从而大大降低了数据访问的瓶颈和单台数据库的压力。通过数据库中间件还可以将DBA和研发进行解耦,提升DBA运维效率。

【关键问题】
怎么识别对数据库的访问是写还是读?如何分发到不同的数据库?

 

【常见方案】
方案1:应用程序根据业务逻辑来判断,增删改等写操作命令发给主库,查询命令发给备库。
特点:<1>数据库和应用程序强耦合,数据库如果有变化还好影响主库。<2>应用程序复杂化。

方案2:利用中间件来做代理,负责对数据库的请求识别出读还是写,并分发到不同的数据库中。
特点:<1> 数据库和应用程序弱耦合。<2> 代理存在性能瓶颈和可靠性风险增加,相对可控。
常见的中间件:<1> MySQL-Proxy  <2> Amoeba for MySQL(原文推荐这个,没机会对比过)  <3> mycat  <4> DBProxy  <5> 公有云的RDS数据库+数据库中间件,如华为云的RDS(关系型数据库)+DDM(分布式数据库中间件)

方案3:mysql集群模式,罕见,复杂度高,稳定性差。


【中间件代理方案】的特点:
1、proxy将数据库屏蔽在后端,而proxy根据路由将语句路由到对应DB执行。
2、查询性能提升:数据有多份副本,查询性能得到保证。
3、服务可用性:心跳检测保证其中某节点的某台机器宕了也不影响整体的服务,每个db具有HA。
4、proxy本身可能会成为性能瓶颈和单点故障,proxy也可以做成集群的负载均衡器。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值