| 方案 | 優點 | 缺點 | 推薦場景 |
| MySQL-Proxy + Lua | 靈活、可編程 | 單點、Lua 效能、社區維護弱 | 舊系統、簡單路由 |
| ProxySQL | 高效能、多執行緒、規則引擎、Web UI | 學習曲線 | 現代首選 |
| MaxScale | 企業級、監控、防火牆、Binlog 路由 | 商業授權 | 大規模、合規要求 |
| 應用層路由 | 無中間件、效能最好 | 程式碼侵入、維護成本 | 微服務、語言支援好 |
| VIP + Keepalived | 簡單、透明 | 無讀寫分離、故障切換慢 | 單主單從 |
ProxySQL 快速上手
-- 安裝
yum install proxysql2
-- 管理介面 (admin:admin)
mysql -u admin -padmin -h 127.0.0.1 -P 6032
-- 配置主從
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES
(10, '10.0.0.1', 3306), -- 寫入組
(20, '10.0.0.2', 3306), (20, '10.0.0.3', 3306); -- 讀取組
-- 路由規則:非事務 SELECT 走讀取組
INSERT INTO mysql_query_rules (rule_id, match_pattern, destination_hostgroup, apply)
VALUES (1, '^SELECT.*', 20, 1);
-- 事務強制寫入組
INSERT INTO mysql_query_rules (rule_id, match_pattern, destination_hostgroup, apply, flagIN)
VALUES (2, '^BEGIN', 10, 1, 0), (3, '^START TRANSACTION', 10, 1, 0);
LOAD MYSQL VARIABLES TO RUNTIME; SAVE MYSQL VARIABLES TO DISK;
- 上一篇文章: InnoDB 死鎖深度剖析:Next-Key Locking、索引鎖升級與 SQL 重構解決方案
- 下一篇文章: MySQL 導致 CPU 100% 根因排查:長連線洩漏、慢查詢與連線池配置實戰
Copyright ©
程式碼之家 All Rights Reserved