Smail_2018-03-25 13:05:30
原
基于mysql binlog的redis/elasticsearch数据同步中间件
1.你的mysql必须开启主从同步,mysql配置如下
#binlog配置 log-bin=/home/mysql/binlog/mysql-bin binlog-format=ROW server_id=1 expire_logs_days=7
2.在开启binlog的mysql下,新建一个数据库,数据库名随意,例如:data_system,下文的配置要用到
3.在data_system中创建新增规则
DROP TABLE IF EXISTS `action`; CREATE TABLE `action` ( `key` varchar(200) NOT NULL, `action` text NOT NULL, PRIMARY KEY (`key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
解释:
key:数据库名.表名.事件 事件支持三种:insert、update、delete
action:动作,及事件触发的同步动作
注意:
INSERT INTO `action` VALUES ('data_system.action.delete','{\"method\":[\"updateEventWithAtion\"]}'), ('data_system.action.insert','{\"method\":[\"updateEventWithAtion\"]}'), ('data_system.action.update','{\"method\":[\"updateEventWithAtion\"]}')
这三条规则务必保留,method的值可以随意改,但是要记下来,下一步的配置中要用到
作用:
在你修改这张表的时候,中间件会自动加载你修改了规则,从而做到动态规则适配。
其它表的action约定方式:
('mydb.article.update','{\method\":[\"redis\",\"elasticsearch\"],\"redisKeys\":[\"ArticleServiceImpl.getArticle|id_#0\"],\"elasticsearchType\":\"article\",\"elasticsearchIndexId\":2,\"elasticsearchFormatFields\":[\"id|0\",\"title|1\",\"keywords|3\",\"digest|4\",\"categoryId|6\",\"sourceId|7\",\"pubTime|10_tf\",\"headline|8\",\"titleHash|2\"]}');
解释:
method:只支持两种redis、elasticsearch,用户可以根据源码自定义新增新的方式
redisKeys:redis缓存中的key,本案例中的key只做删除操作,#0表示取哪列的值
elasticsearchType:你搜索引擎中给这张表的数据设定mappring->type
elasticsearchFormartFields:elasticsearch中这张表索引了哪些字段,格式为:es字段名|取哪列的值(_tf 表示时间格式化,格式化后的时间格式为:yyyy-MM-dd HH:mm:ss,这里忘了给个配置项,让用户可以自定义)
取哪列的值:这个需要使用者,按照数据表的j建表sql的顺序取值,从0开始
4.中间件配置文件project.properties
#以下参数都为强制必须配置的参数 #ServerId,和binlog配置中的server_id不一样即可 server_id= #存放事件规则的数据库连接配置,中间件启动时从这里去读取事件和要做的事 event_db_url=jdbc:mysql://xxxx:3306/新建的数据库名 event_db_user= event_db_password= #更新事件规则的触发器,value看第二步中的三个强制保留的配置 event_update_trigger= #发送binlog日志的master数据库连接配置 binlog_db_host= binlog_db_port= binlog_db_user= binlog_db_password= #elasticsearch连接配置 es_host_port=http://127.0.0.1:9200 es_index_name= #redis连接配置(没有密码也请留下配置,勿删) redis_host=127.0.0.1 redis_port=6379 redis_password=
配置文件配好后,请在你部署jar包的目录新建一个config文件夹,将project.properties放到里面即可
5.下载项目,撸一把!
猜你喜欢
- redis-cli pipe方式导入mysql sql查询导出的redis Protocol格式数据
- redis+nodejs的数据获取
- Spring Cache标注实现对Redis缓存数据的增删改查的简单实例
- Redis海量数据java测试代码
- Spring MVC+Freemarker+Bootstrap整合实现spring-data-redis增删改查的入门学习实例
- SpringBoot通过Redis的Geo获取当前位置方圆一公里的业务代理点
- ssm使用redis做为spring+spring MVC+mybatis整合的二级缓存,基于maven搭建
- ssm使用redis做为spring+spring MVC+mybatis整合的二级缓存
- 采用Keepalived实现Redis双机高可用
- java web网页版redis客户端工具
- iptables禁止外网访问redis server服务默认端口6379的命令
- spring boot+redis实现共享java servlet session对象
请下载代码后再发表评论
文件名:com.zip,文件大小:17.284K下载
- /
- /__MACOSX
- /__MACOSX/com
- /__MACOSX/com/._.DS_Store
- /__MACOSX/com/rumtel
- /__MACOSX/com/rumtel/._.DS_Store
- /__MACOSX/com/rumtel/dss
- /__MACOSX/com/rumtel/dss/._.DS_Store
- /__MACOSX/com
- /com
- /com/.DS_Store
- /com/rumtel
- /com/rumtel/dss
- /com/rumtel/dss/main
- /com/rumtel/dss/module
- /com/rumtel/dss/module/action
- /com/rumtel/dss/module/data
- /com/rumtel/dss/system
- /com/rumtel/dss/system/cache
- /com/rumtel/dss/system/custom
- /com/rumtel/dss
- /__MACOSX

- 原证精Spring Cache标注实现对Redis缓存数据的增删改查的简单实例
- Redis海量数据java测试代码
- 原证精Spring MVC+Freemarker+Bootstrap整合实现spring-data-redis增删改查的入门学习实例
- 证SpringBoot通过Redis的Geo获取当前位置方圆一公里的业务代理点
- 原证精redis-cli pipe方式导入mysql sql查询导出的redis Protocol格式数据
- 原精ssm使用redis做为spring+spring MVC+mybatis整合的二级缓存,基于maven搭建
- 原精ssm使用redis做为spring+spring MVC+mybatis整合的二级缓存
- 采用Keepalived实现Redis双机高可用
- 精java web网页版redis客户端工具
- 原证iptables禁止外网访问redis server服务默认端口6379的命令
- 原证spring boot+redis实现共享java servlet session对象
- springdata redis实现的简单demo

安安an LV172020年4月7日
说的s51221额 LV32019年10月22日
xiaoxiao303 LV82019年3月4日
xuhao432 LV82019年1月24日
小时代222 LV12018年5月11日
AbrahamLeeJay LV12018年5月8日
最代码官方 LV1582018年3月25日