安装 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