首页 > 代码库 > 安装 amoeba for mysql

安装 amoeba for mysql


安装 amoeba for  mysql  


对于amoeba 的安装是相当简单的,基本上没什么安装的,

只需要解压文件,然后设置下环境变量就行了


  vi /etc/profile

  export amoeba_home01=/home/software/amoeba-mysql-3.0.5-RC 

  export PATH=$PATH:$amoeba_home01/bin


  添加完环境变量周 执行 source /etc/profile 是环境变量立即生效

  

  以上是在linux上的操作  ,如果是window平台 ,

  将 /amoeba-mysql-3.0.5-RC/bin路径添加在path环境变量就中行了 

  

配置amoeba.xml  (读写分离) 

在<sever></server> 节点中重点关注下port,IP,UserName ,Password

<server>

<!-- proxy server绑定的端口 -->  <!-- 此处的端口可以是amoeba所在机器上的任意的没有被使用的端口-->   

<property name="port">6666</property>

<!-- proxy server绑定的IP --> <!--amoeba所在主机的IP地址,外部程序同使用这个IP链接mysql服务器 --> 

<property name="ipAddress">192.168.53.41</property>

<!-- 对外验证的用户名 --> <!- 这个用户名可以任意写,外部程序通过amoeba访问mysql的的用户名-->

<property name="user">root</property>

<!-- 对外验证的密码 --> <!--密码可以任意写-->

<property name="password">Welcome@123</property>

</server>  

 

 节点connectionManagerList 可以不用管 ,默认就行

<connectionManagerList>

<connectionManager name="defaultManager" class="com.meidusa.amoeba.net.MultiConnectionManagerWrapper">

<property name="subManagerClassName">com.meidusa.amoeba.net.AuthingableConnectionManager</property>

<!-- 

 default value is avaliable Processors 

<property name="processors">5</property>

-->

</connectionManager>

</connectionManagerList> 

 

节点dbServerList 用来设置真实的mysql主机信息

<dbServerList>

<!-- 

一台mysqlServer 需要配置一个pool,

如果多台 平等的mysql需要进行loadBalance, 

平台已经提供一个具有负载均衡能力的objectPool:com.meidusa.amoeba.mysql.server.MultipleServerPool

简单的配置是属性加上 virtual="true",该Pool 不允许配置factoryConfig

或者自己写一个ObjectPool。

-->

<dbServer name="master">

<!-- PoolableObjectFactory实现类 -->

<factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">

<property name="manager">defaultManager</property>

<!-- 真实mysql数据库端口 -->

<property name="port">3306</property>

<!-- 真实mysql数据库IP -->

<property name="ipAddress">192.168.53.63</property>

<property name="schema">db_vip_act</property>

<!-- 用于登陆mysql的用户名 -->

<property name="user">root</property>

<!-- 用于登陆mysql的密码 -->

<property name="password">Welcome@456</property>

</factoryConfig>

<!-- ObjectPool实现类 -->

<poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">

<property name="maxActive">200</property>

<property name="maxIdle">200</property>

<property name="minIdle">10</property>

<property name="minEvictableIdleTimeMillis">600000</property>

<property name="timeBetweenEvictionRunsMillis">600000</property>

<property name="testOnBorrow">true</property>

<property name="testWhileIdle">true</property>

</poolConfig>

</dbServer>

<dbServer name="slave">

<!-- PoolableObjectFactory实现类 -->

<factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">

<property name="manager">defaultManager</property>

<!-- 真实mysql数据库端口 -->

<property name="port">3306</property>

<!-- 真实mysql数据库IP -->

<property name="ipAddress">192.168.53.60</property>

<property name="schema">db_vip_act</property>

<!-- 用于登陆mysql的用户名 -->

<property name="user">root</property>

<!-- 用于登陆mysql的密码 -->

<property name="password">Welcome@456</property>

</factoryConfig>

<!-- ObjectPool实现类 -->

<poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">

<property name="maxActive">200</property>

<property name="maxIdle">200</property>

<property name="minIdle">10</property>

<property name="minEvictableIdleTimeMillis">600000</property>

<property name="timeBetweenEvictionRunsMillis">600000</property>

<property name="testOnBorrow">true</property>

<property name="testWhileIdle">true</property>

</poolConfig>

</dbServer>

<dbServer name="multiPool" virtual="true">

<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">

<!-- 负载均衡参数 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->

<property name="loadbalance">1</property>

<!-- 参与该pool负载均衡的poolName列表以逗号分割 -->

<property name="poolNames">slave</property>

</poolConfig>

</dbServer>

</dbServerList>

  

这个里面重点讲下 节点multiPool 

这个节点主要用来将多个主机配置成一个集群的,

如果有多个slave主机,可以将以下节点配置成

<property name="poolNames">slave1,slave2,slave3,</property>

表示就slave1,salve2,slave3配置成一个集群,当有请求发送到到multiPool 池的时候,

会按照一定的顺序分别转发到相应的slave


在有的版本中对dbServer的设置单独放置在另外一个dbServers.xml的文件中

然后在 amoeba.xml文件中引用   dbServers.xml 文件中

下面的代码是 amoeba.xml中的部分代码

 <dbServerLoader class="com.meidusa.amoeba.context.DBServerConfigFileLoader">

                <property name="configFile">${amoeba.home}/conf/dbServers.xml</property> # 引用外部dbServers.xml文件

 </dbServerLoader>



最后就是配置路由功能了

<queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">

<property name="ruleConfig">${amoeba.home}/conf/rule.xml</property>

<property name="functionConfig">${amoeba.home}/conf/functionMap.xml</property>

<property name="ruleFunctionConfig">${amoeba.home}/conf/ruleFunctionMap.xml</property>

<property name="LRUMapSize">1500</property>

<property name="defaultPool">master</property> #非读写操作转发到master

<property name="writePool">master</property> #写(insert/update/delete)操作被转发到主机master

<property name="readPool">multiPool</property> # 读(select)操作转发到multiPool集群

<property name="needParse">true</property>

</queryRouter>


通过以上的设置 ,一个简单的读写分离架构就搭建成功了


启动amoeba,

amoena的可执行文件放在amoeba-mysql-3.0.5-RC/bin下,执行一下可执行文件就可以开启amoeba。

开启之后程序就会在后台运行

版本不同,amoeba的可执行文件名有所不同有的launcher 有的amoeba

在amoeba-mysql-3.0.5-RC/bin 下有两个相似的可执行问文件

-rwxr-xr-x. 1 root root  2114 Jul  5  2013 launcher

-rwxr-xr-x. 1 root root  1579 Dec 27  2012 launcher.bat

在window平台launcher.bat执行就可以开启amoeba

在linux平台上执行launcher就可以开启amoeba 


amoeba的使用手册:

http://docs.hexnova.com/amoeba/

https://www.centos.bz/2012/05/amoeba-for-mysql/

http://linuxguest.blog.51cto.com/195664/584788/

本文出自 “SQLServer MySQL” 博客,请务必保留此出处http://dwchaoyue.blog.51cto.com/2826417/1558523

安装 amoeba for mysql