標籤:mysql amoeba
安裝 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">[email protected]</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">[email protected]</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">[email protected]</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