amoeba搭建+测试+问题

一. 准备工作: 

1. 正确安装JDK1.7 , 

2.两台服务器192.168.0.100 和 192.168.0.101, 

3.首先正确搭建两台mysql的master-slave关系. 搭建步骤参考 http://blog.csdn.net/helloznan/article/details/52371814


二. 下载安装

1.http://sourceforge.net/projects/amoeba/files/,下载后是压缩包形式,在电脑目录中创建一个文件夹命名为amoeba,将压缩包解压,解压后的文件如下图所示:



2.启动bin\launcher.bat启动amoeba,如果看到下图,说明成功


3.了解amoeba配置

Amoeba总共有7个配置文件,分别如下:

#/*  Amoeba主配置文件($AMOEBA_HOME/conf/amoeba.xml),用来配置Amoeba服务的基本参数,如Amoeba主机地址、端口、认证方式、用于连接的用户名、密码、线程数、超时时间、其他配置文件的位置等。

#/*  数据库服务器配置文件($AMOEBA_HOME/conf/dbServers.xml),用来存储和配置Amoeba所代理的数据库服务器的信息,如:主机IP、端口、用户名、密码等。

#/*  切分规则配置文件($AMOEBA_HOME/conf/rule.xml),用来配置切分规则。

#/*  数据库函数配置文件($AMOEBA_HOME/conf/functionMap.xml),用来配置数据库函数的处理方法,Amoeba将使用该配置文件中的方法解析数据库函数。

#/*  切分规则函数配置文件($AMOEBA_HOME/conf/ruleFunctionMap.xml),用来配置切分规则中使用的用户自定义函数的处理方法。

#/*  访问规则配置文件($AMOEBA_HOME/conf/access_list.conf),用来授权或禁止某些服务器IP访问Amoeba。

#/*  日志规格配置文件($AMOEBA_HOME/conf/log4j.xml),用来配置Amoeba输出日志的级别和方式。


4. 配置dbServers.xml


首先注意到这个是一个抽象的父服务,用来给实际服务的继承使用. 每一个server都要有独立的后端mysql连接端口,数据库名称,帐号,密码, 连接池大小等.写在抽象父类中,方便统一管理. 如果不用继承的方式,也可以复制到每一个具体server中.



再创建两个实际的server.都继承了相同的父类,唯一不同的是他们的IP



再配置一个虚拟的server,相当于自由组合实际server为一个server,这里命名为multiPool,名称可以自定义.


5.配置amoeba.xml


配置amoeba的连接端口,以及amoeba的登录帐号密码,与dbServers.xml中的帐号密码不同,dbServers.xml是配置后端mysql的帐号密码


设置默认数据库为master,以及读和写策略,这里读策略是从虚拟服务中轮询, 当对一条sql语句解析不出的时候,无法正确路由到writePool或readPool时,就会路由到defaultPool.所以defaultPool一般配置为主节点.


重启amoeba.xml


6. 测试

登录amoeba  

cmd > mysql -uroot -padmin -P8066 -h127.0.0.1

a) 这里的帐号密码是在amoeba.xml中配置的登录密码,不是后端mysql的帐号密码

b) -P8066为amoba.xml的端口

c) 经测试, -h127.0.0.1不可缺少,否则就会路由到defaultPool中,只有制定了-h才能完成路由,不知道是什么原因.


由于已经配置了主从数据库,此时master库的数据变化,已经自动复制到slave中,所以手动修改slave表Student,把id为1的记录name值进行修改,只要与master中的值不一致即可.此时不可再修改master的student表的ID=1记录,不然又同步到slave中了,然后执行select * from Student where id=1看看是不是查询出了slave中的值. 

可以修改虚拟服务,设置多个服务轮训.如

多次查询发现结果是不一样的. 至此,amoeba安装配置成功


=====================================================

问题:

1. 在使用amoeba时, 应用层spring+hibernate,通过JpaTransactionManager测试事务.

提交然后回滚.发现update语句是被回滚了,但是insert没有被回滚.所以是否采用amoeba作为读写分离方案, 还要慎重考虑. 有知道原因的朋友,请给我留言.或者其他解决方案否? 


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值