青蛙学Linux—ProxySQL配置系统

1、ProxySQL配置系统

ProxySQL有一个完备的配置系统,配置ProxySQL是基于SQL命令的方式进行的。ProxySQL支持配置修改之后的在线保存、应用,不需要重启即可使配置生效。

ProxySQL配置系统使用层级体系,分为以下三个层级:

  • RUNTIME
  • MEMORY
  • DISK/CONFIG FILE

图片1

ProxySQL将配置系统分为三个层级的目的:

  • 自动更新
  • 尽可能的不重启ProxySQL就可以修改配置
  • 方便回滚错误配置

每个层级的功能与含义如下:

  • RUNTIME:ProxySQL当前生效的正在使用的配置,是整个ProxySQL的顶层;在main库中的以runtime_开头的表就是RUNTIME层;RUNTIME中的配置是无法修改的,必须从下一层load进来
  • MEMORY:ProxySQL配置系统的中间层,上面承接生产层RUNTIME,下面承接持久化层DISK和CONFIG FILE;用户可以通过MySQL客户端连接到此接口(admin接口),然后可以通过命令查询不同的数据库和表,并修改各种配置,MEMORY可以认为是SQLite数据库在内存中的镜像;MEMORY是用户修改ProxySQL的唯一入口,一般来说修改一个配置时首先修改MEMORY,确认无误后接入RUNTIME层,最后持久化到DISK
  • DISK/CONFIG FILE:持久存储的配置,DISK对应的是ProxySQL数据目录下的proxysql.db,在ProxySQL启动时会从proxysql.db中加载信息;而ProxySQL的配置文件/etc/proxysql.cnf文件只在ProxySQL初次启动进行初始化时使用;配置修改完后必须save到硬盘,否则重启后配置将会丢失

注意:ProxySQL每一个配置项在三层中都存在,但是这三层是相互独立的,三份配置可能一样,也可能不一样。

2、ProxySQL的启动过程

当ProxySQL启动时,首先读取配置文件CONFIG FILE(/etc/proxysql.cnf),然后从该配置文件中获取datadir,datadir中配置的是SQLite的数据目录。如果该目录存在,且SQLite数据文件存在,那么正常启动,将SQLite中的配置项读进内存,并且加载进RUNTIME,用于初始化ProxySQL的运行。如果datadir目录下没有SQLite的数据文件,ProxySQL就会使用CONFIG FILE中的配置来初始化ProxySQL,并且将这些配置保存至数据库。SQLite数据文件可以不存在,/etc/proxysql.cnf文件也可以为空,但/etc/proxysql.cnf配置文件必须存在,否则,ProxySQL无法启动。

3、ProxySQL配置修改和保存

ProxySQL配置的新增和修改都是通过SQL语句在相关的表中添加或修改数据实现的,新增使用insert,修改使用update。

新增或修改的配置需要使用以下命令load到RUNTIME层:

load 配置表 to runtime;

永久保存配置:

save 配置表 to disk;

将RUNTIME层运行的配置拉取到MEMORY层:

load 配置表 to memory;

加载配置文件/etc/proxysql.cnf到MEMORY:

load 配置表 from config;

ProxySQL更多的配置帮助查看:https://github.com/sysown/proxysql/wiki

posted @ 2019-01-31 00:04  青蛙学Linux  阅读(304)  评论(0编辑  收藏  举报