使用阿里开源的 Canal
数据库同步工具,把 Mysql
数据的增删改同步到 RabbitMQ
或 Kafka
,然后从 MQ中拿消息处理再同步到 ElasticSearch
中。
Mysql --> Canal --> MQ(RabbitMq/Kafka) --> ElasticSearch
canal 主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,简单说就是可以对MySQL的增量数据进行实时同步。
canal 会模拟 MySQL 主库和从库的交互协议,从而伪装成 MySQL 的从库,然后向 MySQL 主库发送 dump 协议,MySQL主库收到 dump 请求会向 canal 推送 binlog,canal 通过解析 binlog 将数据同步到其他存储中去。
其实真正需要写代码实现的是:
使用ali的Canal数据库同步工具,把Mysql数据的增删改同步到RabbitMQ,然后从MQ中拿取消息同步到Elastic中:
依赖安装 Canal 、RabbitMq、MySql、ElasticSearch 7.5
编辑和修改 config/config.json 配置文件
主要入口文件 main/search.go
go run main/search.go -m module [paramters]
目录module中的文件函数是主要执行体
包括初始化索引,删除索引,重构索引,获取索引mapping,同步canal数据到mq,同步mq数据到es,web应用
-m string
(module)需要调用的执行模块: init/delete/rebuild/mapping/db2mq/es4mq/web
-t string
(table name)表名,init/delete/rebuild/mapping模块必选参数
-d string
(database name)数据库名,init/delete/rebuild/mapping模块必选参数
-n int
使用n个协程同步mq数据到es,默认10,es4mq模块可选参数 (default 10)
-p string
端口号,默认8080,web模块可选参数 (default "8080")
-r string
(regex)canal获取表的同步数据,canal2mq模块必选参数 (default ".*\\..*")
如 初始化|删除|重构|mapping 数据库statement的表track索引
go run search.go -m init|delete|rebuild|mapping -t track -d statement
如 同步数据statement中所有表更新数据到mq
go run search.go -m db2mq -r "statement\\..*"
如 10个协程同步mq数据到es
go run search.go -m es4mq -n 10
如 启动search web应用,端口8080
go run search.go -m web -p 8080
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。