ProxySQL 管理界面:服务器、用户、规则和变量配置。
1.6K
ProxySQL Admin UI 是一个基于 ASP.NET Core .NET 10、Razor Components 和 Interactive Server 的 ProxySQL Web 管理界面。应用通过 ProxySQL Admin 接口管理配置并读取运行统计;启用 Galera 仲裁权重功能后,会使用独立凭据直连 ProxySQL Runtime Galera 拓扑中的节点。
当前版本:v0.7
Swashbuckle.AspNetCore 10.2.3linux/amd64 和 linux/arm64 两种架构,并发布 v0.7、带构建时间的完整版本号和 latest 标签mysql_servers、mysql_users、mysql_query_rules 和全局变量LOAD ... TO RUNTIME 与 SAVE ... TO DISKmain、runtime、disk 三层配置;runtime 和 disk 为只读视图pc.weight 仲裁权重ConnFree),不会中断正在使用的 ConnUsed 连接cache_ttl,查看 ProxySQL 查询缓存全局统计,并可手动清空查询缓存/health 健康检查端点Caution
本应用可以修改线上 ProxySQL 的路由、认证和全局变量配置,也可以修改 Galera 节点进程当前生效的仲裁权重。生产环境请限制 Web 界面访问来源,使用专用管理账号,并在执行写操作前确认 Main、Runtime、Disk 三层状态和回滚方案。
启动容器并配置 ProxySQL Admin 连接:
docker volume create proxysql-admin-ui-data
docker run -d --restart unless-stopped \
--name proxysql-admin-ui \
-p 8001:8001 \
-e APP_DB_PATH=/app/data \
-e PAI_PROXYSQL='Server=host.docker.internal;Port=6032;Uid=radmin;Pwd=CHANGE_ME;ConnectionReset=False;Pooling=True;ConnectionLifeTime=3000000;' \
-v proxysql-admin-ui-data:/app/data \
amwpfiqvy/proxysql-admin-ui:v0.7
启动后访问:http://localhost:8001
host.docker.internal 用于从容器访问 Docker 宿主机上的 ProxySQL。如果 ProxySQL 位于其他服务器,请将 Server 改为实际地址;如果两者位于同一个 Docker Compose 网络,可以使用 ProxySQL 服务名。
如需启用 Galera 仲裁权重功能,再增加以下两个环境变量:
-e PAI_GALERA_USERNAME='galera_admin' \
-e PAI_GALERA_PASSWORD='CHANGE_ME'
这两个变量只提供节点管理凭据。实际节点地址来自 ProxySQL Runtime Galera Hostgroup 成员,容器必须能够访问这些节点的 MySQL 端口。
services:
proxysql-admin-ui:
image: amwpfiqvy/proxysql-admin-ui:v0.7
container_name: proxysql-admin-ui
restart: unless-stopped
ports:
- "8001:8001"
environment:
ASPNETCORE_ENVIRONMENT: Production
ASPNETCORE_URLS: http://+:8001
APP_DB_PATH: /app/data
PAI_PROXYSQL: Server=proxysql;Port=6032;Uid=radmin;Pwd=CHANGE_ME;ConnectionReset=False;Pooling=True;ConnectionLifeTime=3000000;
# 以下两项可选,必须同时配置
PAI_GALERA_USERNAME: galera_admin
PAI_GALERA_PASSWORD: CHANGE_ME
volumes:
- proxysql-admin-ui-data:/app/data
volumes:
proxysql-admin-ui-data:
如果使用绑定挂载代替命名卷,请确保挂载目录对容器运行用户可写。
身份数据库中没有用户时,应用会创建固定用户名 admin 的 Web 管理员,并生成一个 14 位随机初始密码。密码字符范围为:
A-Z a-z 0-9 _ %
登录页会显示初始用户名和密码。管理员成功修改密码后,初始凭据提示会自动删除。
应用不会从环境变量读取 Web 管理员用户名或固定初始密码。已有身份数据库不会在容器重启或升级时重置管理员密码。
当 APP_DB_PATH=/app/data 时,数据卷中包含:
db/app.db:Web 管理员身份数据库db/initial-login.json:尚未修改密码时的临时初始凭据提示升级或替换容器时应保留该数据卷。不要把 initial-login.json 上传、提交或公开;管理员修改密码后应用会自动删除它。
| 环境变量 | 必需 | 说明 |
|---|---|---|
PAI_PROXYSQL | 是 | ProxySQL Admin 连接字符串,通常使用 Admin 端口 6032 |
PAI_GALERA_USERNAME | 否 | Galera 节点管理用户名;与 PAI_GALERA_PASSWORD 同时配置后启用仲裁权重功能 |
PAI_GALERA_PASSWORD | 否 | Galera 节点管理密码;与 PAI_GALERA_USERNAME 同时配置后启用仲裁权重功能 |
APP_DB_PATH | 建议 | 身份数据库和 initial-login.json 的根目录;容器部署建议设为 /app/data 并挂载持久化卷 |
ASPNETCORE_URLS | 否 | Web 监听地址,镜像默认使用 8001 端口 |
环境变量中的双下划线 __ 对应 .NET 配置中的层级分隔符。
pc.weight。mysql_servers.weight;“Galera 仲裁权重”对应节点 wsrep_provider_options 中的 pc.weight,两者不会互相替代。hostname:port 出现在多个 Hostgroup 时,一次页面刷新只读取一次并共享显示结果。Primary / Synced / Ready / Connected 状态仅用于展示,不作为修改条件。ConnFree);Hostgroup 筛选只影响页面显示,不限制释放范围,正在使用的 ConnUsed 连接不会被中断。操作只临时调整 Runtime 的 mysql-free_connections_pct,不会保存到 Disk,并会恢复操作前的 Main 与 Runtime 值。LOAD MYSQL VARIABLES TO RUNTIME。如果检测到其他尚未发布的 Main MySQL 变量变更,应用会拒绝操作,避免把无关配置一并加载到 Runtime。ConnFree 也不会强行映射到某个前端会话。COUNT(*) 和 LIMIT/OFFSET 服务端分页,10 / 20 / 50 / 100 / 200 仅表示单页行数。mysql-query_cache_size_MB 而自动缓存所有查询。只有命中 Runtime 查询规则且规则设置 cache_ttl > 0 的查询才会进入缓存;没有缓存规则时,缓存条目、命中次数和内存占用均为 0。| 架构 | 状态 |
|---|---|
linux/amd64 | 支持 |
linux/arm64 | 支持 |
GET http://localhost:8001/health
返回 HTTP 200 表示 Web 应用进程可以响应请求。该端点不检查 ProxySQL Admin 或 Galera 节点的连通性。
Content type
Image
Digest
sha256:5310dada7…
Size
88.3 MB
Last updated
20 days ago
docker pull amwpfiqvy/proxysql-admin-ui