网站建设知识
MySQL的读写分离之Amoeba
2025-07-22 11:15  点击:1

MySQL读写分离Amoeba简介

Amoeba介绍:

阿里巴巴的Amoeba(变形虫)项目,专注 数据库proxy开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。

架构图:

Amoeba除了读写分离,还可以进行负载均衡、高可用性、sql过滤。

Amoeba的安装和配置

Amoeba需要mysql-server支持,Amoeba服务器端需要安装Mysql-server,并且最好不与其他数据库服务器在一起

Amoeba是Java编写的,运行需要JDK环境,可以通过#echo $JAVA_HOME看是否安装配置了JDK,如果没有,则

安装JKD

①.安装依赖包

yum -y install glibc*

②.安装JDK

下载:jdk-6u35-linux-i586.bin 或 jdk-6u45-linux-x64.bin

chmod 700 jdk-6u35-linux-i586.bin

chmod 700 jdk-6u45-linux-x64.bin

./jdk-6u35-linux-i586.bin

mv jdk1.6.0_35 jdk

mv jdk /usr/local/

③.修改JDK的环境变量

vi /etc/profile.d/java.sh

JAVA_HOME="/usr/local/jdk"

CLASS_PATH="$JAVA_HOME/lib:$JAVA_HOME/jre/lib"

PATH="$PATH:$JAVA_HOME/bin"

export JAVA_HOME

source /etc/profile.d/java.sh

#测试安装成功

java -version

安装Amoeba

下载:amoeba-mysql-binary-2.2.0.tar.gz

①.安装Amoeba

mkdir /usr/local/amoeba

tar -zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba

cd /usr/local/amoeba/

②.配置amoeba.xml和dbServer.xml

vi conf/amoeba.xml

8066

# 默认端口是8066

# 修改连接amoeba接口的认证信息

172.18.109.213

#访问amoeba的ip地址,amoeba服务器的地址

... ...

amoeba

# 客户端连接amoeba的代理使用的用户

mypasswd

# 客户端连接amoeba的代理使用的密码

... ...

${amoeba.home}/conf/rule.xml

${amoeba.home}/conf/ruleFunctionMap.xml

${amoeba.home}/conf/functionMap.xml

1500

master# 设定默认节点

master # 设定可写节点,节点定义见dbServers.xml文件

slave1 # 设定只读池,可配置多个slave节点

#readPool或writePool可以是dbServers中的multiPool名称,用multiPool来设置负载均衡。

true

vi conf/dbServers.xml

# 读写分离配置,读池和写池和dbServer.xml中配置的节点相关

${defaultManager}

64

128

3306

chejecms

myroot

# 默认连接mysql server的用户

my123

# 默认连接mysql server的密码,以上两项如不在下文中的dbserver中单独定义,则直接继承此处定义

# 定义连接mysql服务的用户amoeba和密码my123和数据库chejecms

# 定义后端MySQL的IP地址,一个master,一个slave

172.19.200.204

172.18.109.213

#服务组,轮询策略

1

master,slave1

#1为轮询策略,里面的master,slaver1按请求轮询调用

64位系统,修改:

vi /usr/local/amoeba/bin/amoeba

... ...

DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k"

#-Xss128k改为-Xss256k

③.开启amoeba

开机自启动

echo "/usr/local/amoeba/bin/amoeba start &" >> /etc/rc.d/rc.local

④.验证amoeba

mysql -uamoeba -h 172.18.109.213 -pmypasswd -P8066

#注意,此时登录的用户密码为连接amoeba服务器的密码,不是连接数据库的密码!!因为连接进到的是amoeba,并没有进到mysql里面!!!