Percona 家的 ProxySQL 配置筆記

最近發現了 percona 自家網站的個推薦的 ProxySQL howto 在github.com有開源,並且還在持續更新。感覺commit者就是 percona自家的員工或領他家工資資助的人才。

大概記錄 對ProxySQL的瞭解。

  1. C++寫的,性能應該不是問題。 github地址
  2. 運行時分admin進程與proxy進程, 一般 6032 端口是 admin 進程。6033是proxy。
  3. admin的目標是熱配置生效,不必重啓proxy。能直接使用mysql客戶端簡單的sql操作生效。
  4. 整體配置可以從proxysql.cnf讀,admin配置可以從proxysql-admin.cnf 熱load進來。
  5. 配置爲runtime\memory\disk\config-file的多層管理概念,詳看官方wiki有介紹
  6. 配置以mysql的內存表方式存於內存,能通過 SAVE、LOAD 指令保存配置與加載配置。

舉個例子(坑):

第一次啓動時,讀取默認配置文件 /etc/proxysql.cnf 其中第一項是 datadir=”/var/lib/proxysql”
這時如何改了admin相關的變量,如:set admin-mysql_ifaces==”192.168.1.110:6032”;
這時要執行 SAVE ADMIN VARIABLES TO DISK; 指令,配置save到datadir目錄的文件了。
以後啓動都不會再讀取proxysql.cnf的配置。這點要注意。
PS: 不要學我例子改 admin-mysql_ifaces, admin帳號只允許用127.0.0.1 IP連接。
如果真的改了,只能刪除datadir目錄,重啓proxysql了。

說說幾個關鍵有配置項(或叫表)

  1. mysql_servers – 後端真實的mysql實例
  2. mysql_users – 連接proxySQL的用戶,以及連接後端mysql的用戶;注意兩者相同
  3. mysql_query_rules — 查詢規則,支持鏈式的多條規則。詳細看query rules wiki
  4. global_variables — 如表名,不解釋。wiki

三層配置生效關係指令:

save / local 指令 組合如下:

[SAVE | LOAD ]
[MYSQL USER | MYSQL SERVER | ADMIN VARIABLES | MYSQL VARIABLES | MYSQL QUERY RULES]
[ TO | FROM ]
[ MEMORY | RUNTIME | DISK | CONFIG];

總之,就是配置可以save或load。 方向上可以TO或FROM,目標與來源有4項。

想要配置生效(active),必需load進RUNTIME中。

  • LOAD MYSQL USERS TO RUNTIME;
  • LOAD MYSQL SERVERS TO RUNTIME;
  • LOAD MYSQL QUERY RULES TO RUNTIME;
  • LOAD MYSQL VARIABLES TO RUNTIME;
  • LOAD ADMIN VARIABLES TO RUNTIME;

要持久化,必需SAVE進DISK:

  • SAVE MYSQL USERS TO DISK;
  • SAVE MYSQL SERVERS TO DISK;
  • SAVE MYSQL QUERY RULES TO DISK;
  • SAVE MYSQL VARIABLES TO DISK;
  • SAVE ADMIN VARIABLES TO DISK;

配置 後端的 mysql,至少到配置2個表, 與授權一個moniter用戶 的數據。

  1. mysql_servers
  2. mysql_users
  3. mysql_replication_hostgroups 最好連這個表也配置一下。
  4. grant select ON . TO ‘monitor ‘@’$proxysql_ip’ identified by ‘monitor’;

1與2項,直接使用insert sql 插入即可。插入後還要Load TO RUNTIME 才生效。
只有monitor正確了, 才能正常代理mysql協議到後端。

查看是否有monitor連接出錯:
SELECT * FROM monitor.mysql_server_connect_log ORDER BY time_start_us DESC LIMIT 10;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章