mysql gman do_MySQL UDFs 来管理调用 Gearman 的分布式的队列
UDF 的全名叫用户算定义函数,是使用 SQL 中一些功能来实现 SQL 本身没有的功能.
支持持久任务保持的 gearman 是 c 重写的,所以我们要先安装这个 c 重写的 gearman 的程序.
安装 gearman 的程序先要安装一些 gearman 需要的软件
boost 需要 1.39 以上的版本.
libgearman/add.cc:310: error: 'uuid' was not declared in this scope
libgearman/add.cc:310: error: 'uuid_generate' was not declared in this scope
libgearman/add.cc:311: error: 'uuid_unparse' was not declared in this scope
make[1]: *** [libgearman/libgearman_libgearman_la-add.lo] Error 1
make[1]: Leaving directory `/root/gearmand-0.29'
make: *** [all] Error 2
上面这个错就是没有安装 libuuid libuuid-devel。
这个可能在后面加 UDF 时出错,如果找不到 so 文件的话,记的给 /usr/local/lib 加到 ldconfig 加载的路径中
测试 Gearman 的功能是否正常
先使用 earmand -u root 来启动服务,来接任务分发管理,在启动源码包中的 examples 内的 reverse_worker 和 reverse_client 来测试.
这样有正常的输出就行了.说明客户端,服务器,Worker 都运行正常.“Job=…”这行输出的信息是 reverse_worker 的.“Result=…” 这行输出的信息是 reverse_client 的.
启动 Gearman 直接推到后台
安装 Gearman-mysql-udf 的 MySQL 插件
接下来配置,编译和安装
其中 with-mysql 是指配置程序到那找 mysql-config ,libdir 是指安装共享 udf 库到那个地方.centos5 默认使用我上面的这个就行了.
注册这些功能到 mysql 中,如果出错,就是 MySQL 不能找到 lib ,需要运行上面的步骤.
CREATE FUNCTION gman_do RETURNS STRING
SONAME "libgearman_mysql_udf.so";
CREATE FUNCTION gman_do_high RETURNS STRING
SONAME "libgearman_mysql_udf.so";
CREATE FUNCTION gman_do_low RETURNS STRING
SONAME "libgearman_mysql_udf.so";
CREATE FUNCTION gman_do_background RETURNS STRING
SONAME "libgearman_mysql_udf.so";
CREATE FUNCTION gman_do_high_background RETURNS STRING
SONAME "libgearman_mysql_udf.so";
CREATE FUNCTION gman_do_low_background RETURNS STRING
SONAME "libgearman_mysql_udf.so";
CREATE AGGREGATE FUNCTION gman_sum RETURNS INTEGER
SONAME "libgearman_mysql_udf.so";
CREATE FUNCTION gman_servers_set RETURNS STRING
SONAME "libgearman_mysql_udf.so";
我们可以使用下面的命令来查看加载的这些算定的功能
mysql> select * from mysql.func;
加载这些 so 文件后,我们先设置 gearman 的服务器.
这需要使用到我们先前加载给 mysql 的一个功能 gman_server_set().调用 Gearman MySQL UDF 之前必须调用这个,用来设备客户端用于 UDF 的服务器.
mysql> select gman_servers_set("127.0.0.1");
+-------------------------------+
| gman_servers_set("127.0.0.1") |
+-------------------------------+
| 127.0.0.1 |
+-------------------------------+
1 row in set (0.00 sec)
使用 Gearman-mysql-udf
设置完服务器,接下来我们可以直接对这个服务来进行任务的查询,运行操作之类,我们只要给上面加入的那几个功能,当能 MySQL 的内部函数来使用就行了.
gman_do() 将 UDF 的作业请求发送给 Gearman 的作业(worker)服务器,其中的 gman_do_high 是高优先权的作业,gman_do_background() 是指在后台作业以小优先权,只会返回主机和作业号( H:fk:23 ).
SELECT gman_do("reverse", input) AS test FROM mysql.user;
SELECT gman_do_high("reverse", input) AS test FROM mysql.user;
SELECT gman_do_background("reverse", input) AS test FROM mysql.user;
SELECT gman_sum("wc", input) AS test FROM mysql.user;
这时 MySQL UDF 相当于标准的 Gearman 的客户端.可以直接使用 MySQL 命令进行管理,也可以用别的程序连接 MySQL 来进行操作.
我们来测试一下
select gman_do("reverse",'fukai') AS test FROM mysql.user;
+-------+
| test |
+-------+
| iakuf |
| iakuf |
| iakuf |
| iakuf |
| iakuf |
| iakuf |
+-------+
6 rows in set (0.00 sec)
以后使用程序来操作这个就行了.
正常我们实际一环境中使用时,直接在 MySQL 中做调发器,来调用这些函数,就能实现自动使用队列了.所以当修改表中的一行时,我们完全可以使用一个 UDF 来建立一个能调用外部程序的触发器.
参考:
http://oddments.org/?p=30 New Gearman Server & Library in C, MySQL UDFs
http://oddments.org/?p=31 Gearman MySQL UDFs: URL Processing
mysql gman do_MySQL UDFs 来管理调用 Gearman 的分布式的队列相关推荐
- mysql gman do_Mysql 与Redis的同步实践
一.测试环境在Ubuntu kylin 14.04 64bit 已经安装Mysql.Redis.php.lib_mysqludf_json.so.Gearman. 点击这里查看测试数据库及表参考 本文 ...
- 【php毕业设计】基于php+mysql+mvc的网上留言管理系统设计与实现(毕业论文+程序源码)——网上留言管理系统
基于php+mysql+mvc的网上留言管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于php+mysql+mvc的网上留言管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下 ...
- 【php毕业设计】基于php+mysql+apache的课程网站管理系统设计与实现(毕业论文+程序源码)——课程网站管理系统
基于php+mysql+apache的课程网站管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于php+mysql+apache的课程网站管理系统设计与实现,文章末尾附有本毕业设计的 ...
- 【php毕业设计】基于php+mysql+apache的subversion用户管理系统设计与实现(毕业论文+程序源码)——用户管理系统
基于php+mysql+apache的subversion用户管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于php+mysql+apache的subversion用户管理系统设计 ...
- mysql用函数调用存储过程_mysql 函数 调用 存储过程
Mysql高级之存储过程 原文: Mysql高级之存储过程 概念类似于函数,就是把一段代码封装起来,当要执行这一段代码的时候,可以通过调用该存储过程来实现.在封装的语句体里面,可以用if/else, ...
- mysql 账户管理_如何用MySQL 命令来实现账户管理
今天我们要学习的是如何用MySQL 命令的方式来对账号进行管理,我们大家都知道在实际应用中MySQL 命令可以完成多种任务,以下的文章主要是对用MySQL 命令的方式来对账号进行管理的具体内容介绍. ...
- mysql jdbc 创建存储过程_mysql JDBC 调用存储过程
与oracle不同,mysql不支持匿名块,如果需要写过程语句,则必需定义存储过程.如果你会oracle的存储过程,那么mysql的存储过程也很简单了. 一.创建存储过程 create procedu ...
- mysql8.0创建属性,MySQL 8.0新特性 — 管理端口的使用简介
前言 下面这个报错,相信大多数童鞋都遇见过:那么碰到这个问题,我们应该怎么办呢?在MySQL 5.7及之前版本,出现"too many connection"报错,超级用户root ...
- include_fns.php_一步一步教你用PHP+MySql筹建网站 No.3 管理页面_mysql
一步一步教你用PHP+mysql搭建网站 No.3 管理页面 先来看一下本篇blog将要介绍的内容. 我们的主页面已经搭建完成了,然后左边的navigation里面的大部分内容也都能点击了,只剩下&q ...
最新文章
- settimeout需要清除吗_【期刊导读】新证据:HBsAg水平极低的非活动性HBsAg携带者经聚乙二醇干扰素治疗24周, HBsAg清除率高达83.3%...
- POPUP_TO_CONFIRM_STEP
- 函数式编程是啥玩意?map() reduce()(reduce()函数将数字列表转换为x进制数字)闭包、装饰器、偏函数
- 赞!Google 资深软件工程师 LeetCode 刷题笔记首次公开
- 自研开源框架 Midway Serverless ,让前端提效 50% 背后的故事
- 正式发布!Azure Functions OpenAPI Extension
- python数据分析兼职能挣钱吗_Python开发能从事数据分析吗
- 从源码分析RocketMQ系列-消息拉取PullMessageProcessor详解
- Cocos开发中性能优化工具介绍(一):Xcode中Instruments工具使用
- 综述 | 机器视觉表面缺陷检测
- 计算有向图可达矩阵Matlab实现
- python实现txt内容合并
- 决策支持系统 (Decision-making Support System, DSS) (人机智能系统)
- 天地不仁,以万物为刍狗!
- python写入excel文件出现nan_在python中使用Pandas ExcelWriter时处理Nan
- 这位毁誉参半的政治名嘴,竟然彻底改变了计算机编程
- java项目开发实战入门电子书,java项目开发实战入门全彩版
- 运维日记003--环境搭建与简单配置
- sql语句 如果为空值显示为0
- 游戏中的语音聊天方案
热门文章
- while和do while 循环
- linux上下左右为ABCD
- 流行:时尚健康美女10大标准
- IntelliJ Idea -- 自动引包设置
- 什么是物联网?定义和解释
- 【考研复试】计算机相关专业面试英语自我介绍范文(一)
- POJ 1647 One-move checkmate G++
- R语言ERROR: compilation failed for package ‘****‘
- oracle启用amm,【内存管理】Oracle AMM自动内存管理详解
- 往期课程 | 翻阅指南