作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!
- cnblogs博客
- zhihu
- Github
- 公众号:一本正经的瞎扯
一个后端服务的性能不好,我怀疑是数据库拖慢了性能,为了便于不侵入代码而对性能进行分析,我尝试了 proxysql 组件:
在 mysql 客户端和 mysql 服务器之间搭建 proxysql 代理服务,通过 proxy 来记录日志、分析性能、做缓存。
如下是使用过程:
部署
配置文件
如下是配置文件的格式: proxysql.cnf- datadir="/var/lib/proxysql"
- errorlog="/log/proxysql.log"
- admin_variables=
- {
- admin_credentials="admin:admin" # 管理员账号
- mysql_ifaces="0.0.0.0:6032" # mysql 协议管理端口
- }
- mysql_variables=
- {
- threads=4
- max_connections=2048
- interfaces="0.0.0.0:6033" # 代理端口
- default_schema="information_schema"
- monitor_username="monitor"
- monitor_password="monitor"
- #
- mysql-eventslog_filename="/log/events.log"
- mysql-eventslog_format=2 # JSON(可选)
- mysql-eventslog_default_log=1 # 全量记录(可选)
- }
- # 先留空:你后面可用管理端口 6032 动态写入后端/用户/规则
- mysql_servers =
- (
- )
- mysql_users =
- (
- )
复制代码 启动服务
- docker run -d --rm --name proxysql \
- --network host \
- --cpus=1 -m=1024m \
- -p 6032:6032 -p 6033:6033 \
- -v "./proxysql.cnf:/etc/proxysql.cnf:ro" \
- -v "./data:/var/lib/proxysql" \
- -v "./log/":/log/ \
- proxysql/proxysql:latest
复制代码 配置规则
使用写入 sql 的方式来配置: config.sh
[code]#!/usr/bin/env bashset -euo pipefail# ===== ProxySQL 管理端连接信息 =====PROXYSQL_HOST="${PROXYSQL_HOST:-127.0.0.1}" ROXYSQL_PORT="${PROXYSQL_PORT:-6032}" ROXYSQL_ADMIN_USER="${PROXYSQL_ADMIN_USER:-admin}" ROXYSQL_ADMIN_PASS="${PROXYSQL_ADMIN_PASS:-admin}"# ===== 你要创建/更新的业务用户 =====APP_USER="${APP_USER:-app}"APP_PASS="${APP_PASS:-app_pw}"DEFAULT_HOSTGROUP="${DEFAULT_HOSTGROUP:-10}"mysql -h "${PROXYSQL_HOST}" -P "${PROXYSQL_PORT}" \ -u "${PROXYSQL_ADMIN_USER}" -p"${PROXYSQL_ADMIN_PASS}" \ --protocol=tcp --batch --raw --silent |