Chinaunix首页 | 论坛 | 博客
  • 博客访问: 326076
  • 博文数量: 97
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 811
  • 用 户 组: 普通用户
  • 注册时间: 2015-02-25 19:22
文章分类

全部博文(97)

文章存档

2021年(1)

2020年(18)

2019年(14)

2018年(29)

2017年(16)

2016年(19)

我的朋友

分类: NOSQL

2020-11-01 18:12:33

转自:https://blog.csdn.net/qq_46089299/article/details/106258639


一、Redis实时同步mysql数据

Gearman是一套用来把程式需求委派给机器,提供通用的程序框架来将任务分发在机器运算。它同时具备并行工作的能力、负载均衡处理的能力,以及在不同程序语言之间沟通的能力。
主要服务:gearmand
如下图所示:

在这里插入图片描述
实验操作过程:
实验环境使用上一篇:搭建【(nginx+php)+mysql+redis】的服务平台的环境

首先server1启动gearman
在这里插入图片描述
获取安装UDF
UDF:
UDF (User-Defined Function)(用户定义函数)
此概念出现在MySQL、Interbase、Firebird、Fluent中,根据用户实际应用的需要而自行开发的函数。
基本用户定义函数是一类代码,对MYSQL服务器功能进行扩充,通过添加新函数,性质就象使用本地MYSQL函数abs()或concat().UDF是用C(或C++)写的。也许还可以用BASIC,C#或其它什么语言.
在server3上

客户端上传软件包 [root@client rpms]# scp lib_mysqludf_json-master.zip server3: root@server3's password: 
lib_mysqludf_json-master.zip                                                                                                                               
100% 23KB   4.9MB/s   00:00 [root@server3 ~]# yum install -y unzip [root@server3 ~]# unzip lib_mysqludf_json-master.zip   解压 Archive:  lib_mysqludf_json-master.zip
37f851c808c4161beb4d5e535771dc0c59c82de6
   creating: lib_mysqludf_json-master/ inflating: lib_mysqludf_json-master/README.md  
  inflating: lib_mysqludf_json-master/lib_mysqludf_json.c  
  inflating: lib_mysqludf_json-master/lib_mysqludf_json.html  
  inflating: lib_mysqludf_json-master/lib_mysqludf_json.so  
  inflating: lib_mysqludf_json-master/lib_mysqludf_json.sql [root@server3 ~]# ls anaconda-ks.cfg  lib_mysqludf_json-master  
lib_mysqludf_json-master.zip  redis-5.0.3  test.sql [root@server3 ~]# cd lib_mysqludf_json-master/ [root@server3 lib_mysqludf_json-master]# ls lib_mysqludf_json.c  lib_mysqludf_json.html 
 lib_mysqludf_json.so  lib_mysqludf_json.sql  README.md [root@server3 lib_mysqludf_json-master]# yum install -y mariadb-devel 安装数据库开发包 [root@server3 lib_mysqludf_json-master]# yum install -y gcc  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
[root@server3 lib_mysqludf_json-master]# gcc $(mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.so lib_mysqludf_json.c [root@server3 lib_mysqludf_json-master]# ls lib_mysqludf_json.c  lib_mysqludf_json.html  lib_mysqludf_json.so  lib_mysqludf_json.sql  README.md [root@server3 lib_mysqludf_json-master]# cp lib_mysqludf_json.s lib_mysqludf_json.so   lib_mysqludf_json.sql  
 复制插件到mysql的插件目录中 [root@server3 lib_mysqludf_json-master]# cp lib_mysqludf_json.so   /usr/lib64/mysql/plugin/  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述
注册udf函数
在这里插入图片描述
安装gearman客户端
在这里插入图片描述

[root@server3 ~]# yum install -y  libevent-devel-2.0.21-4.el7.x86_64.rpm 
libgearman-1.1.12-18.el7.x86_64.rpm 
libgearman-devel-1.1.12-18.el7.x86_64.rpm  
  • 1
  • 2
  • 3
  • 4
[root@server3 ~]# cd gearman-mysql-udf-0.6/ [root@server3 gearman-mysql-udf-0.6]# ls aclocal.m4  AUTHORS  ChangeLog  config  config.h.in  configure  configure.ac COPYING  libgearman_mysql_udf  m4  Makefile.am  Makefile.in  NEWS  README [root@server3 gearman-mysql-udf-0.6]# ./configure --libdir=/usr/lib64/mysql/plugin --with-mysql  编译  
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
再次注册udf函数
在这里插入图片描述
创建触发器
在这里插入图片描述
在这里插入图片描述
编写一个work.php

[root@client rpms]# scp worker.php server1: root@server1's password: 
worker.php  
  • 1
  • 2
  • 3

在这里插入图片描述
在这里插入图片描述
测试一下数据是否实时同步
在这里插入图片描述
在这里插入图片描述
再来一次
在这里插入图片描述
在这里插入图片描述
总结:mysql数据库数据发生改变——>会触发触发器(trigger)——>json_map格式化json格式易读取——>mysql-plugin插件——>gearman(server)——>server1上的worker(php-gearman、php-redis)——>同步到Redis上——>client 客户端—下次访问—>Redis——>client

阅读(1222) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~