14.2.3 管理端口与管理接口
管理端口与管理接口是ProxySQL的控制平面入口,默认端口为6032(业务端口为6033)。它使用MySQL协议对外提供配置、运维与统计查询能力,承载“修改配置表 → LOAD到运行时 → SAVE持久化”的安全流程,避免直接影响业务流量。
原理草图(控制平面与数据平面解耦):
管理端口连接与基础检查(示例命令与解释):
# 1) 连接管理端口(默认用户: admin/管理员密码)
# -h:ProxySQL管理IP;-P:管理端口6032;-u/-p:管理账号
mysql -h 127.0.0.1 -P 6032 -u admin -p
# 2) 查看版本与运行状态
SELECT * FROM global_variables WHERE variable_name IN ('admin-version','mysql-version');
# 3) 查看配置表与运行时表
SHOW TABLES FROM main; -- 配置表所在库
SHOW TABLES FROM stats; -- 统计表所在库
SHOW TABLES FROM runtime; -- 运行时表所在库
示例:新增后端并生效(完整可执行流程)
-- 1) 在配置表中新增后端
INSERT INTO mysql_servers(hostgroup_id, hostname, port, weight, max_connections)
VALUES (10, '10.0.0.11', 3306, 100, 200);
-- 2) 加载到运行时
LOAD MYSQL SERVERS TO RUNTIME;
-- 3) 验证运行时
SELECT hostgroup_id, hostname, port, weight, status
FROM runtime_mysql_servers;
-- 4) 持久化到磁盘
SAVE MYSQL SERVERS TO DISK;
示例:新增管理账号与限制权限
-- 在配置表中新增管理员账号
INSERT INTO mysql_users(username, password, active, default_hostgroup, transaction_persistent)
VALUES ('ops_readonly', 'StrongPass#2024', 1, 10, 1);
-- 仅允许查询统计库(最小权限思路:运维侧使用只读账号)
-- ProxySQL权限为策略配置,不同版本可通过 mysql_users 中的 attributes 控制
UPDATE mysql_users
SET attributes='{"access":"stats_only"}'
WHERE username='ops_readonly';
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;
统计与巡检示例(命令+预期用途)
-- 连接池状态与后端健康
SELECT hostgroup, srv_host, srv_port, ConnUsed, ConnFree, Status
FROM stats_mysql_connection_pool;
-- 规则命中率
SELECT rule_id, hits, match_pattern
FROM stats_mysql_query_rules
ORDER BY hits DESC LIMIT 10;
-- 命令计数器(排查是否有异常命令风暴)
SELECT * FROM stats_command_counters;
安全加固与访问控制(系统层示例)
# 仅允许管理网段访问6032
iptables -A INPUT -p tcp -s 10.0.0.0/24 --dport 6032 -j ACCEPT
iptables -A INPUT -p tcp --dport 6032 -j DROP
# 确认端口监听
ss -lntp | grep 6032
常见排错场景与处理
1) 无法连接管理端口
- 检查端口监听:ss -lntp | grep 6032
- 检查防火墙:iptables -L -n | grep 6032
- 检查配置:grep -n "admin" /etc/proxysql.cnf
2) 修改配置未生效
- 是否执行 LOAD ... TO RUNTIME
- 是否看错库:配置表在 main,运行时在 runtime
3) 重启后配置丢失
- 是否执行 SAVE ... TO DISK
- 磁盘库文件:/var/lib/proxysql/proxysql.db 是否可写
练习
1) 使用管理端口新增一个hostgroup=20的后端,并验证运行时表。
2) 创建只读运维账号,限制只能访问统计库并验证查询。
3) 模拟配置未生效的故障(只INSERT不LOAD),记录排错步骤与命令。