Atlas 是奇虎 360 開源的基於 MySQL-Proxy 的中間件,修復了原版眾多 Bug,優化效能,配置文件全中文註釋,極適合國內團隊快速落地讀寫分離。本文以三節點環境為例,完整記錄部署流程。
| 角色 | IP | OS | 說明 |
|---|---|---|---|
| Atlas 代理 | 192.168.246.143 | CentOS 6.7 | 讀寫分離入口 |
| Master MySQL | 192.168.246.134 | CentOS 6.7 | 寫入節點 |
| Slave MySQL | 192.168.246.135 | CentOS 6.7 | 讀取節點 |
GRANT ALL ON *.* TO buck@'127.0.0.1' IDENTIFIED BY 'hello'; USE mysql; UPDATE user SET host='%' WHERE user='buck'; FLUSH PRIVILEGES;
CREATE DATABASE test;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)
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
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 工具生成/usr/local/mysql-proxy/bin/mysql-proxyd test startmysql -h 192.168.246.143 -P 3306 -u buck -phelloINSERT INTO test.t VALUES (1, 'write'); → 檢查 Master 有數據,Slave 同步後可見。SELECT * FROM test.t; → 觀察 Atlas 日誌,確認請求路由至 Slave。https://192.168.246.143:3307 (admin/admin) 可視化查看後端狀態、QPS、延遲。proxy-read-only-backend-addresses = 192.168.246.135:3306@2 實現按權重分流。Atlas 以輕量、穩定、中文友好成為中小團隊落地 MySQL 讀寫分離的首選。結合主從 GTID 複制與 MHA 自動故障轉移,可構建高可用資料庫架構。