1、使用mysql-proxy 快速实现mysql 集群 读写分离html
一、有两种方法:mysql
a)程序代码内部实现,对select操做分发到从库,其余到主库,再生产环境中应用比较普遍,比较知名的有DISCUZX2,优势性能好,成本低,缺点是须要开发人员维护。git
b)代理实现,用中间件mysql-proxy来实现读写分离。mysql-proxy是Mysql官方开源产品。缺点是有单点故障:为了不mysql-proxy单点隐患有两种方法,一种方法是mysql-proxy配合keepalived作双机,另外一种方法是将mysql-proxy和应用服务安装到同一台服务器上;为了不mysql-master单点故障可使用DRBD+heartbear作双机;避免mysql-slave单点故障增长多台mysql-slave便可,由于mysql-proxy会自动屏蔽后端发生故障的mysql-slave。github
二、环境搭建;sql
一、须要最少3台服务器,主从各一台,mysql-proxy一台,数据库
二、在mysql-proxy服务器上安装所需的包并进行配置。后端
三、需注意要在主从机器/etc/my.cnf中开启log=query.log功能。服务器
四、具体操做可参考:https://my.oschina.net/barter/blog/93354负载均衡
2、mycat实现MySQL读写分离性能
一、Mycat是数据库中间件,对数据进行交互和处理,可对数据进行分片处理,全部分片数据库构成一个完整的数据存储库,借助mycat的分表能力,能有效提升数据处理能力和效率。
二、主要应用场景:
a)单纯的读写分离,此时配置最为简单,支持读写分离,主从切换;
b)分表分库,对表进行分库;
c)多租户应用,每一个应用一个库,但应用程序只链接Mycat,从而不改造程序自己,实现多租户化;
d)表系统,借助于Mycat的分表能力,处理大规模报表的统计;
三、环境搭建与配置:
a)安装mycat,须要安装JDK
b)配置schema.xml,该表主要用来配置数据库节点,逻辑表等等东西的
c)须要设置防火墙,设置端口。
四、具体操做可参考:http://www.th7.cn/db/mysql/201708/250280.shtml https://blog.csdn.net/u011325787/article/details/51423424
3、atlas相关
一、atlas是Qihoo 360的相关团队在Mysql官方的 MySQL-Proxy 0.8.2版本的基础上修改的一个中间件。优化了锁机制,提升了性能。
二、主要功能有:
a)实现主从的读写分离
b)从库负载均衡
c)能够设置对IP过滤
d)自动识别SQL语句黑白名单
e)自动分表
三、安装与配置:可参考一下连接,Atlas官网配置的注释写的蛮详细的,都是中文。
Atlas官方连接: https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md
Atlas下载连接:https://github.com/Qihoo360/Atlas/releases
https://www.cnblogs.com/alex-note/p/6835965.html
https://github.com/Qihoo360/Atlas/wiki/Atlas%E7%9A%84%E5%AE%89%E8%A3%85
https://www.oschina.net/p/atlas