2019-11-18
原文地址: https://www.percona.com/blog/2019/09/27/multiplexing-mux-in-proxysql/
直接上我在生產環境的配置過程:
登錄到proxysql集羣的任意節點的管理控制檯,執行下面的操作:
Admin> SELECT DISTINCT digest, digest_text FROM stats_mysql_query_digest WHERE digest_text LIKE '%@%'; -- 查看當前sql明細和摘要情況 Admin> SELECT DISTINCT 1,digest,2,0 FROM stats_mysql_query_digest WHERE digest_text LIKE '%@%'; -- 查看sql指紋 +---+--------------------+---+---+ | 1 | digest | 2 | 0 | +---+--------------------+---+---+ | 1 | 0x928841C8AEDD64F9 | 2 | 0 | | 1 | 0x9771AB06EF4857A5 | 2 | 0 | | 1 | 0xA9919C0B1C3491E6 | 2 | 0 | | 1 | 0xEDF9C60BDFD2F5B0 | 2 | 0 | | 1 | 0x226CD90D52A2BA0B | 2 | 0 | | 1 | 0x82A12D4C4E7B0A28 | 2 | 0 | | 1 | 0xA072D1AB0FD3C016 | 2 | 0 | | 1 | 0x7CDEEF2FF695B7F8 | 2 | 0 | +---+--------------------+---+---+ 8 rows in set (0.01 sec) -- 在proxysql中插入sql改寫規則 Admin> INSERT INTO mysql_query_rules(active,digest,multiplex,apply) SELECT DISTINCT 1,digest,2,0 FROM stats_mysql_query_digest WHERE digest_text LIKE '%@%'; select * from mysql_query_rules ; Admin> select rule_id,digest,multiplex,apply,comment from mysql_query_rules ; +---------+--------------------+-----------+-------+---------+ | rule_id | digest | multiplex | apply | comment | +---------+--------------------+-----------+-------+---------+ | 1 | 0x928841C8AEDD64F9 | 2 | 0 | NULL | | 2 | 0x9771AB06EF4857A5 | 2 | 0 | NULL | | 3 | 0xA9919C0B1C3491E6 | 2 | 0 | NULL | | 4 | 0xEDF9C60BDFD2F5B0 | 2 | 0 | NULL | | 5 | 0x226CD90D52A2BA0B | 2 | 0 | NULL | | 6 | 0x82A12D4C4E7B0A28 | 2 | 0 | NULL | | 7 | 0xA072D1AB0FD3C016 | 2 | 0 | NULL | | 8 | 0x7CDEEF2FF695B7F8 | 2 | 0 | NULL | +---------+--------------------+-----------+-------+---------+ 8 rows in set (0.00 sec) -- 將配置load到內存生效,並持久化到文件 Admin> LOAD MYSQL QUERY RULES TO RUNTIME; Admin> SAVE MYSQL QUERY RULES TO DISK; Admin> select * from runtime_mysql_query_rules ; -- 確認是否生效
執行完上述操作後,我們稍等片刻看下grafana監控,如下:
我這裏降低不明顯的原因是: 我pxc上的業務請求比較少,都是些內部服務,因此產生的sql指紋也比較少,如果對於一個非常繁忙的pxc集羣而言,我們在前面的proxysql做了上述的多路複用配置後,可以大幅度降低後端pxc節點的連接數。