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;

你可能感兴趣的:(mysql)