基于amoeba实现mysql数据库的读写分离/负载均衡
2014-11-12 17:40
323 查看
一、Amoeba的简述:[来自百度百科]
Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。
Amoeba相当于一个SQL请求的路由器,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的 Replication等机制来实现副本同步等功能。amoeba对底层数据库连接管理和路由实现也采用了可插拨的机制,第三方可以开发更高级的策略类来替代作者的实现。这个程序总体上比较符合KISS原则的思想。目前 Amoeba 已在很多 企业的生产线上面使用。
二、Amoeba解决的问题及目前存在的劣势:
1.主要解决的问题:
(1). 数据切分后复杂数据源整合
(2). 提供数据切分规则并降低数据切分规则给数据库带来的影响
(3). 降低数据库与客户端连接
(4). 读写分离路由
2.劣势:
(1).目前还不支持事务
(2).暂时不支持存储过程(近期会支持)
(3).不适合从amoeba导数据的场景或者对大数据量查询的query并不合适(比如一次请求返回10w以上甚至更多数据的场合)
(4).暂时不支持分库分表,amoeba目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致
三、基于 Amoeba 实现mysql数据库读写分离的配置
1.测试环境,amoeba的要求,软件提供,简要原理图:
(1).测试环境:
红帽6.3系统
amoeba服务器地址:192.168.1.104
mysql数据库:192.168.1.102:3306(master -- rw)/192.168.1.100:3306(slave -- r)
注:为了方便测试读写分离,我这里是不配置主从。
(2).amoeba的要求:
Amoeba 是基于 java 开发,所以如果要运行 Amoeba,必须先安装 jdk 以便可以运行
(3).软件下载:[大家可以到http://www.oschina.net/p/amoeba (开源中国)下载]
当前测试环境使用的amoeba软件下载地址:http://www.kuaipan.cn/file/id_119710994921422890.htm
amoeba参考手册:http://docs.hexnova.com/amoeba/
amoeba项目代码:http://sourceforge.net/projects/amoeba/files/
(4).简要原理图:
2.我们这里将amoeba相关软件放在/tmp目录下,这里我们先配置JDK
3.配置amoeba中的dbServer.xml(后端mysql 服务器连接配置)
4. 配置 Amoeba 监听端口[amoeba.xml]
5. 配置amoeba及JAVA的环境变量
6.启动amoeba测试
7.在两台数据库做刚才设置中的相应操作
(1).在主DB server上操作
(2).在从DB server上操作
8.在任何一台机器上登陆测试,这里的ip地址指向amoeba所在服务器的ip地址
9.遇到的问题
(1).报错1:
(2).报错2:
10.需要注意的问题,思路延伸
(1).取消日志生成,不然磁盘容易爆满
(2).性能优化
Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。
Amoeba相当于一个SQL请求的路由器,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的 Replication等机制来实现副本同步等功能。amoeba对底层数据库连接管理和路由实现也采用了可插拨的机制,第三方可以开发更高级的策略类来替代作者的实现。这个程序总体上比较符合KISS原则的思想。目前 Amoeba 已在很多 企业的生产线上面使用。
二、Amoeba解决的问题及目前存在的劣势:
1.主要解决的问题:
(1). 数据切分后复杂数据源整合
(2). 提供数据切分规则并降低数据切分规则给数据库带来的影响
(3). 降低数据库与客户端连接
(4). 读写分离路由
2.劣势:
(1).目前还不支持事务
(2).暂时不支持存储过程(近期会支持)
(3).不适合从amoeba导数据的场景或者对大数据量查询的query并不合适(比如一次请求返回10w以上甚至更多数据的场合)
(4).暂时不支持分库分表,amoeba目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致
三、基于 Amoeba 实现mysql数据库读写分离的配置
1.测试环境,amoeba的要求,软件提供,简要原理图:
(1).测试环境:
红帽6.3系统
amoeba服务器地址:192.168.1.104
mysql数据库:192.168.1.102:3306(master -- rw)/192.168.1.100:3306(slave -- r)
注:为了方便测试读写分离,我这里是不配置主从。
(2).amoeba的要求:
Amoeba 是基于 java 开发,所以如果要运行 Amoeba,必须先安装 jdk 以便可以运行
(3).软件下载:[大家可以到http://www.oschina.net/p/amoeba (开源中国)下载]
当前测试环境使用的amoeba软件下载地址:http://www.kuaipan.cn/file/id_119710994921422890.htm
amoeba参考手册:http://docs.hexnova.com/amoeba/
amoeba项目代码:http://sourceforge.net/projects/amoeba/files/
(4).简要原理图:
2.我们这里将amoeba相关软件放在/tmp目录下,这里我们先配置JDK
(1).在主DB server上操作
(1).报错1:
(1).取消日志生成,不然磁盘容易爆满
相关文章推荐
- 基于amoeba实现mysql数据库的读写分离/负载均衡 推荐
- Amoeba整合MMM实现高可用负载均衡,读写分离,主从复制的MySQL
- amoeba win7 下实现读写分离与负载均衡
- 基于amoeba+keepalived+mmm实现mysql读写分离高可用架构 推荐
- mysql主从配置以及基于amoeba实现读写分离
- MySQL之——基于Amoeba实现读写分离
- MYSQL--之--amoeba 实现读写分离,负载均衡
- Keepalive+Amoeba+Mysql 实现高可用,负载均衡及读写分离
- mysql数据库-基于amoeba读写分离
- MySQL 5.6.13 GTID复制,以及基于Amoeba实现读写分离 推荐
- mysql5.6主从复制与基于amoeba实现读写分离
- ↑使用amoeba调度后端mysql服务器实现读写分离和负载均衡↑
- 基于amoeba实现MySQL读写分离
- mysql-mmm+amoeba+keepalived实现mysql高可用和读写分离(二)
- mysql-mmm+amoeba+keepalived实现mysql高可用和读写分离(一)
- mysql-mmm+amoeba+keepalived实现mysql高可用和读写分离
- Amoeba+mysql实现读写分离
- mysql-mmm+amoeba+keepalived实现mysql高可用和读写分离(二)
- 如何用 Amoeba 进行mysql数据库读写分离
- Window下使用amoeba实现读写分离的配置