MySQL读写分离的概述

Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。

因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy/Amoeba)来提升数据库的并发负载能力 这样的方案来进行部署与实施的。

基本的原理是让数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

为什么要读写分离:

面对越来越大的访问压力,单台的服务器的性能成为瓶颈,需要分担负载

1、 主从只负责各自的写和读,极大程度的缓解X锁和S锁争用

2、 从库可配置myisam引擎,提升查询性能以及节约系统开销

3、 增加冗余,提高可用性

实现读写分离的方式:

一般有两种方式实现

应用程序层实现,网站的程序实现

应用程序层实现指的是在应用程序内部及连接器中实现读写分离

 

优点:

A:应用程序内部实现读写分离,安装既可以使用

B:减少一定部署难度

C:访问压力在一定级别以下,性能很好

缺点:

A:架构一旦调整,代码要跟着变

B:难以实现高级应用,如自动分库,分表

C:无法适用大型应用场景

中间件层实现

中间件层实现是指在外部中间件程序实现读写分离

常见的中间件程序:

Mysql-proxy    amoeba    Atlas (360)  Cobar(Alibaba)  TDDL(Taobao)

优点:

A:架构设计更灵活

B:可以在程序上实现一些高级控制,如:透明化水平拆分,failover,监控

C:可以依靠些技术手段提高mysql性能,

D:对业务代码的影响小,同时也安全

缺点:

需要一定的开发运维团队的支持


网友评论

1条评论

发表

网友评论

1条评论

发表

最新评论

乌蒙小码农 5

评论已被删除

04月13日 17:30

推荐文章

彩龙

Copyright © 2008-2021 彩龙社区 版权所有 All Rights Reserved.

免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。

经营许可证编号:滇B2-20090009-7

下载我家昆明APP 下载彩龙社区APP