当前位置: 首页 > news >正文

go-mysql-transfer 同步数据到es

同步数据需要注意的事项 前提条件

1 要同步的mysql 表必须包含主键 

2 mysql binlog 必须是row 模式

3 不支持程序运行过程中修改表结构

4 要赋予连接mysql 账号的权限 reload, replication super 权限   如果是root 权限则不需要 

安装 go-mysql-transfer 

​
git clone  https://github.com/wj596/go-mysql-transfer.gitcd go-mysql-transfer
​go get
go build

1 设置mysql binlog模式为row 

同步数据位置  查看mysql binlog 日志位置

确保binlog 日志为 on 

数据库结构 表 test 

app.yml 配置 

# mysql
addr: 192.168.217.134:3306
user: root
pass: 123456
charset : utf8
slave_id: 1001 #slave ID
flavor: mysql #mysql or mariadb,榛???mysqltarget: elasticsearch ##elasticsearch
es_addrs: 127.0.0.1:9200
es_version: 6 # 
#es_password:  #
#es_version:  #rule:- schema: gametable: lottery order_by_column: idcolumn_underscore_to_camel: false value_encoder: jsones_index: lottery es_mappings: - column: idfield: idtype: long- column: losefield: lose #estype: keyword- column: winfield: wintype: keyword- column: stakefield: staketype: double- column: oddsfield: oddstype: double

全局数据初始化

./go-mysql-transfer -stock

增量数据同步

修改mysql 的个别数据  同步binlog到最新位置 。。。执行同步操作

同步数据到最新位置,修改部分数据。。。

./go-mysql-transfer -position binlog.000015 2457 

[root@localhost data]# ./go-mysql-transfer -position binlog.000015 2457 
2024-04-27 10:14:36.564695 I | process id: 46615
2024-04-27 10:14:36.564905 I | GOMAXPROCS :2
2024-04-27 10:14:36.564909 I | source  mysql(192.168.217.134:3306)
2024-04-27 10:14:36.564912 I | destination elasticsearch(http://127.0.0.1:9200)
The current dump position is : binlog.000015 2457

执行增量同步

./go-mysql-transfer -config app.yml

数据类型映射表

mysql数据类型es数据类型
intlong 
varcharkeyword
decimal double 

  

报错 

同步数据报错

在  go-mysql-transfer 中执行 

go get github.com/json-iterator/go@v1.1.12

报错:  document missing  

2024-05-01 17:15:16.081082 I | dumper stopped
2024-05-01 17:15:16.083295 I | transfer run from position(binlog.000017 6375)
2024-05-01 17:15:16.289692 I | [_doc][6]: document missing
2024-05-01 17:15:17.086846 I | transfer stop
2024-05-01 17:15:17.088804 I | dumper stopped
2024-05-01 17:15:17.091393 I | transfer run from position(binlog.000017 6375)
2024-05-01 17:15:17.294877 I | [_doc][6]: document missing
2024-05-01 17:15:18.095177 I | transfer stop
2024-05-01 17:15:18.097077 I | dumper stopped
2024-05-01 17:15:18.099320 I | transfer run from position(binlog.000017 6375)
2024-05-01 17:15:18.302411 I | [_doc][6]: document missing
^C2024-05-01 17:15:18.704188 I | application stoped锛𸱳ignal: interrupt 
2024-05-01 17:15:19.102070 I | transfer stop
2024-05-01 17:15:19.103859 I | dumper stopped

_doc 默认的索引类型  一个索引index 可以包含多个type

类型 type 包含多个文档(document)

原因: es 中没有数据,更新导致找不到对应的数据 因此需要先初始化数据到es 中 

./go-mysql-transfer -stock 

http://www.lryc.cn/news/341334.html

相关文章:

  • 外包干了3天,技术就明显退步了。。。。。
  • 将要上市的自动驾驶新书《自动驾驶系统开发》中摘录各章片段 1
  • String、StringBuilder、StringBuffer之间的区别是什么?
  • docker系列8:容器卷挂载(上)
  • 痉挛性斜颈患者自己做哪些运动对脖子好?
  • 数据结构——二叉树链式结构的实现(上)
  • 数据结构内容概览
  • 当Linux系统运行时间长了之后,会出现磁盘空间不足提示,需要及时进行清理
  • 【Flask 系统教程 4】Jinjia2模版和语法
  • 与 Apollo 共创生态:七周年大会心得
  • 『FPGA通信接口』DDR(4)DDR3内存条SODIMMs读写测试
  • Element UI 快速入门指南
  • CentOS常用命令有哪些?
  • cmd查看局域网内所有设备ip
  • 5.3作业
  • java-Spring-mvc-(请求和响应)
  • 亚马逊测评工作室如何轻松实现高收益,跨境电商揭秘汇率差赚钱术
  • unity中 UnityWebRequest.Post和 UnityWebRequest uwr = new UnityWebRequest两种方法有什么区别
  • Java学习-练习试用Java实现求素数
  • 最近学习发现一个background-blend-mode,这是CSS的一个新成员吧!这里分享记录一下
  • 虚幻引擎5 Gameplay框架(二)
  • 云原生Kubernetes: K8S 1.29版本 部署Sonarqube
  • 读天才与算法:人脑与AI的数学思维笔记19_深度数学
  • Springboot+Vue项目-基于Java+MySQL的旅游网站系统(附源码+演示视频+LW)
  • Element UI 简介
  • mysql 删除重复的数据保留id最大的一条
  • UE4 Widget制作搜索框
  • JavaScript js写九九乘法表(两种方法)
  • 算法--贪心算法
  • Redis基本數據結構 ― String