目錄
ProxySQL
安裝

連接ProxySQL


ProxySQL 運行機制
RUNTIME
MEMORY
mysql_servers - ProxySQL連接到的后端服務器列表
mysql_users - 連接到ProxySQL的用戶及其憑據列表。 請注意,ProxySQL也將使用相同的憑據連接到后端服務器!
mysql_query_rules - 將流量路由到各種后端服務器時評估的查詢規則列表。 這些規則還可以重寫查詢,甚至可以緩存已執行查詢的結果。
global_variables - 代理配置使用的全局變量列表,可在運行時調整。
DISK 和 CONFIG FILE

啟動過程
配置文件有4個變量,即使存在proxysql.db,也始終會從配置文件里去解析:
1. datadir:
定義了ProxySQL datadir的路徑,其中存儲了數據庫文件,日志和其他文件
2. restart_on_missing_heartbeats(1.4.4中的新增內容):
如果MySQL線程錯過了restart_on_missing_heartbeats心跳,則proxysql將引發SIGABRT信號並重新啟動。 默認值為10。
詳情請見:https://github.com/sysown/proxysql/wiki/Watchdog。
3. execute_on_exit_failure(1.4.4中的新增內容):
如果設置,ProxySQL父進程將在每次ProxySQL崩潰時執行定義的腳本。 建議使用此設置生成警報或記錄事件。
請注意,在崩潰的情況下,proxysql能夠在幾毫秒內重新啟動,因此其他監視工具可能無法檢測到正常故障。
4. errorlog(2.0.0中的新增內容):
如果設置,ProxySQL將使用定義的文件作為錯誤日志。 如果未傳遞此類變量,則errolog將位於datadir / proxysql.log中
初始化啟動過程(或--initial)
重新加載啟動(或--reload)
如果使用--reload標志執行proxysql,它會嘗試將配置文件中的配置與數據庫文件的內容合並。 之后,ProxySQL將繼續啟動程序。
如果配置文件和數據庫文件的參數存在沖突,則無法保證ProxySQL將成功管理合並,用戶應始終驗證合並結果是否符合預期。
核心配置表
mysql> show tables; +-------------------+ | tables | +-------------------+ | mysql_servers | | mysql_users | | mysql_query_rules | | global_variables | | mysql_collations | | debug_levels | +-------------------+
每個這樣的表都有明確的定義:
mysql_servers: 包含要連接的ProxySQL的后端服務器列表
mysql_users: 包含ProxySQL將用於向后端服務器進行身份驗證的用戶列表
mysql_query_rules: 包含用於緩存,路由或重寫發送到ProxySQL的SQL查詢的規則
global_variables: 包含在服務器初始配置期間定義的MySQL變量和管理變量
debug_levels: 僅用於調試ProxySQL的手動構建
在不同層級間移動配置信息

要重新配置MySQL用戶,請執行以下命令之一:
[1] LOAD MYSQL USERS FROM MEMORY / LOAD MYSQL USERS TO RUNTIME
將MySQL用戶從MEMORY加載到RUNTIME數據結構,反之亦然
[2] SAVE MYSQL USERS TO MEMORY / SAVE MYSQL USERS FROM RUNTIME
將MySQL用戶從RUNTIME保存到MEMORY
[3] LOAD MYSQL USERS TO MEMORY / LOAD MYSQL USERS FROM DISK
將持久化的MySQL用戶從磁盤數據庫加載到MEMORY
[4] SAVE MYSQL USERS FROM MEMORY / SAVE MYSQL USERS TO DISK
將MySQL用戶從MEMORY中保存到DISK
[5] LOAD MYSQL USERS FROM CONFIG
從配置文件加載用戶到MEMORY
常用的命令參考:
LOAD MYSQL USERS TO RUNTIME; SAVE MYSQL USERS TO DISK; LOAD MYSQL SERVERS TO RUNTIME; SAVE MYSQL SERVERS TO DISK; LOAD MYSQL QUERY RULES TO RUNTIME; SAVE MYSQL QUERY RULES TO DISK; LOAD MYSQL VARIABLES TO RUNTIME; SAVE MYSQL VARIABLES TO DISK; LOAD ADMIN VARIABLES TO RUNTIME; SAVE ADMIN VARIABLES TO DISK; 注意:關鍵字MEMORY/RUNTIME 都支持縮寫: MEM for MEMORY RUN for RUNTIME
故障排除
常用的一些命令技巧
1. 限制ProxySQL到后端MySQL的連接數通過權重,來控制ProxySQL到后端MySQL的訪問量


2. 自動回避復制延遲較大的節點

3. Master Slave,將Master作為Slave的備用讀節點
注意:max_replication_lag僅適用於從節點。 如果服務器未啟用復制,則Monitor不會執行任何操作。

4. 優雅的禁用后端Server

5. 立即禁用后端Server


6. 重新啟用脫機/禁用后端Server


7. 刪除后端Server

8. 將明文密碼轉換成Hash密碼,配置到ProxySQL中的mysql_users表


9. 限制User和ProxySQL之間的連接數

10. 同個事務內的SQL,禁止被路由到不同節點上

