目錄
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,禁止被路由到不同節點上
