首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Amoeba 實戰:MySQL 讀寫分離中間件部署全紀錄

     編輯:MySQL 綜合教學

架構概覽

Amoeba 是基於 MySQL 協議的 Java Proxy,介於應用與資料庫之間,依規則將 SQL 路由至特定實例,實現負載均衡、讀寫分離、高可用。對比官方 MySQL Proxy(Lua 腳本),Amoeba 採 XML + SQLJEP 語法,配置更直觀。

實驗環境

  • Amoeba Server:192.168.1.121(對外 3306)
  • MySQL Master:192.168.1.141
  • MySQL Slave:192.168.1.142

步驟 1:配置 Master-Slave 複寫

Master (141) my.cnf

log_bin=index
server_id=1

授權複寫帳號:

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* 
TO 'user'@'192.168.1.142' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

Slave (142) my.cnf

server_id=10
relay_log=relay

建立複寫連線:

CHANGE MASTER TO 
  MASTER_HOST='192.168.1.141',
  MASTER_USER='user',
  MASTER_PASSWORD='123456',
  MASTER_LOG_FILE='index.000004',
  MASTER_LOG_POS=429;
START SLAVE;

確認 Slave_IO_Running: Yes 與 Slave_SQL_Running: Yes。

步驟 2:安裝 Amoeba (121)

  1. 安裝 JDK 1.6+,配置 JAVA_HOME、PATH。
  2. 下載 amoeba-mysql-binary-2.2.0.tar.gz 解壓至 /usr/local/amoeba。
  3. 核心目錄:bin(啟動腳本)、conf(配置)、lib(依賴)。

步驟 3:修改核心配置

amoeba.xml - 服務與路由

<service name="Amoeba for Mysql" ...>
  <property name="port">3306</property>
  <property name="ipAddress">0.0.0.0</property>
  <property name="authenticator">
    <bean class="com.meidusa.amoeba.mysql.server.MysqlClientAuthenticator">
      <property name="user">root</property>
      <property name="password">amoeba</property>
    </bean>
  </property>
</service>

<queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">
  <property name="writePool">test1</property>   <!-- 寫 -> Master -->
  <property name="readPool">test2</property>    <!-- 讀 -> Slave -->
  <property name="needParse">true</property>
</queryRouter>

dbserver.xml - 後端 DB 定義

<dbServer name="test1" parent="abstractServer">  <!-- Master -->
  <factoryConfig>
    <property name="ipAddress">192.168.1.141</property>
  </factoryConfig>
</dbServer>

<dbServer name="test2" parent="abstractServer">  <!-- Slave -->
  <factoryConfig>
    <property name="ipAddress">192.168.1.142</property>
  </factoryConfig>
</dbServer>

後端 MySQL 授權 Amoeba 連線:

GRANT ALL ON *.* TO 'root'@'192.168.1.121' IDENTIFIED BY 'amoebapass';

步驟 4:啟動與驗證

修改 bin/amoeba 腳本的 -Xss128k 為 -Xss256k 避免堆疊過小報錯。執行 /usr/local/amoeba/bin/amoeba start。

客戶端測試:

mysql -uroot -pamoeba -h192.168.1.121

寫入操作落在 Master,讀取落在 Slave,抓包可驗證路由正確性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved