MySQL使用之读写分离

Posted EasyPHP

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL使用之读写分离相关的知识,希望对你有一定的参考价值。

前言

俗话说的好,一根筷子易折断,10根筷子折不断,其实放在数据库上也对,如果你只有一个数据库在用户量大的情况下很轻易就崩了,如果你有10台的话就有可能不会崩。但多台数据库之间怎么搭配起来用呢?会有哪些坑呢?今天就来说一说

相关知识介绍

多台服务器搭配使用时,可以使用一主多从的结构,其实也就是读写分离的基本结构。

读写分离主要是分摊主库的压力,支撑更多的查库请求。常见的做法有两种

1:客户端主动做负载均衡

优点: 客户端直连,少了一层proxy转发,所以查询性能会好一些,并且整体架构简单,易于维护。

缺点: 需要了解后端部署细节,在主备切换,库迁移上客户端都会感知到,并且需要调整数据库连接信息。

这种方案一般都会伴随一个负责管理后端的组件,比如zookeeper,尽量让业务端只专注于业务开发。

2. 客户端和数据库使用proxy(代理层)

优点: 对客户端友好,客户端不需要关注后端细节,连接,维护,等工作,都有proxy完成。

缺点: 对后端维护团队的要求会比较高,而且proxy也需要高可用架构,因此整体的架构会比较复杂。

小结

这两种方案都各有优劣,所以具体使用哪种还需要根据你的实际的业务,团队情况来选择,目前来看是向带proxy的架构发展的。

注意

不论使用哪种架构,都可能会有主从延时的问题,比如客户端刚修改完数据,再去查询此数据时,从库有可能还没同步呢,导致出现过期读的现象。此时可以判断是这种情况就强制走主库去查询,但要防止此类情况同时发生太多导致主库崩溃情况哦,或者你也可以尝试其他的解决方案。

注:本文内容来自学习《mysql实战45讲》中第28讲的学习心得,如有问题,请联系处理,谢谢。


以上是关于MySQL使用之读写分离的主要内容,如果未能解决你的问题,请参考以下文章

MySql之主从复制及读写分离

MySQL数据库之读写分离

MySQL学习笔记之十:使用mysql-proxy实现MySQL读写分离

mysql读写分离之amoeba

mysql读写分离之amoeba

mysql读写分离之amoeba