Amoeba来实现mysql读写分离

Posted java交流空间

tags:

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

Amoeba官网使用指南http://docs.hexnova.com/amoeba/。



什么是Amoeba?

专注分布式数据库 proxy 开发具有负载均衡、高可用性、sql过滤、读写分离可路由相关的query到目标数据库、可并发请求多台数据库合并结果。

  主要解决:

  • 降低 数据切分带来的复杂多数据库结构

  • 提供切分规则并降低 数据切分规则 给应用带来的影响

  • 降低db 与客户端的连接数

  • 读写分离


为什么要使用Amoeba?

    随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩充,数据库应用    已经普遍建立于计算机网络之上。这时集中式数据库系统表现出它的不足:集中式处理,势必造成性    能瓶颈;应用程序集中在一台计算机上运行,一旦该计算机发生故障,则整个系统受到影响,可靠性    不高;集中式处理引起系统的规模和配置都不够灵活,系统的可扩充性差。在这种形势下,集中式数    据库将向分布式数据库发展。而Amoeba的透明、简易配置及多个优点使其成为分布式数据库代理产品中的优秀选择。

Amoeba优缺点

一、优点

1)这个软件致力于mysql的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。

2)座落与 Client、DB Server(s)之间,对客户端透明。

3)具有负载均衡、高可用性、SQL 过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果。

4)通过Amoeba你能够完成多数据源的高可用、负载均衡、数据切片的功能,目前Amoeba已在很多 企业的生产线上面使用。

5)Amoeba目前不支持事务

二、缺点

1)目前还不支持事务

2)暂时不支持存储过程(近期会支持)

3)不适合从amoeba导数据的场景或者对大数据量查询的query并不合适(比如一次请求返回10w以上甚至更多数据的场合)

4)暂时不支持分库分表,amoeba目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致


Amoeba实现读写分离,需要具备的条件(重点):

1、具备java环境(JDK),jdk1.5版本以上

2、多台数据库(mysql),数据库对amoeba授权

3、需要mysql主从同步:amoeba只负责读写分离,不负责主从同步,那么主从同步如何配置呢?(引文)

4、配置amoeba (引文)


mysql主从同步配置(重点)

主数据库show master status;获取file和Position

从数据库设置SHOW SLAVE STATUS;查看Slave_IO_Running和Slave_SQL_Running,都为Yes,才表示配置成功

若是有一个为No,那么先stop slave;配置主数据库信息

change master to master_host='10.39.133.51',master_user='test',master_password='123456',

 

master_log_file='mysql-bin.000003', master_log_pos=12283;

注意:master_log_file=主数据库file,master_log_pos=主数据库Position

host=主数据库ip,用户名密码雷同

再启动slave: start slave;





以上是关于Amoeba来实现mysql读写分离的主要内容,如果未能解决你的问题,请参考以下文章

利用Amoeba实现MySQL主从复制和读写分离

使用Amoeba实现mysql读写分离机制

利用amoeba实现mysql读写分离

Amoeba 实现MySQL读写分离

Amoeba+Mysql 实现读写分离

使用amoeba实现mysql读写分离