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
# 修改连接amoeba接口的认证信息
#访问amoeba的ip地址,amoeba服务器的地址
... ...
# 客户端连接amoeba的代理使用的用户
# 客户端连接amoeba的代理使用的密码
... ...
#readPool或writePool可以是dbServers中的multiPool名称,用multiPool来设置负载均衡。
vi conf/dbServers.xml
# 读写分离配置,读池和写池和dbServer.xml中配置的节点相关
# 默认连接mysql server的用户
# 默认连接mysql server的密码,以上两项如不在下文中的dbserver中单独定义,则直接继承此处定义
# 定义连接mysql服务的用户amoeba和密码my123和数据库chejecms
# 定义后端MySQL的IP地址,一个master,一个slave
#服务组,轮询策略
#1为轮询策略,里面的master,slaver1按请求轮询调用
64位系统,修改:
vi /usr/local/amoeba/bin/amoeba
... ...
DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k"
#-Xss128k改为-Xss256k
③.开启amoeba
/usr/local/amoeba/bin/amoeba start &
开机自启动
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里面!!!