世界上只有一种英雄主义,就是看清生活的真相之后依然热爱生活!

MySQL 高性能中间件 ProxySQL 初步了解和安装

2019-07-25
167次查阅
2019/7/25

ProxySQL的功能和特性这里不记录,网上好文章很多,这里记录的只适用于我个人查阅的资料。

ProxySQL多层配置系统介绍:

  • RUNTIME:当前生效的配置,proxysql 运行中线程处理请求时使用的配置文件(数据),无法直接修改RUNTIME的配置内容,需要从下层配置应用到runtime上。
  • MEMORY:(main表)提供用户动态修改配置数据,通过 MySQL 兼容接口查询 proxysql 的配置表或库。
  • DISK:是一个在磁盘上的 SQLite3 数据库,默认位置为 $(DATADIR)/proxysql.db。重启时,没有持久化到磁盘的内存配置会丢失,因此有必要将内存中的配置持久化到DISK
  • CONFIG:就是 proxysql.cnf,第一次启动时读取的配置文件,第一次启动之后以后不在用到。

官方网址:

安装

使用 yum 安装方式:

cat <<EOF | tee /etc/yum.repos.d/proxysql.repo
[proxysql_repo]
name= ProxySQL
baseurl=http://repo.proxysql.com/ProxySQL/proxysql-2.0.x/centos/\$releasever
gpgcheck=1
gpgkey=http://repo.proxysql.com/ProxySQL/repo_pub_key
EOF
yum clean all
yum makecache
yum install proxysql -y
# 启动
chkconfig --add proxysql
service proxysql start

proxysql的目录结构:

  • 数据目录:/var/lib/proxysql/
                     proxysql.db:配置数据存储文件,后端数据库的账号、密码、路由等存储在这个数据库里面。
                     proxysql.log:此文件是日志文件。
                     proxysql.pid:此文件是是进程pid文件。
  • 配置文件目录:/etc/proxysql.cnf,是一些静态配置项,用来配置一些启动选项。此配置文件只在第一次启动的时候读取进行初始化,后面只读取proxysql.db文件。
  • 启动脚本:/etc/init.d/proxysql

proxysql 的默认管理端口是 6032,客户端服务端口是 6033。默认的用户名密码都是 admin,可以在配置文件里看到。

使用MySQL客户端连接管理:

mysql -uadmin -padmin -h127.0.0.1 -P 6032

ProxySQL默认有五个数据库:

mysql> show databases;
+-----+---------------+-------------------------------------+
| seq | name          | file                                |
+-----+---------------+-------------------------------------+
| 0   | main          |                                     |
| 2   | disk          | /var/lib/proxysql/proxysql.db       |
| 3   | stats         |                                     |
| 4   | monitor       |                                     |
| 5   | stats_history | /var/lib/proxysql/proxysql_stats.db |
+-----+---------------+-------------------------------------+

对每个库的功能介绍如下:

  • main库:内存配置数据库,表里存放后端 db 实例、用户验证、路由规则等信息。表名以runtime_开头的表示 proxysql 当前运行的配置内容,不能通过 dml 语句修改,只能修改对应的不以runtime_ 开头的(在内存)里的表,然后LOAD使其生效, SAVE使其存到硬盘以供下次重启加载。
  • disk库:是持久化到硬盘的配置库,对应/var/lib/proxysql/proxysql.db文件,也就是 sqlite 的数据文件。
  • stats库:是 proxysql 运行抓取的统计信息库,包括到后端各命令的执行次数、流量、processlist、查询种类汇总/执行时间等等。
  • monitor库:存储 monitor 模块收集的信息,主要是对后端 db 的健康、延迟检查。

ProxySQL配置文件的修改流程一般是:

1、第一次启动时候,修改必要的CONFIG FILE配置。
2、以后配置修改MEMORY中的表,然后加载到RUNTIME并保存到DISK持久化。

修改配置的命令(以main.mysql_users为例):

-- 将修改后的配置(memory层)加载为生效配置。
LOAD MYSQL USERS TO RUNTIME           -- 让配置生效(常用)
LOAD MYSQL USERS FROM MEMORY

-- 将生效配置数据复制到 memory 中
SAVE MYSQL USERS TO MEMORY
SAVE MYSQL USERS FROM RUNTIME

-- 将磁盘中持久化的配置复制到 memory 中
LOAD MYSQL USERS TO MEMORY
LOAD MYSQL USERS FROM DISK

-- 将 memoery 中的配置保存到磁盘数据文件
SAVE MYSQL USERS TO DISK               -- 保存配置(常用)
SAVE MYSQL USERS FROM MEMORY

-- 将配置文件中的配置加载到 memeory 中
LOAD MYSQL USERS FROM CONFIG

1条评论

想说点什么?