CREATE FUNCTION gman_do_background RETURNS STRING SONAME 'libgearman_mysql_udf.so';
CREATE FUNCTION gman_servers_set RETURNS STRING SONAME 'libgearman_mysql_udf.so';
最后指定Gearman服务器的信息:
SELECT gman_servers_set('127.0.0.1:4730');
通过MySQL触发器实现数据同步
最终同步哪些数据,同步的条件 , 还是需要根据实际情况决定,比如将数据表data的数据在每次更新时同步,那么编写Trigger如下:
DELIMITER $$
CREATE TRIGGER datatoredis AFTER UPDATE ON data
FOR EACH ROW BEGIN
SET @ret=gman_do_background('syncToRedis', json_object(NEW.id as`id`, NEW.volume as`volume`));END$$
DELIMITER ;
尝试在数据库中更新一条数据查看Gearman是否生效 。
Gearman PHP Worker将MySQL数据异步复制到Redis
Redis作为时下当热的NoSQL缓存解决方案无需过多介绍,其安装及使用也非常简单:
apt-get install redis-server
pecl install redis
echo "extension=redis.so"/etc/php5/conf.d/redis.ini
然后编写一个Gearman Worker:redis_worker.php
#!/usr/bin/env php?
$worker =newGearmanWorker();
$worker-addServer();
$worker-addFunction('syncToRedis','syncToRedis');
$redis =newRedis();
$redis-connect('127.0.0.1',6379);while($worker-work());function syncToRedis($job){global $redis;
$workString = $job-workload();
$work = json_decode($workString);if(!isset($work-id)){returnfalse;}
$redis-set($work-id, $workString);}
最后需要将Worker在后台运行:
nohup php redis_worker.php
通过这种方式将MySQL数据复制到Redis,经测试单Worker基本可以瞬时完成 。
如何进行异构数据库同步数据库同步有很多方法,这里不讨论了,我这里只针对异构数据库.那什么是异构数据库呢,我们先看下定义(引用)
异构数据库系统是相关的多个数据库系统的集合,可以实现数据的共享和透明访问,每个数据库系统在加入异构数据库系统之前本身就已经存在,拥有自己的DMBS 。异构数据库的各个组成部分具有自身的自治性,实现数据共享的同时 , 每个数据库系统仍保有自己的应用特性、完整性控制和安全性控制 。异构数据库系统的异构性主要体现在以下几个方面:
计算机体系结构的异构
各个参与的数据库可以分别运行在大型机、小型机、工作站、PC或嵌入式系统中 。
基础操作系统的异构
各个数据库系统的基础操作系统可以是Unix、Windows NT、 Linux等 。
DMBS本身的异构
可以是同为关系型数据库系统的Oracle、 SQL Server等,也可以是不同数据模型的数据库 , 如关系、模式、层次、网络、面向对象 , 函数型数据库共同组成一个异构数据库系统 。
在转换的过程中,有时要想实现严格的等价转换是比较困难的 。首先要确定两种模型中所存在的各种语法和语义上的冲突 , 这些冲突可能包括:
命名冲突:即源模型中的标识符可能是目的模型中的保留字,这时就需要重新命名 。
格式冲突:同一种数据类型可能有不同的表示方法和语义差异,这时需要定义两种模型之间的变换函数 。
结构冲突:如果两种数据库系统之间的数据定义模型不同,如分别为关系模型和层次模型,那么需要重新定义实体属性和联系,以防止属性或联系信息的丢失 。
异构数据库同步的解决方法主要有以下几种:
1.建立触发器记录表的变化情况,在源数据库建立增、删、改触发器,然后根据变化登记表进行处理.优点是充分结合业务进行处理,保持数据的一致性、完整性 , 实时性较强,对多个数据源合并有非常大的优势,我们现在也是采用这种方式来同步的 。
- redis实现延时消息队列 redis消息时间过长
- 纯phpmysql
- 查找php.ini phpredis查找
- 使用redis实现分布式锁及其优化 redis分布式性能
- redis事务实现原理 在事务中使用redis
- redis map底层实现 redis多个map命令
- mongodb表设计 mongodb实现动态表单
- php7连接mysql php连接mysql源码
- redis实现排行榜思路 redis全站排行榜
- redis实现手机验证码的缓存 redis实现验证码
