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

使用 Atlas 實現 MySQL 讀寫分離:中間件部署、配置與驗證全流程

     編輯:MySQL 綜合教學

使用 Atlas 實現 MySQL 讀寫分離:中間件部署、配置與驗證全流程

Atlas 是 360 開源的基於 MySQL 協議的中間件,支援讀寫分離、負載均衡、SQL 審計、分表分庫。本文記錄雙主一從環境下部署 Atlas 2.2 實現讀寫分離的完整步驟。

環境規劃

角色IP說明
MySQL Master192.168.29.128寫入主庫
MySQL Slave192.168.29.129讀取從庫
Atlas Proxy192.168.29.130中間件部署節點

前置條件:Master/Slave 已配置好主從同步 (參考 ID 175197)。

1. 下載安裝 Atlas

# 官方 Release: https://github.com/Qihoo360/Atlas/releases
# 選擇對應 OS 版本 (此處 CentOS 6 x64)
wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm
rpm -ivh Atlas-2.2.1.el6.x86_64.rpm
# 安裝目錄: /usr/local/mysql-proxy

2. 配置 /usr/local/mysql-proxy/conf/test.cnf

[mysql-proxy]
# 管理介面用戶/密碼 (預設 admin/admin)
admin-username = admin
admin-password = admin

# 實例名稱 (需與啟動參數一致)
instance = test

# 監聽地址 (客戶端連接埠)
proxy-address = 0.0.0.0:1234

# 管理介面埠
admin-address = 0.0.0.0:2345

# 後端主庫 (寫入) - 可多個逗號分隔
proxy-backend-addresses = 192.168.29.128:3306

# 後端從庫 (唯讀) - @權重 用於負載均衡
proxy-read-only-backend-addresses = 192.168.29.129:3306@1

# 用戶名:加密密碼 (主從需同帳號同密碼)
# 密碼加密: /usr/local/mysql-proxy/bin/encrypt '123456' -> /iZxz+0GRoA=
pwds = root:/iZxz+0GRoA=

# 運行模式: true=守護進程, false=前台調試
daemon = true

# 字元集
charset = utf8

# SQL 日誌: OFF/ON/REALTIME (調試用 REALTIME)
sql-log = REALTIME
# 日誌路徑: /usr/local/mysql-proxy/log/

3. 啟動/管理 Atlas

cd /usr/local/mysql-proxy/bin
./mysql-proxyd test start    # 啟動 (test 為 instance 名)
./mysql-proxyd test restart  # 重啟
./mysql-proxyd test stop     # 停止

# 檢查進程
ps -ef | grep mysql-proxy

4. 客戶端驗證讀寫分離

# 連接 Atlas 代理埠 (非 MySQL 原生 3306)
mysql -h 192.168.29.130 -P 1234 -u root -p123456

# 執行寫入 -> 應路由至 Master
CREATE DATABASE test_atlas;
USE test_atlas;
CREATE TABLE t (id INT);
INSERT INTO t VALUES (1);

# 執行讀取 -> 應路由至 Slave
SELECT * FROM t;
SHOW PROCESSLIST;  -- 觀察連接來源 IP

查看 Atlas 日誌 /usr/local/mysql-proxy/log/ 可見寫操作導向 Master、讀操作導向 Slave。

5. 管理介面操作

mysql -h 192.168.29.130 -P 2345 -u admin -padmin
SELECT * FROM help;  -- 查看所有管理命令
-- 例: SELECT * FROM backends;  -- 查看後端節點狀態

常見問題與調優

  • 讀寫分離不生效:確認 SQL 是否為 SELECT (含 SELECT ... FOR UPDATE 視為寫)、是否在事務中 (事務內全部走主庫)、sql-log=REALTIME 觀察路由日誌。
  • 從庫延遲導致讀舊資料:關鍵業務強制走主庫 (/*master*/ SELECT ... 註解提示),或使用半同步複制降低延遲。
  • 高可用:Atlas 單點故障,生產建議雙節點 + Keepalived VIP 或使用 ProxySQL (支援原生 HA)。
  • 效能:Atlas 基於 Lua + epoll,單實例可支撐 1-2 萬 QPS,瓶頸通常在後端 MySQL。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved