一、使用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官网配置的注释写的蛮详细的,都是中文。

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

posted on 2018-04-04 23:17  天梭  阅读(101)  评论(0编辑  收藏  举报