Amoeba(变形虫)项目 http://docs.hexnova.com/amoeba/ ,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。座落与 Client、DB Server(s)之间,对客户端透明。具有负载均衡、高可用性、SQL 过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果。 通过Amoeba你能够完成多数据源的高可用、负载均衡、数据切片的功能,目前Amoeba已在很多 企业的生产线上面使用,但amoeba目前不支持事务。
环境:数据库master服务器 192.168.32.131
数据库slave服务器 192.168.32.132
amoeba for mysql 192.168.32.130
一、主从配置过程略(见上下文)
二、master 创建读写分离连接用户
mysql > grant all on *.* to 'proxy'@'192.168.32.130' identified by 'proxy'; #从服务器会自动同步
三、amoeba代理服务器
1、amoeba基于Java开发,首先安装jdk
官网最新jdk wget -c http://download.oracle.com/otn-pub/java/jdk/8u31-b13/jdk-8u31-linux-i586.rpm
chmod 755 jdk-8u31-linux-i586.rpm
rpm -ivh jdk-8u31-linux-i586.rpm
vim /etc/profile #配置jdk环境变量
# set JAVA declare JAVA_HOME=/usr/java/jdk1.8.0_31 CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH |
. /etc/profile
java -version #验证版本
2、安装amoeba
官网 http://sourceforge.net/projects/amoeba/files/
mkdir /usr/local/amoeba
unzip -d /usr/local/amoeba/ amoeba-mysql-3.0.5-RC-distribution.zip #解压
cd /usr/local/amoeba/amoeba-mysql-3.0.5-RC/
配置文件:
amoeba.xml #主配置文件
dbServers.xml #后端服务器配置文件
rule.xml #Query路由规则的信息
access_list.conf #访问控制
vim amoeba.xml
<property name="port">8066</property> #监听端口 <!-- bind ipAddress --> <property name="ipAddress">192.168.32.130</property> #监听IP <property name="user">amoeba</property> #连接帐号 <property name="password">amoeba</property> <property name="writePool">server2</property> #定义写组 <property name="readPool">server1</property> #定义读组 |
vim conf/dbServers.xml
<!-- mysql port --> <property name="port">3306</property> #连接后端数据库使用的用户,密码 <!-- mysql schema --> <property name="schema">test</property> #定义适用数据库 <property name="schema">testing</property> <!-- mysql user --> <property name="user">proxy</property> <property name="password">proxy</property> <dbServer name="server1" parent="abstractServer"> #定义后端2台server信息 <factoryConfig> <!-- mysql ip --> <property name="ipAddress">192.168.32.131</property> </factoryConfig> </dbServer> <dbServer name="server2" parent="abstractServer"> <factoryConfig> <!-- mysql ip --> <property name="ipAddress">192.168.32.132</property> </factoryConfig> </dbServer> <dbServer name="multiPool" virtual="true"> #集群和负载均衡 <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool"> <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA--> <property name="loadbalance">1</property> <!-- Separated by commas,such as: server1,server2,server1 --> <property name="poolNames">server1</property> </poolConfig> </dbServer> |
/usr/local/amoeba/amoeba-mysql-3.0.5-RC/bin/launcher & #启动服务
四、客户端连接测试
1、读
关闭master数据库
mysql -h 192.168.32.130 -u amoeba -p -P 8066 #连接amoeba
mysql> show databases; #查询的是slave上的数据库
2、写
mysql -h 192.168.32.130 -u amoeba -p -P 8066
写到master后,slave会自动同步
来源:oschina
链接:https://my.oschina.net/u/574387/blog/408688