视频:《MySQL ProxySQL 管理实战》

库介绍

  • main :ProxySQL最主要的库,修改配置时使用的库,它是一个内存数据库系统。所以,修改main库中的配置后,必须将其持久化到disk上才能永久保存。
  • disk :磁盘数据库,该数据库结构和内存数据库完全一致。当持久化内存数据库中的配置时,其实就是写入到disk库中。磁盘数据库的默认路径为$DATADIR/proxysql.db。
  • stats :统计信息库。这个库包含了ProxySQL收集的关于其内部功能的指标。通过这个数据库,可以知道触发某个计数器的频率,通过ProxySQL的SQL执行次数等等。
  • monitor :监控后端MySQL节点相关的库,该库中只有几个log类的表,监控模块收集到的监控信息全都存放到对应的log表中。
  • stats_history:用于存放历史统计数据。

配置文件

[root@proxySQL ~]# rpm -ql proxysql
/etc/proxysql.cnf

多层配置系统

多层配置的目的为了方便在线配置、在线生效、确保在零停机的状态下做配置变更。主要分三层:

ProxySQL 体系结构介绍(2)_读写分离 proxysql

  • Runtime: 内容无法直接修改
  • Memory:mysql_servers ;mysql_users ;mysql_query_rules;global_variables ;mysql_collations
  • Disk&Configuration File:

配置变更如何生效

ProxySQL 体系结构介绍(2)_MySQL_02

ProxySQL接收到LOAD <item> FROM CONFIG命令时,其预期行为如下:

  • 如果配置文件和内存表中都存在已加载的条目,则LOAD <item> FROM CONFIG将会覆盖内存表中已配置的条目
  • 如果配置文件中存在但内存表中不存在已加载的条目,则LOAD <item> FROM CONFIG将会将该条目添加到内存表中
  • 如果内存表中存在但配置文件中不存在的条目,则LOAD <item> FROM CONFIG不会从内存表中删除该条目。

Activate / Persist MySQL Users:

# Active current in-memory MySQL User configuration
LOAD MYSQL USERS TO RUNTIME;

# Save the current in-memory MySQL User configuration to disk
SAVE MYSQL USERS TO DISK;

Activate / Persist MySQL Servers and MySQL Replication Hostgroup:

# Active current in-memory MySQL Server and Replication Hostgroup configuration
LOAD MYSQL SERVERS TO RUNTIME;

# Save the current in-memory MySQL Server and Replication Hostgroup configuration to disk
SAVE MYSQL SERVERS TO DISK;

Activate / Persist MySQL Query Rules:

# Active current in-memory MySQL Query Rule configuration
LOAD MYSQL QUERY RULES TO RUNTIME;

# Save the current in-memory MySQL Query Rule configuration to disk
SAVE MYSQL QUERY RULES TO DISK;

Activate / Persist MySQL Variables:

# Active current in-memory MySQL Variable configuration
LOAD MYSQL VARIABLES TO RUNTIME;

# Save the current in-memory MySQL Variable configuration to disk
SAVE MYSQL VARIABLES TO DISK;

Activate / Persist ProxySQL Admin Variables:

# Active current in-memory ProxySQL Admin Variable configuration
LOAD ADMIN VARIABLES TO RUNTIME;

# Save the current in-memory ProxySQL Admin Variable configuration to disk
SAVE ADMIN VARIABLES TO DISK;