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 <code><strong>[proxysql_repo]</strong> 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</code> 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
THE END
暂无评论内容