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格式数据
- Spring Cache标注实现对Redis缓存数据的增删改查的简单实例
- Redis海量数据java测试代码
- redis+nodejs的数据获取
- 采用Keepalived实现Redis双机高可用
- java web网页版redis客户端工具
- SpringBoot通过Redis的Geo获取当前位置方圆一公里的业务代理点
- ssm使用redis做为spring+spring MVC+mybatis整合的二级缓存
- springdata redis实现的简单demo
- ssm使用redis做为spring+spring MVC+mybatis整合的二级缓存,基于maven搭建
- iptables禁止外网访问redis server服务默认端口6379的命令
- SpringMVC整合Redis demo小例子
请下载代码后再发表评论
文件名: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测试代码
- 证 SpringBoot通过Redis的Geo获取当前位置方圆一公里的业务代理点
- 原证精 redis-cli pipe方式导入mysql sql查询导出的redis Protocol格式数据
- 采用Keepalived实现Redis双机高可用
- 精 java web网页版redis客户端工具
- 原精 ssm使用redis做为spring+spring MVC+mybatis整合的二级缓存
- 原精 ssm使用redis做为spring+spring MVC+mybatis整合的二级缓存,基于maven搭建
- 原证 iptables禁止外网访问redis server服务默认端口6379的命令
- springdata redis实现的简单demo
- 原 SpringMVC整合Redis demo小例子
- 原证精 spring+springdata redis入门教程实现java端调用redis lua脚本片段和lua脚本文件
最近下载
zjlvhk LV4
2023年10月31日
安安an LV17
2020年4月7日
说的s51221额 LV3
2019年10月22日
xiaoxiao303 LV8
2019年3月4日
xuhao432 LV8
2019年1月24日
小时代222 LV1
2018年5月11日
AbrahamLeeJay LV1
2018年5月8日
最代码官方 LV168
2018年3月25日
最近浏览
dapeng0011 LV15
7月6日
genyuan2014 LV6
5月7日
zhujunnan LV12
3月21日
简约时尚 LV13
2月6日
sunlzh888888 LV29
1月22日
zjlvhk LV4
2023年10月31日
qwertyuiopzxc LV1
2022年10月14日
Hachi6 LV13
2022年6月15日
youwuzuichen LV10
2022年5月11日
人工智能4708 LV11
2022年1月13日