MySQL HandlerSocket插件安装配置教程

前端技术 2023/09/09 MYSQL

一、HandlerSocket是什么?
HandlerSocket是akira higuchi写的一个MySQL的插件。以MySQL Daemon Plugin的形式提供类似NoSQL的网络服务,通过这个插件,你可以直接跟MySQL后端的存储引擎做key-value式的交互,省去了MySQL上层的SQL解释、打开关闭表、创建查询计划等CPU开销。

目前使用MySQL的网站,多半同时使用Memcache作为键值缓存。虽然这样的架构极其流行,有众多成功的案例,但过于依赖Memcache,无形中让Memcache成为故障的根源:
Memcache数据一致性的问题:当MySQL数据变化后,如果不能及时有效的清理掉过期的数据,就会造成数据不一致。这在强调即时性的Web2.0时代,不可取。
Memcache崩溃后的雪崩效应:作为缓存的Memcache一旦崩溃,MySQL很可能在短时间内承受高负载而宕机。

注:关于清理过期数据的问题,可以在程序架构上想办法,如果数据操作有统一DAO封装的话,可以利用Observer模式来清理过期数据,非主题内容,资料自查。

面对以上问题,HandlerSocket项目是个不错的解决方案,它通过插件的方式赋予MySQL完整的NoSQL功能,从原理上讲,它跳过MySQL中最耗时的语法解析,查询计划等步骤,直接读取数据,如果内存够大,能装下索引,MySQL的查询效率能提高若干倍!
HandlerSocket:https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL
php-handlersocket:http://code.google.com/p/php-handlersocket/

系统信息约定:
系统版本:CentOS 6.3 X86
PHP安装目录:/usr/local/webserver/php5318
MySQL安装目录:/usr/local/webserver/mysql5520
HandlerSocket安装路径:/usr/local/webserver/handlersocket

二、安装配置HandlerSocket

安装之前建议你先安装相关支持及需要的组件包:

复制代码 代码如下:
yum install gcc gcc-c++ libtool make openssl-devel perl-DBI perl-DBD-MySQL
yum install rpm-build gperf readline-devel ncurses-devel time perl-Time-HiRes

1. 安装
如果使用Percona Server版本的MySQL就简单了,因为它已经内置了HandlerSocket支持,不过考虑到其内置的版本不够新,存在一些早已修复的BUG,所以最好采用源代码编译。HandlerSocket是基于MySQL数据库的,因此在安装HanderSocket前需要先按照常规方式部署MySQL服务,同时需注意HandlerSocket时需要MySQL的源码,因此还需要MySQL源码编译方式安装。

复制代码 代码如下:

[root@iredmail opt]# git clone https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL.git
[root@iredmail opt]# cd HandlerSocket-Plugin-for-MySQL
[root@iredmail HandlerSocket-Plugin-for-MySQL]# ./autogen.sh
[root@iredmail HandlerSocket-Plugin-for-MySQL]#./configure --prefix=/usr/local/webserver/handlersocket --with-mysql-source=/opt/mysql-5.5.20 --with-mysql-bindir=/usr/local/webserver/mysql5520/bin --with-mysql-plugindir=/usr/local/webserver/mysql5520/lib/mysql/plugin

Tips:
--with-mysql-source 指定MySQL源码所在目录
--with-mysql-bindir 表示MySQL二进制可执行文件目录
--with-mysql-plugindir 指定MySQL插件的存储路径,如果不清楚这个目录在哪,可以按如下方法查询:

复制代码 代码如下:
mysql> show variables like \'plugin%\';
+---------------+-------------------------------------------+
| Variable_name | Value                                     |
+---------------+-------------------------------------------+
| plugin_dir    | /usr/local/webserver/mysql5520/lib/plugin |
+---------------+-------------------------------------------+
1 row in set (0.00 sec)
[root@iredmail HandlerSocket-Plugin-for-MySQL]# make

常见错误:

复制代码 代码如下:
libtool: link: only absolute run-paths are allowed
make[2]: *** [handlersocket.la] Error 1
make[2]: Leaving directory `/opt/HandlerSocket-Plugin-for-MySQL/handlersocket\'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/HandlerSocket-Plugin-for-MySQL\'
make: *** [all] Error 2
解决方法:
[root@iredmail HandlerSocket-Plugin-for-MySQL]# vi handlersocket/Makefile
line 301:
$(handlersocket_la_LINK) -rpath $(pkgplugindir) $(handlersocket_la_OBJECTS) $(handlersocket_la_LIBADD) $(LIBS)
-->
$(handlersocket_la_LINK) -rpath /opt/HandlerSocket-Plugin-for-MySQL/handlersocket $( handlersocket_la_OBJECTS) $(handlersocket_la_LIBADD) $(LIBS)

[root@iredmail HandlerSocket-Plugin-for-MySQL]#make install

本文地址:https://www.stayed.cn/item/24497

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。