MySQL ProxySQL routing lab 的核心責任是讓讀者看到 database proxy 如何把 application query 導向不同 hostgroup。這篇承接 ProxySQL Config

本文的驗收標準是:你能定義 writer / reader hostgroup、建立 query rule、觀察 routing stats,並寫下 stale read 與 failover 風險。

Hostgroup Model

Hostgroup model 的核心責任是把 backend 分成 writer 與 reader。

1hostgroup 10: writer
2hostgroup 20: reader

在單節點 lab 中,writer / reader 可以先指向同一 MySQL;正式環境應用 replica 作 reader,並搭配 replication lag guard。

Query Rule

Query rule 的核心責任是示範 routing policy。

1-- Conceptual ProxySQL admin commands. Adjust host / credential for your lab.
2INSERT INTO mysql_query_rules(rule_id, active, match_pattern, destination_hostgroup, apply)
3VALUES
4  (10, 1, '^SELECT', 20, 1),
5  (20, 1, '.*', 10, 1);
6LOAD MYSQL QUERY RULES TO RUNTIME;
7SAVE MYSQL QUERY RULES TO DISK;

這個規則把 SELECT 導向 reader,其餘導向 writer。Production 要排除 SELECT ... FOR UPDATE、transaction、read-after-write 與 session state。

Routing Evidence

Routing evidence 的核心責任是確認 query 真的走到預期 hostgroup。

1SELECT hostgroup, srv_host, Queries
2FROM stats_mysql_connection_pool;
3
4SELECT rule_id, hits
5FROM stats_mysql_query_rules
6ORDER BY rule_id;

Evidence 要和 application log 對齊。若某個 workflow 寫後立刻讀,routing rule 要保證它走 writer 或具備 freshness policy。

Failure Note

Failure note 的核心責任是記錄 proxy 常見風險。

風險控制方式
Stale readlag guard、read-after-write to writer
Transaction splittransaction pinning、query rule review
Bad regexquery digest / allowlist
Backend unhealthyhealth check、hostgroup failover
Credential driftProxySQL user sync / secret rotation

完成本篇後,完整設定讀 ProxySQL Config;replica 與 failover 讀 Replication Failover Lab