前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HandlerSocket简介及安装及卸载

HandlerSocket简介及安装及卸载

作者头像
全栈程序员站长
发布2022-09-23 11:13:15
2650
发布2022-09-23 11:13:15
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

HandlerSocket是日本人akira higuchi 写的一个MySql的插件。通过这个插件,你可以直接跟MySQL后端的存储引擎做key-value式的交互,省去了MySQL上层的SQL解释、打开关闭表、创建查询计划等CPU开销。按照作者给出的数据可以在数据全部在内存的情况下可以达到75W的QPS查询。总之,它对mysql数据库的操作比mysql本身的操作语句快很多。

  适用场景:

  Innodb引擎、按主键、unique key或索引搜索(也就是说它的SQL的where条件必须是这些);支持limit 语句、IN、INSERT/UPDATE/DELETE。

  1.没有主键、unique key或索引搜索不行!

  2.表必须是Innodb引擎

安装HandlerSocket

mysql需要5.1或者以后版本。

1.下载

http://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL

获取 ahiguti-HandlerSocket-Plugin-for-MySQL-1.0.6-71-g159ea6d.tar.gz

上传到LINUX目录/usr/local/src/ 下

mysql 5.15.1之后的版本只能用hangdlersocket1.1.1之后的版本 否则make时会报错。

1.1.1版本下载地址:

https://github.com/DeNA/HandlerSocket-Plugin-for-MySQL/releases

2.安装

代码语言:javascript
复制
cd /usr/local/src/tar zvfx ahiguti-HandlerSocket-Plugin-for-MySQL-1.0.6-71-g159ea6d.tar.gzcd ahiguti-HandlerSocket-Plugin-for-MySQL-159ea6d/ ./autogen.sh./configure --with-mysql-source=/usr/local/src/mysql-5.1.47 --with-mysql-bindir=/usr/local/app/mysql/bin/ --with-mysql-plugindir=/usr/local/app/mysql/lib/mysql/plugin/ --prefix=/usr/local/app/mysql

注:plugindir的对应目录一定要提前创建好 plugin目录 或者找到mysql自带的plugin目录 总之就是要路径对应起来 否则会报错误

libtool: link: only absolute run-paths are allowed

其中

–with-mysql-source MYSQL源码目录

–with-mysql-binddir MYSQL安装后的BIN目录

–with-mysql-plugindir MYSQL安装后PLUGIN的目录

(***************小插曲************************

笔者在configure的时候遇到的问题:

checking mysql source… yes: Using /usr/local/src/mysql-5.1.47, version 5.1.47 checking for mysql_config… /usr/bin/mysql_config checking mysql binary… yes: Using /usr/bin/mysql_config, version 5.0.77 configure: error: MySQL source version does not match MySQL binary version

是默认的/usr/bin/mysql_config与mysql-5.1.47源码版本不一样,所以做一下补充:

cp /usr/local/app/mysql/bin/mysql_config /usr/bin/mysql_config

************************************************************)

编译安装:

代码语言:javascript
复制
makemake install

添加配置

代码语言:javascript
复制
vi /etc/my.cnf

增加如下选项:

[mysqld]

plugin-load=handlersocket.so

loose_handlersocket_port = 9998

# the port number to bind to (forread requests) loose_handlersocket_port_wr = 9999 # the port number to bind to (for write requests) loose_handlersocket_threads = 16 # the number of worker threads (for read requests) loose_handlersocket_threads_wr = 1 # the number of worker threads (for write requests) open_files_limit = 65535 # to allow handlersocket accept many concurrent # connections, make open_files_limit as large as # possible.

然后使用root登录MYSQL

代码语言:javascript
复制
mysql -u root -h localhost -p 

在MYSQL控制台中执行命令

代码语言:javascript
复制
mysql> install plugin handlersocket soname 'handlersocket.so';

如果执行成功,可以看到9998 9999 端口已经启动

代码语言:javascript
复制
# netstat -ln

Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:997 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:9998 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 :::22 :::* LISTEN udp 0 0 0.0.0.0:50187 0.0.0.0:* udp 0 0 0.0.0.0:991 0.0.0.0:* udp 0 0 0.0.0.0:994 0.0.0.0:* udp 0 0 0.0.0.0:5353 0.0.0.0:* udp 0 0 0.0.0.0:111 0.0.0.0:* udp 0 0 :::43696 :::* udp 0 0 :::5353 :::*

安装完毕。不需要修改mysql的源代码。

除了在mysql端安装handlersocket插件之外 还要在执行端安装模块

其中Net::HandlerSocket模块存放于HandlerSocket的分发tar包的perl-Net-HandlerSocket目录中,编译安装方式如下:

Shell代码

  1. cd perl-Net-HandlerSocket/
  2. perl Makefile.PL
  3. make
  4. make install

卸载

UNINSTALL PLUGIN

在mysql界面

mysql> uninstall plugin handlersocket

即可

常见错误:

libtool: link: only absolute run-paths are allowed

1.1.1之前的版本跟mysql5.15.1以后的mysql版本make时 路径是不对应的 这里首先要保证使用的是1.1.1版本的handlersocket

1.1.1 下载地址:https://github.com/DeNA/HandlerSocket-Plugin-for-MySQL/releases

如果已经用的1.1.1还是报这个错误 那么要检查配置./configure 时的pulgin路径–with-mysql-plugindir=/usr/local/mysql/lib/plugin/ 看看该目录下是否真的有plugin目录 没有的话要创建一个 或者找到对应的自带的plugin目录

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172627.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • libtool: link: only absolute run-paths are allowed
  • libtool: link: only absolute run-paths are allowed
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档