es与mysql数据同步 (go-mysql-es)
es与mysql数据同步 (go-mysql-es)
简介
go-mysql-elasticsearch是一款开源的高性能的Mysql数据同步ES的工具,其由go语言开发,编译及使用非常
简单。go-mysql-elasticsearch的原理很简单,首先使用mysqldump获取当前MySQL的数据,然后在通过此
时binlog的name和position获取增量数据,再根据binlog构建restful api写入数据到ES中
注意
- mysql binlog必须是ROW模式
//设置为ROW模式
set global binlog_format="ROW";//查看模式
show global variables like "%binlog_format%";
- 要同步的mysql数据表必须包含主键,否则直接忽略,这是因为如果数据表没有主键,UPDATE和DELETE操作就会因为在ES中找不到对应的document而无法进行同步
- 不支持程序运行过程中修改表结构
es创建索引
PUT /products/
{"mappings":{"properties":{"name":{"type":"text","analyzer":"ik_smart"},"long_name":{"type":"text","analyzer":"ik_smart"},"brand_id":{"type":"integer"},"category_id":{"type":"integer"},"shop_id":{"type":"integer"},"price":{"type":"scaled_float","scaling_factor":100},"sold_count":{"type":"integer"},"review_count":{"type":"integer"},"status":{"type":"integer"},"create_time":{"type":"date"},"last_time":{"type":"date"}}}
}
go-mysql-elasticsearch部署
1 . 拉取取go-mysql-elasticsearch镜像
docker pull gozer/go-mysql-elasticsearch
2 . 创建一个目录用于存储配置文件
mkdir /docker/go-mysql-es cd /docker/go-mysql-es touch go_mysql_river.toml
文件内容如下
my_addr = "172.17.0.4:3306" --mysql地址与端口
my_user = "root" --mysql用户
my_pass = "root" --mysql密码
my_charset = "utf8" --字符集
enable-relay = truees_addr = "172.17.0.7:9200" --es的地址与端口
es_user = "" --es用户名
es_pass = "" --es密码data_dir = "/docker/data" --存储数据目录stat_addr = "127.0.0.1:12800" --服务器内部地址
stat_path = "/metrics"server_id = 1001flavor = "mysql"mysqldump = "" --备份文件#skip_master_data = falsebulk_size = 128flush_bulk_time = "200ms"skip_no_pk_table = false[[source]]
schema = "lmrs" --同步的mysql数据库名称
tables = ["lmrs_products"] --同步的mysql表#es 映射的mapping
[[rule]]
schema = "lmrs"
table = "lmrs_products" # es的索引名
index = "products" --同步的es索引
type = "_doc" --同步的es类型filter = ["id", "name","long_name","brand_id","shop_id","price","sold_count","review_count","status","create_time","last_time","three_category_id"] --同步哪些字段[rule.filed] --mysql的three_category_id替换es的category_id
mysql = "three_category_id"
elastic = "category_id"
3 . 构建go-mysql-elasticsearch容器
docker run -p 12345:12345 -d --name go-mysql-es \-v /docker/go-mysql-es/go_mysql_river.toml:/config/river.toml:ro \--privileged=true \gozer/go-mysql-elasticsearch
注释:启动好后,就会自动把数据同步到es中
产生的问题:
1 . 数据库中已有的数据,不会触发同步到es中,会一直出现一个报错
2 . 编辑数据库的内容,也会出现这个问题
:如下
已知的解决方案 :
有可能在导入数据的时候,生成的日志并不是 ROW模式的数据,导致无法吧数据同步到es中,解决方案是mysql更改为ROW模式后,重新导入/生成(INSERT INTO 的方式) 数据表中的数据
es与mysql数据同步 (go-mysql-es)相关推荐
- k8s mysql数据同步_K8s——MySQL实现数据持久化
1.搭建nfs存储 [root@docker-k8s01 ~]# yum -y install nfs-utils [root@docker-k8s01 ~]# mkdir /nfsdata/mysq ...
- ES和MySQL数据同步(简略版)
一.在docker配置elasticsearch和kibana 1.注:elasticsearch和kibana的版本要一致 elesticsearch --拉取镜像 docker pull dock ...
- MYSQL数据同步到ES7
** 概述 ** 现在的项目数据量越来越大,全文检索功能使用场景也越来越普遍. 而我们一般的生产数据是在mysql,或其它一些数据库, 我们的产品数据就是mysql,而又要使用全文检索, 所以要把my ...
- liunx下通过Canal将MySQL数据同步到Elasticsearch
liunx下通过Canal将MySQL数据同步到Elasticsearch 一.canal背景信息 Canal是Github中开源的ETL(Extract Transform Load)软件 cana ...
- Mysql 数据同步到 Elasticsearch
阅读目录 说明 1 同步原理 2 插件 logstash-input-jdbc go-mysql-elasticsearch elasticsearch-jdbc 3 logstash-input-j ...
- 通过Canal将MySQL数据同步到elasticsearch (mysql8+canal1.1.5+canal-adapter1.1.5+elasticsearch6.7.0+ik6.8.6)
经过几天的的深入研究(网上的文档很多,但是坑不少,少一个配置可能就走入了死胡同),特此将我部署的过程意义道来(参考文档通过Canal将MySQL数据同步到阿里云Elasticsearch - 检索分析 ...
- RabbitMQ实现ElasticSearch和MySQL数据同步
RabbitMQ实现ElasticSearch和MySQL数据同步 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 RabbitMQ实现ElasticSearch和MySQ ...
- MySql数据同步(双机热备)已正式应用上平台
经过一个多月的测试MYSQL的双机同步数据还是很不错的. 在家庭ADSL的4M的带宽下,有10个人在应用此网络,MYSQL数据同步还是照样正常,我想在正常的平台环境肯定更即时,效率更高! 但同时需要注 ...
- MySQL数据同步的一个很初级运用
PHP程序员基本上都离不开MySQL,今天转载一篇关于MySQL数据同步的一个很初级运用. 今天由于工作需要,配置了一下主从同步,这里记录一下配置过程,以备查阅. 事先度娘了一番,主从同步需要保证主从 ...
最新文章
- R语言使用ggplot2包的快速可视化函数qplot绘制分组分组点图(带状图)实战
- 利用脚本将文字插入到图片或进行多个图片拼接
- 关于遗留系统维护的讨论
- Tomcat的安装和运行
- 手把手教你用Java的swing制作计算器
- 前端学习(3252):react脚手架
- php mysql 秒杀_redis+PHP实现高并发下秒杀数据入库的问题
- 关于在页面跳转前alert()不能弹出消息的问题
- java面试宝典pdf下载_Java面试问答PDF电子书免费下载(250+问题,60页)
- 2019年10月江苏计算机二级C语言编程题解析
- python里面的pip是什么意思_python中pip是什么
- MongoDB 数据全量备份
- python游戏计分代码_Python笔试题之设计“跳一跳”小游戏计分器
- odi12配置mysql_Oracle Data Integrator 12c 安装(ODI安装)
- 商品库存清单案例java_JAVA实现简单的商城库存清单
- vue 图片放大、缩小、旋转、滚轮操作图片放大缩小
- android 水滴动画效果图,Android控件实现水滴效果
- 技术笔记:Wordpress建站,解决无法外网访问的方法
- python selenium学习之新浪微博
- 计算机农业类的sci,农学类比较好投的SCI期刊有哪些