Amoeba 简介
Amoeba for mysql可作为mysql的分布式数据库前端代理层,它主要在应用层访问mysql的时候充当query 路由功能,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、query filter、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。 在amoeba上面你能够完成多数据源的高可用、负载均衡、数据切片的功能。
Amoeba for mysql不足:
目前还不支持事务
暂时不支持存储过程
不适合从amoeba导数据的场景或者对大数据量查询的query并不合适(比如一次请求返回10w以上甚至更多数据的场合)
暂时不支持分库分表,amoeba目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致
安装Amoeba
shell> tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /db/tool/amoeba
shell> vi /etc/profile
=========================================================
export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk #使用系统自带JDK
export AMOEBA_HOME=/db/tool/amoeba
PATH=$AMOEBA_HOME/bin:$JAVA_HOME/bin:$PATH
=========================================================
shell> source /etc/profile
shell> java -version
java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.4) (rhel-1.41.1.10.4.el6-i386)
OpenJDK Server VM (build 20.0-b11, mixed mode)
安装完成后,你可以通过命令确定Amoeba是否成功安装。
shell> amoeba
amoeba start|stop
配置Amoeba for mysql
$AMOEBA_HOME/conf/dbServers.xml:存储代理的数据库连接方式,如:主机IP、端口、Amoeba使用的用户名和密码等
$AMOEBA_HOME/conf/amoeba.xml:定义了Amoeba代理的相关配置
$AMOEBA_HOME/conf/functionMap.xml:数据库函数名和函数解析处理的关系,如:UNIX_TIMESTAMP()、SYSDATE()等等
$AMOEBA_HOME/conf/rule.xml:数据切分规则配置
$AMOEBA_HOME/conf/ruleFunctionMap.xml:rule.xml中自定义的函数
$AMOEBA_HOME/conf/access_list.conf:制定可访问以及拒绝访问的主机IP地址
$AMOEBA_HOME/conf/log4j.xml:Amoeba允许用户配置输出日志级别以及方式,配置方法使用log4j的文件格式
shell> vi /db/tool/amoeba/conf/dbServers.xml
========================================================================================
${defaultManager}
64
128