HandlerSocket插件配置问题:安装后无法找到所需变量
我之前在Ubuntu 16.04搭配MariaDB环境下配置HandlerSocket时,也碰到过和你一模一样的问题——插件明明装好了,my.cnf里加了配置,重启后却找不到对应的变量。给你几个实用的排查和解决方向:
1. 检查配置项的位置和格式
首先要确保所有HandlerSocket的配置都放在[mysqld]区块下,别不小心写到[client]或者[mysql]段里了,MySQL只会加载[mysqld]里的服务端配置。
正确的配置示例应该是这样的:
[mysqld] # 动态加载插件的必要配置 plugin-load-add=handlersocket.so # HandlerSocket只读端口 handlersocket_port = 9998 # HandlerSocket读写端口 handlersocket_port_wr = 9999 # 只读线程数 handlersocket_threads = 16 # 读写线程数 handlersocket_threads_wr = 8
2. 确认插件与MariaDB版本的兼容性
Ubuntu 16.04默认的MariaDB版本是10.0.x,HandlerSocket插件对版本匹配要求很高,如果你的插件是从非官方源安装的,很可能出现版本不兼容,导致配置变量无法被识别。建议卸载现有插件,从MariaDB官方源安装对应版本的HandlerSocket插件。
3. 手动加载插件验证
可以先在MySQL命令行里手动加载插件,看看变量是否能正常出现:
INSTALL PLUGIN handlersocket SONAME 'handlersocket.so';
加载完成后,执行以下命令查看变量:
SHOW GLOBAL VARIABLES LIKE '%handlersocket%';
如果手动加载后能看到变量,说明问题出在my.cnf的插件加载配置上,可能是plugin-load-add(或plugin-load)的写法不对,或者配置没被MySQL读取到。
4. 查看错误日志找线索
重启MySQL后,去查看错误日志(默认路径是/var/log/mysql/error.log),里面会记录插件加载和配置解析的细节。比如如果出现Unknown variable 'handlersocket_port'的报错,要么是变量名写错了(部分新版本可能用hs_port替代handlersocket_port,可以试试),要么是插件根本没加载成功。
内容的提问来源于stack exchange,提问作者Tier

