1、为什么要持久化?

gearman的job server中的工作队列存储在内存中,一旦服务器有未处理的任务时重启或者宕机,那么这些任务就会丢失。

持久化存储队列可以允许添加后台任务,并将其存储在外部的持久型队列里(比如MySQL数据库)。

2、关于gearman的持久化的文章,建议可以看官方文档

http://gearman.org/manual/job_server/#persistent_queues

3、创建用于持久化的数据库和表

CREATE DATABASE gearman;

CREATE TABLE `gearman_queue` (

`unique_key` varchar(64) NOT NULL,

`function_name` varchar(255) NOT NULL,

`priority` int(11) NOT NULL,

`data` longblob NOT NULL,

`when_to_run` int(11),

PRIMARY KEY (`unique_key`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

4、创建gearman用户

> create user 'gearman'@'%' IDENTIFIED BY '123456';

> grant all on gearman.* TO 'gearman'@'%';

> flush privileges;

5、启动gearmand时指定持久化参数

> gearmand -q libdrizzle \

--libdrizzle-host=192.168.1.100 \

--libdrizzle-port=3306 \

--libdrizzle-user=gearman \

--libdrizzle-password=123456 \

--libdrizzle-db=gearman \

--libdrizzle-table=gearman_queue \

--libdrizzle-mysql

或者使用如下

> gearmand -q mysql \

--mysql-host=192.168.1.100 \

--mysql-port=3306 \

--mysql-user=gearman \

--mysql-password=123456 \

--mysql-db=gearman \

--mysql-table=gearman_queue

如果出现如下问题,说明你在编译安装gearman时没有把libdrizzle装上

gearmand: unrecognised option '--libdrizzle-host=192.168.1.100'

在如下网址,下载libdrizzle

https://launchpad.net/libdrizzle/+download

如:libdrizzle-5.1.4.tar.gz

安装libdrizzle

> tar xf libdrizzle-5.1.4.tar.gz

> cd libdrizzle-5.1.4

这里最好不要指定--prefix,因为你指定了其它目录,下面gearman编译时可能会找不到相关头文件和链接库,需要你手动添加软链接

> ./configure

> make && make install

然后我们重新编译安装gearman

> tar xf gearmand-1.1.12.tar.gz

> cd gearmand-1.1.12

如果configure的有哪些参数不清楚,可以用下面命令查看

> ./configure --help

这里需要安装mysql-devel,以便gearman支持mysql的持久化

> yum install mysql-server mysql-devel

因为我早先装过gearman,没有指定--prefix,所以这里也没有指定,有需要的可以自行指定

> ./configure

> make && make install

configure完成最后显示的一段信息

* LIBS:

* LDFLAGS Flags:

* Assertions enabled: no

* Debug enabled: no

* Warnings as failure: no

* Building with libsqlite3 no

* Building with libdrizzle yes

* Building with libmemcached not found

* Building with libpq no

* Building with tokyocabinet no

* Building with libmysql yes

* SSL enabled: no

* cyassl found: no

* openssl found: yes

* make -j: 2

* VCS checkout: no

* sphinx-build: :

最后可以看到libdrizzle和libmysql那地方显示yes

查看是否安装上

> gearmand --help

如果出现如下错误

gearmand: error while loading shared libraries: libdrizzle.so.9: cannot open shared object file: No such file or directory

请打开修改/etc/ld.so.conf

> vi /etc/ld.so.conf

加入如下一句话

/usr/local/lib

运行ldconfig

> ldconfig

再次运行上面的gearmand --help,如果出现如下信息,则安装成功

builtin:

libdrizzle:

--libdrizzle-host arg (=localhost) Host of server.

--libdrizzle-port arg (=3306) Port of server. (by default Drizzle)

--libdrizzle-uds arg Unix domain socket for server.

--libdrizzle-user arg (=root) User name for authentication.

--libdrizzle-password arg Password for authentication.

--libdrizzle-db arg (=gearman) Database to use.

--libdrizzle-table arg (=queue) Table to use.

--libdrizzle-mysql Use MySQL protocol.

MySQL:

--mysql-host arg (=localhost) MySQL host.

--mysql-port arg (=3306) Port of server. (by default 3306)

--mysql-user arg MySQL user.

--mysql-password arg MySQL user password.

--mysql-db arg MySQL database.

--mysql-table arg (=gearman_queue) MySQL table name.

通过libdrizzle启动gearmand如果出现如下问题

gearmand: Error while initializing the queue : libdrizzle

并且日志里面的记录是这样的

ERROR 2017-02-22 07:51:02.536574 [ main ] Failed to initialize libdrizzle:

initialize(QUEUE_ERROR) -> libgearman-server/queue.cc:246

不知道是不是mysql版本太高的原因,还是其他的原因,如果大家试了实在不行还是换另一个方式,另一方式我测试是成功的。

创建一个后台job

> gearman -f test -b 123456

查看数据库如下:

gearman mysql_gearman的持久化,以mysql的方式相关推荐

  1. docker容器运行mysql持久化_docker容器实现数据持久化的两种方式及其区别

    前言 这篇博文是我对docker实现数据持久化几种方式的特征进行一个总结. 在docker中,它的存储文件系统是在dockerhost上原有的xfs或ext4架设了一层文件系统:overlay2(将此 ...

  2. gearman mysql_Gearman Server 使用 MySQL UDFs 来管理和保持队列

    我们知道 Gearman 的任务是一个数组结构,只存在内存中,一断电怎么样这个信息就会不存在.所以新的 gearman 开发了一个功能,就是通过 mysql 来存储任务信息.这样可以持久的保持任务的状 ...

  3. MySQL 索引方式

    2019独角兽企业重金招聘Python工程师标准>>> MySQL 索引方式 博客分类: 数据库 本文配图来自<高性能MySQL(第二版)>. 在数据库中,对性能影响最大 ...

  4. 理解nacos 服务治理(注册中心)、Nacos简介、下载与配置持久化到Mysql

    Nacos简介 什么是Nacos Nacos致力于帮助您发现.配置和管理微服务.Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流且管理. Nacos帮助您更敏 ...

  5. sentinel 官方文档_Sentinel控制台监控数据持久化到MySQL数据库

    阅读文本大概需要3分钟. 根据官方wiki文档,Sentinel控制台的实时监控数据,默认仅存储 5 分钟以内的数据.如需持久化,需要定制实现相关接口. https://github.com/alib ...

  6. Nacos简介、下载与配置持久化到Mysql

    场景 什么是Nacos Nacos致力于帮助您发现.配置和管理微服务.Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发 现.服务配置.服务元数据及流且管理. Nacos帮助您更敏捷和容易 ...

  7. Mysql @RN :方式ROW_NUMBER的实现方法

    目录 1简介... 1 2 准备... 1 2.1 环境说明... 1 3 安装... 2 4 配置... 2 5 使用... 2 5.1 验证实验... 2 5.2 问题分析... 4 6 延展.. ...

  8. ActiveMQ持久化到mysql

    ActiveMQ持久化到mysql 配置 1.找到apache-activemq-5.15.2/examples/conf下面的activemq-jdbc-performance.xml 2.打开ac ...

  9. ActiveMQ 消息持久化到Mysql数据库

    修改配置文件持久化到Mysql数据库 文件路径:\conf\activemq.xml <persistenceAdapter><!--<kahaDB directory=&qu ...

最新文章

  1. 数据蒋堂 | 文件的性能分析
  2. 初涉SQL Server性能问题(1/4):服务器概况
  3. iptraf 打不开
  4. 【转载】说说大型高并发高负载网站的系统架构
  5. 【Bit-Z月报】11月送出182.4万美元活动奖励,真是豪气
  6. ajax form表单提交_LayUI提交表单,监听select,分页组件
  7. perl语言编程 第四版_2020年,5 种 将死的编程语言
  8. Codeforces Round #700 (Div. 2) D1 D2. Painting the Array 思维
  9. 2019-1-7Xiaomi Mi5 刷全球版MIUI教程
  10. 广东汕头市队赛? T1 模拟
  11. kafka创建Topic的一道面试题
  12. 德国自动驾驶与电动出行趋势进展
  13. 四年的自学,通过这些学习工具拿到了大厂offer,分享给大家
  14. 基于物联网技术的校园智慧消防管理平台-Susie 周
  15. 手机语言 Symbian 术语表
  16. 蓝牙Controller框架梳理
  17. matlab整除方式
  18. mysql中常用的三种插入数据的语句
  19. ch19.PDO。p360---练习三。通过pdo更新数据
  20. 关于【商品计量单位以及这些计量单位换算】的设计

热门文章

  1. 联通网络远程服务器无响应,挂机宝服务器卡慢/死机/远程不上/等原因分析!
  2. 基于VAGWO速度辅助灰狼优化算法的matlab仿真
  3. 2023提升学历有几种方式 文凭国家认可吗
  4. 在centOS7中安装nginx教程
  5. 基于vue开发的移动端(仿蘑菇街,淘宝)电商项目
  6. 招商银行 招银网络科技电话面试
  7. Linux下4个查找命令which、whereis、locate、find
  8. 美食杰项目 -- 菜谱大全(二)
  9. Android RadioButton修改圆圈大小
  10. Navicat 数据表的数据的添加,删除及使用sql完成数据的添加。