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

DataX实现Mysql与ElasticSearch(ES)数据同步

文章目录

  • 一、Linux环境要求
  • 二、准备工作
    • 2.1 Linux安装jdk
    • 2.2 linux安装python
    • 2.3 下载DataX:
  • 三、DataX压缩包导入,解压缩
  • 四、编写同步Job
  • 五、执行Job
  • 六、定时更新
    • 6.1 创建定时任务
    • 6.2 提交定时任务
    • 6.3 查看定时任务
  • 七、增量更新思路

一、Linux环境要求

jdk1.8及以上
python2

二、准备工作

2.1 Linux安装jdk

 yum install -y java-1.8.0-openjdk.x86_64

查看是否安装成功

java -version

2.2 linux安装python

 yum install -y python

查看python版本号,判断是否安装成功

python --version

2.3 下载DataX:

三、DataX压缩包导入,解压缩

tar -zxvf datax.tar.gz 

四、编写同步Job

在datax/job下,json格式,具体内容及主要配置含义如下

mysqlreader为读取mysql数据部分,配置mysql相关信息
username,password为数据库账号密码
querySql:需要查询数据的sql,也可通过colums指定需要查找的字段(querySql优先级高)
elasticsearchwriter部分为数据写入ES部分,配置ES相关信息,
endpoint为ES地址,index为索引,columns为需要写入列的信息,其余配置选填

坑!:若运行时提示mysql连接失败,且账号密码,ip,端口号都没问题的情况下,需要像文中一样在jdbcUrl的内容后面加上useSSL=false"

vim /opt/software/datax/job/job.json

将内容换成以下内容

{"job": {"setting": { "speed": {"channel": 1},"errorLimit": {"percentage": 0}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","connection": [{"querySql": ["select * from user_t"],"jdbcUrl": ["jdbc:mysql://数据库地址:3306/mysql?useSSL=false"]}]}},"writer": {"name": "elasticsearchwriter","parameter": {"endpoint":"http://ES地址:9200","accessId":"","accessKey":"","index": "user-demo","cleanup": false,"discovery":false,"column": [{"name": "id","type": "id"},{"name": "userName","type": "text"},{"name": "address","type": "text"}]}}}]}}

五、执行Job

配置好之后执行命令:

 python /opt/software/datax/bin/datax.py /opt/software/datax/job/job.json 

注意换成自己的datax路径

正常情况下输出一大堆之后会是这样,由于我在mysql表中插了三条测试数据,,所以读出记录总数为3
在这里插入图片描述完成操作

六、定时更新

6.1 创建定时任务

vim crondatax
内容:
5 13 * * * python /opt/software/datax/bin/datax.py /opt/software/datax/job/job.json

/opt/software/datax/log.date +\%Y\%m\%d\%H\%M\%S 2>&1
含义为每天13:05执行python /opt/software/datax/bin/datax.py /opt/software/datax/job/job.json 命令,日志输出地址为/opt/software/datax,命名为“log.时间”
crontab格式可参考下图:

6.2 提交定时任务

crontab crondatax

/sbin/service crond restart

6.3 查看定时任务

crontab -l

七、增量更新思路

数据库表设计时加入最后操作时间字段,新增,修改数据都会记录最新时间
Datax的json中,mysql查询语句中按照定时任务规律,查询此字段时间大于定时任务时间间隔之前的时间的数据。

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

相关文章:

  • 第二章 进程与线程 十、调度算法1(先来先服务、短作业优先、最高响应比优先)
  • windows平台 git bash使用
  • Linux系统之安装uptime-kuma服务器监控面板
  • 计算机组成原理——基础入门总结(一)
  • 批量获取CSDN文章对文章质量分进行检测,有助于优化文章质量
  • 从一到无穷大 #17 Db2 Event Store,A Purpose-Built IoT Database Engine
  • 9月16日,每日信息差
  • 准备篇(二)Python 教程
  • HTML+CSS画一个卡通中秋月饼
  • echarts的折线图,在点击图例后,提示出现变化,不报错。tooltip的formatter怎么写
  • C++中的auto是一个关键字,用于在编译时自动推导变量的类型
  • VUE build:gulp打包:测试、正式环境
  • 1.使用turtle换一个五环2.设计这样一个程序:输入一个数字 判断它是不是一个质数
  • C语言希尔排序
  • KubeSphere 在互联网医疗行业的应用实践
  • 物联网:用python调入机器学习分析物联网数据入侵检测模块
  • 使用scss简化媒体查询
  • win部署CRM
  • Linux命令200例:dip用于用户与远程主机建立通信连接
  • 【每日一题】981. 基于时间的键值存储
  • IMU姿态解算,从IMU数据中计算旋转、速度、位置,IMU测量的原理
  • 【Qt-17】Qt调用matlab生成的dll库
  • css经典面试题(二)
  • jira搜索search issue条目rest实用脚本
  • 《C++ primer plus》精炼(OOP部分)——对象和类(5)
  • 钉钉旧版服务端SDK支持异步方法的升级改造
  • 【C语言】【数据存储】用%d打印char类型数据,猜结果是啥
  • 算法——双指针
  • 【PowerQuery】Excel的PowerQuery按需刷新
  • Django REST Farmowork初探