一、使用mysql-proxy 快速实现mysql 集群 读写分离
1、有两种方法:
a)程序代码内部实现,对select操作分发到从库,其他到主库,再生产环境中应用比较广泛,比较知名的有DISCUZX2,优点性能好,成本低,缺点是需要开发人员维护。
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。
2、环境搭建;
1、需要最少3台服务器,主从各一台,mysql-proxy一台,
2、在mysql-proxy服务器上安装所需的包并进行配置。
3、需注意要在主从机器/etc/my.cnf中开启log=query.log功能。
4、具体操作可参考:https://my.oschina.net/barter/blog/93354
二、mycat实现MySQL读写分离
1、Mycat是数据库中间件,对数据进行交互和处理,可对数据进行分片处理,所有分片数据库构成一个完整的数据存储库,借助mycat的分表能力,能有效提高数据处理能力和效率。
2、主要应用场景:
a)单纯的读写分离,此时配置最为简单,支持读写分离,主从切换;
b)分表分库,对表进行分库;
c)多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身,实现多租户化;
d)表系统,借助于Mycat的分表能力,处理大规模报表的统计;
3、环境搭建与配置:
a)安装mycat,需要安装JDK
b)配置schema.xml,该表主要用来配置数据库节点,逻辑表等等东西的
c)需要设置防火墙,设置端口。
4、具体操作可参考:http://www.th7.cn/db/mysql/201708/250280.shtml https://blog.csdn.net/u011325787/article/details/51423424
三、atlas相关
1、atlas是Qihoo 360的相关团队在Mysql官方的 MySQL-Proxy 0.8.2版本的基础上修改的一个中间件。优化了锁机制,提高了性能。
2、主要功能有:
a)实现主从的读写分离
b)从库负载均衡
c)可以设置对IP过滤
d)自动识别SQL语句黑白名单
e)自动分表
3、安装与配置:可参考一下链接,Atlas官网配置的注释写的蛮详细的,都是中文。
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