同事 Struct Chen 的 Amoeba For MySQL 项目已经 出来不短时间了,可一直没有时间好好体验,最近一直在做一些软件和硬件的功能以及性能相关的测试工作,Amoeba For MySQL自然也将被列入计划之内。 对 Amoeba For MySQL 的测试到目前位置主要还是功能方面的测
同事 Struct Chen 的 Amoeba For MySQL 项目已经 出来不短时间了,可一直没有时间好好体验,最近一直在做一些软件和硬件的功能以及性能相关的测试工作,Amoeba For MySQL自然也将被列入计划之内。
对 Amoeba For MySQL 的测试到目前位置主要还是功能方面的测试,配置了一套四台机器的环境:
Server A: Amoeba Server
Server B: MySQL Master
Server C: MySQL Slave1
Server D: MySQL Slave2
软件环境:RHEL5.2 (X86_64),JAVA 1.5.0_16, Amoeba For MySQL 0.31
测试功能:
1、读写分离
2、数据垂直切分
3、数据水平切分
amoeba.xml配置如下:
< ?xmlversion=“1.0“encoding=“gbk“?>
< !DOCTYPEamoeba:configurationSYSTEM“amoeba.dtd“>
<amoeba:configurationxmlns:amoeba=“http://amoeba.meidusa.com/“>
<server>
<propertyname=“port“>8066</property>
<propertyname=“ipAddress“>10.0.38.21</property>
<propertyname=“readThreadPoolSize“>500</property>
<propertyname=“clientSideThreadPoolSize“>500</property>
<propertyname=“serverSideThreadPoolSize“>500</property>
<propertyname=“netBufferSize“>200</property>
<propertyname=“tcpNoDelay“>true</property>
<propertyname=“user“>user</property>
<propertyname=“password“>password</property>
</server>
<connectionmanagerlist>
<connectionmanagername=“defaultManager“>
<classname>com.meidusa.amoeba.net.AuthingableConnectionManager</classname>
</connectionmanager>
</conn本文来源gao.dai.ma.com搞@代*码(网$ectionmanagerlist>
<dbserverlist>
<dbservername=“master“>
<factoryconfig>
<classname>com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory</classname>
<propertyname=“manager“>defaultManager</property>
<propertyname=“port“>3306</property>
<propertyname=“ipAddress“>10.0.38.37</property>
<propertyname=“schema“>test</property>
<propertyname=“user“>root</property>
<propertyname=“password“>password</property>
</factoryconfig>
<poolconfig>
<classname>com.meidusa.amoeba.net.poolable.PoolableObjectPool</classname>
<propertyname=“maxActive“>500</property>
<propertyname=“maxIdle“>200</property>
<propertyname=“minIdle“>10</property>
<propertyname=“minEvictableIdleTimeMillis“>600000</property>
<propertyname=“timeBetweenEvictionRunsMillis“>600000</property>
<propertyname=“testOnBorrow“>true</property>
<propertyname=“testWhileIdle“>true</property>
</poolconfig>
</dbserver>
<dbservername=“slave1“>
<factoryconfig>
<classname>com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory</classname>
<propertyname=“manager“>defaultManager</property>
<propertyname=“port“>3306</property>
<propertyname=“ipAddress“>10.0.38.22</property>
<propertyname=“schema“>test</property>
<propertyname=“user“>root</property>
<propertyname=“password“>password</property>
</factoryconfig>
<poolconfig>
<classname>com.meidusa.amoeba.net.poolable.PoolableObjectPool</classname>
<propertyname=“maxActive“>500</property>
<propertyname=“maxIdle“>200</property>
<propertyname=“minIdle“>10</property>
<propertyname=“minEvictableIdleTimeMillis“>600000</property>
<propertyname=“timeBetweenEvictionRunsMillis“>600000</property>
<propertyname=“testOnBorrow“>true</property>
<propertyname=“testWhileIdle“>true</property>
</poolconfig>
</dbserver>
<dbservername=“slave2“>
<factoryconfig>
… …
</factoryconfig>
<poolconfig>
… …
</poolconfig>
</dbserver>
<dbservername=“virtualSlave“virtual=“true“>
<poolconfig>
<classname>com.meidusa.amoeba.server.MultipleServerPool</classname>
<propertyname=“loadbalance“>1</property>
<propertyname=“poolNames“>slave1,slave2</property>
</poolconfig>
</dbserver>
</dbserverlist>
<queryrouter>
<classname>com.meidusa.amoeba.mysql.parser.MysqlQueryRouter</classname>
<propertyname=“ruleConfig“>${amoeba.home}/conf/rule.xml</property>
<propertyname=“functionConfig“>${amoeba.home}/conf/functionMap.xml</property>
<propertyname=“ruleFunctionConfig“>${amoeba.home}/conf/ruleFunctionMap.xml</property>
<propertyname=“LRUMapSize“>1500</property>
<propertyname=“defaultPool“>master</property>
<propertyname=“writePool“>master</property>
<propertyname=“readPool“>virtualSlave</property>
<propertyname=“needParse“>true</property>
</queryrouter>
</amoeba>