Amoeba介绍
Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。
基于此可以实现负载均衡、读写分离、高可用性等需求。
Amoeba相当于一个SQL请求路由器,目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的 Replication等机制来实现副本同步等功能。
环境配置
Amoeba服务器ip:192.168.77.146
Amoeba环境条件
源码环境:gcc相关环境,java环境,本次用到的是java1.8
# 安装gcc环境
[root@localhost ~]# yum -y install gcc*
# 导入相关的压缩包
[root@localhost ~]# ls
amoeba-mysql-3.0.5-RC-distribution.zip anaconda-ks.cfg jdk-8u271-linux-x64.tar.gz
# 安装java环境
[root@localhost ~]# mkdir /usr/local/jdk1.8
[root@localhost ~]# tar -xf jdk-8u271-linux-x64.tar.gz -C /usr/local/
[root@localhost ~]# mv /usr/local/jdk1.8.0_271 /usr/local/jdk1.8
# 配置java环境
[root@localhost ~]# vim /etc/profile
# java环境配置,放在profile文件的最后
JAVA_HOME=/usr/local/jdk1.8
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH
export CLASSPATH
# 验证
[root@localhost ~]# java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
# 配置防火墙规则,开启8066端口
[root@localhost ~]# firewall-cmd --add-port=8066/tcp --permanent
[root@localhost ~]# firewall-cmd --reload
安装Amoeba
[root@localhost ~]# unzip amoeba-mysql-3.0.5-RC-distribution.zip
[root@localhost ~]# mv amoeba-mysql-3.0.5-RC /usr/local/amoeba
配置Amoeba配置文件
[root@localhost ~]# cd /usr/local/amoeba
# 修改主配置文件
[root@localhost amoeba]# vim conf/amoeba.xml
配置dbServers.xml,设置数据库,登录MySQL的账号和密码
# 修改数据库配置文件
[root@localhost amoeba]# vim conf/dbServers.xml
启动Amoeba
[root@localhost amoeba]# ./bin/launcher
注意事项
1).在做Master/Slave的时候,当删除了master的帐号,如果想要看到slave的效果,那就需要重启master的数据库服务再去看slave的status;(但是当salve从不可用到master可用了,不用重启master的数据库服务,slave也能看到效果)
2).在做Master/Slave的时候,我们有两台Salve,而且是内网的机器,所以使用了“192.168.1.%”这样的方式来创建用户,在一定的程度上保障帐号的安全性,又方便管理,使用“*”是错误的;
3).对于多Slave的帐号问题,还可以有其它方式来创建帐号的,就是在Master为每个Slave创建独立的帐号和密码;
4)修改log4jxml取消日志文件生成(太大了,磁盘很容易满),<param name="file" value="
${amoeba.home}/logs/project.log"/>改成:<param name="file" value="<![CDATA[${amoeba.home}/logs/project.log>/dev/null]]>"/>
5). 性能优化,打开bin/amoeba,DEFAULT_OPTS="-server -Xms256m-Xmx256m -Xss128k”改成:DEFAULT_OPTS="-server -Xms512m -Xmx512m-Xmn100m -Xss1204k"
6). loadbalance元素设置了loadbalance策略的选项,这里选择第一个“ROUNDROBIN”轮询策略,该配置提供负载均衡、failOver、故障恢复功能。poolNames定义了其中的数据库节点配置(当然也可以是虚拟的节点)。此外对于轮询策略,poolNames还定义了其轮询规则,比如设置成“Slavel,Slavel,Slave2”那么Amoeba将会以两次Slave1,一次Slave2的顺序循环对这些数据库节点转发请求。