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读写分离的主要内容,如果未能解决你的问题,请参考以下文章