Smail_的gravatar頭像
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.下載項目,擼一把!

基于mysql binlog的redis/elasticsearch數據同步中間件


打賞

已有1人打賞

最代碼官方的gravatar頭像

文件名:com.zip,文件大小:17.284K下載
頂部客服微信二維碼底部
>掃描二維碼關注最代碼為好友掃描二維碼關注最代碼為好友
海王捕鱼2内购破解版