Amoeba 是基於 MySQL 協議的資料庫 Proxy,支援讀寫分離、負載均衡、SQL 路由。本文記錄在三台機器 (Master/Slave/Amoeba) 環境下的 JDK 配置、Amoeba 安裝、核心配置檔修改與啟動驗證全流程。
| 角色 | IP | 說明 |
|---|---|---|
| Master | 172.16.206.129 | 寫入主庫 |
| Slave | 172.16.206.130 | 讀取從庫 |
| Amoeba | 172.16.206.131 | Proxy 入口,對外服務 8066 埠 |
<service name="Amoeba for Mysql" class="com.meidusa.amoeba.mysql.server.MySQLService">
<property name="port">8066</property>
<property name="ipAddress">172.16.206.131</property> <!-- Amoeba 自身 IP -->
<property name="authenticateProvider">
<bean class="com.meidusa.amoeba.mysql.server.MysqlClientAuthenticator">
<property name="user">amoeba</property>
<property name="password">123456</property>
</bean>
</property>
</service>
<queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">
<property name="defaultPool">master</property> <!-- 寫入池 -->
<property name="writePool">master</property>
<property name="readPool">multiPool</property> <!-- 讀取池(負載均衡) -->
<property name="needParse">true</property>
</queryRouter>
<dbServer name="abstractServer" abstractive="true"> ... </dbServer>
<dbServer name="master" parent="abstractServer">
<factoryConfig>
<property name="ipAddress">172.16.206.129</property>
</factoryConfig>
</dbServer>
<dbServer name="slave" parent="abstractServer">
<factoryConfig>
<property name="ipAddress">172.16.206.130</property>
</factoryConfig>
</dbServer>
<dbServer name="multiPool" virtual="true">
<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
<property name="loadbalance">1</property> <!-- 1=輪詢 -->
<property name="poolNames">master,slave,slave</property> <!-- 讀權重 1:2 -->
</poolConfig>
</dbServer>
/usr/local/amoeba/bin/launcher & # 背景啟動
/usr/local/amoeba/bin/shutdown # 關閉
應用端連線 172.16.206.131:8066 即可透明享受讀寫分離。
作者後註:因上述限制最終未採用 Amoeba,改用應用層路由方案。