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

MySQL + Atlas 實現讀寫分離:從部署到驗證完整實戰

     編輯:MySQL 綜合教學

MySQL + Atlas 實現讀寫分離:從部署到驗證完整實戰

Atlas 是奇虎 360 開源的基於 MySQL-Proxy 的中間件,修復了原版眾多 Bug,優化效能,配置文件全中文註釋,極適合國內團隊快速落地讀寫分離。本文以三節點環境為例,完整記錄部署流程。

環境規劃

角色IPOS說明
Atlas 代理192.168.246.143CentOS 6.7讀寫分離入口
Master MySQL192.168.246.134CentOS 6.7寫入節點
Slave MySQL192.168.246.135CentOS 6.7讀取節點

一、資料庫用戶配置(雙主同步)

  1. 在 Master (134) 建立遠程訪問用戶:
GRANT ALL ON *.* TO buck@'127.0.0.1' IDENTIFIED BY 'hello';
USE mysql;
UPDATE user SET host='%' WHERE user='buck';
FLUSH PRIVILEGES;
  1. 同樣操作在 Slave (135) 重複,確保雙向同步用戶一致。
  2. 雙方建立測試庫:CREATE DATABASE test;

二、主從複制配置

1. Master (134) my.cnf

[mysqld]
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# 複制核心參數
innodb_flush_log_at_trx_commit=1
sync_binlog=1
binlog-do-db=test
binlog-ignore-db=mysql
log-bin=mysql-bin
server-id=1
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

重啟後授權複制權限並鎖表獲取二進制日誌位點:

GRANT REPLICATION SLAVE ON *.* TO 'buck'@'127.0.0.1' IDENTIFIED BY 'hello';
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
-- 記錄 File (mysql-bin.000002) 與 Position (17620976)

2. Slave (135) my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
server-id=2
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

配置同步起點並啟動:

CHANGE MASTER TO
  MASTER_HOST='192.168.246.134',
  MASTER_USER='buck',
  MASTER_PASSWORD='hello',
  MASTER_LOG_FILE='mysql-bin.000002',
  MASTER_LOG_POS=17620976;
START SLAVE;
SHOW SLAVE STATUS\G
-- 確認 Slave_IO_Running & Slave_SQL_Running 均為 Yes

三、Atlas 配置 (test.conf)

[mysql-proxy]
daemon = true
keepalive = true
event-threads = 4
admin-username = admin
admin-password = admin
admin-lua-script = admin.lua
proxy-address = 0.0.0.0:3306
proxy-read-only-backend-addresses = 192.168.246.135:3306
proxy-backend-addresses = 192.168.246.134:3306
pwds = buck:hello
charset = utf8
  • proxy-backend-addresses:寫入主庫
  • proxy-read-only-backend-addresses:讀取從庫(可多個,逗號分隔,自動負載均衡)
  • pwds:明文密碼對應後端用戶,生產建議用加密版 encrypt 工具生成

四、讀寫分離驗證

  1. 啟動 Atlas:/usr/local/mysql-proxy/bin/mysql-proxyd test start
  2. 連線 Atlas:mysql -h 192.168.246.143 -P 3306 -u buck -phello
  3. 寫入測試:INSERT INTO test.t VALUES (1, 'write'); → 檢查 Master 有數據,Slave 同步後可見。
  4. 讀取測試:SELECT * FROM test.t; → 觀察 Atlas 日誌,確認請求路由至 Slave。
  5. 模擬 Slave 掛掉:Atlas 自動剔除故障節點,讀請求轉回 Master,保證可用性。

五、運維提示

  • 監控:Atlas 管理介面 https://192.168.246.143:3307 (admin/admin) 可視化查看後端狀態、QPS、延遲。
  • 權重:從庫可配置 proxy-read-only-backend-addresses = 192.168.246.135:3306@2 實現按權重分流。
  • 升級:Atlas 無狀態,滾動重啟即可,不影響前端連線(需配合 VIP/Keepalived)。

Atlas 以輕量、穩定、中文友好成為中小團隊落地 MySQL 讀寫分離的首選。結合主從 GTID 複制與 MHA 自動故障轉移,可構建高可用資料庫架構。

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