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.mzph.cn/news/78476.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实时显示当前文件夹下的文件大小,shell脚本实现

图片来源于网络,如果侵权请联系博主删除! 需求: 写一个shell终端命令,实时显示当前文件夹下的文件大小 实现: 您可以使用以下的Shell脚本命令来实时显示当前文件夹下的文件大小: while true; docleardu …

2023-亲测有效-git clone失败怎么办?用代理?加git?

git 克隆不下来,超时 用以下格式: git clone https://ghproxy.com/https://github.com/Tencent/ncnn.git 你的网站前面加上 https://ghproxy.com/ 刷的一下就下完了!!

投资理财基础知识分享(三)

大家好,我是财富智星,今天跟继续跟大家分享投资理财基础知识,买理财,何时买,何时卖的问题。 一、何时买? 在投资中,决定何时买入资产对于理财新手来说并不是一个应该花费过多精力的问题&#xf…

音频驱动嘴型的视频数字人虚拟主播工具motionface replay使用教程

音频驱动嘴型的视频数字人虚拟主播工具motionface replay使用教程 1:系统要求 软件运行支持32位/64位window 10/11系统,内存最低要求> 8Gb.无其他硬性要求。 1:下载安装 打开百度网盘链接下载: 链接:百度网盘 请输入…

Transformers-Bert家族系列算法汇总

🤗 Transformers 提供 API 和工具,可轻松下载和训练最先进的预训练模型。使用预训练模型可以降低计算成本、碳足迹,并节省从头开始训练模型所需的时间和资源。这些模型支持不同形式的常见任务,例如: 📝 自…

Vue3统一导出局部组件和全局组件

局部组件统一导出 components新增ComponentA.vue、ComponentB.vue两个组件 新增index.js进行组件统一导入 import ComponentA from ./ComponentA.vue import ComponentB from ./ComponentB.vueexport {ComponentA,ComponentB }使用 <template><ComponentA /><…

最新模块化设计小程序系统源码完整版:开源可二开,支持DIY

随着互联网的快速发展&#xff0c;小程序已成为各行各业开展业务的重要工具。而模块化设计小程序系统源码完整版则是一种高效、灵活、易维护的解决方案。 分享一个最新的模块化设计小程序系统源码完整版&#xff0c;源码开源可二开&#xff0c;支持自由DIY设计&#xff0c;含完…

怎么裁剪图片?总结了下面几个方法

怎么裁剪图片&#xff1f;在日常的生活中&#xff0c;图片已经成为了我们不可或缺的一部分。或许你正在整理自己的相册时&#xff0c;或者我们需要向互联网上发布一些图片的时候&#xff0c;总之我们随时都可能会遇到一张需要进行裁剪的图片。比如说&#xff0c;一些图片上存在…

Unity 课时 4 : No.4 模拟面试题

课时 4 : No.4 模拟面试题 C# 1. 请说明字符串中 string str null string str “” string str string.Empty 三者的区别 第一个未作初始化没有值, 第二个为空字符串, 答案&#xff1a; str null 在堆中没有分配内存地址 str "" 和 string.Empty 一样都是…

新加坡亲子游景点推荐

长久以来&#xff0c;新加坡和马来西亚都是中国游客非常青睐的出境游目的地之一&#xff0c;极近的距离、便捷的交通、亲切的语言和文化环境使得这里的旅游体验备受赞誉。如果你准备带孩子去新加坡和马来西亚观光游&#xff0c;可以让你们享受到更多样的亲子旅行体验噢~ Wild W…

设计模式汇总

设计模式本质上是某类特定问题的代码设计解决方案&#xff0c;实际上是一套某类问题的代码设计经验总结。&#xff08;前辈总结的解决某类问题的切实可行的套路&#xff09; 问题 1、为什么要使用设计模式&#xff1f; 答&#xff1a;1、 提高代码复用率&#xff0c;降低开发成…

【网络通信 -- WebRTC】FlexFec 基本知识点总结概述

【网络通信 -- WebRTC】FlexFec 基本知识点总结概述 【1】FlexFec 的保护方案 假设存在一组源数据包(D L)&#xff0c;其序列号从 1 开始运行到 D L 一维非交错行 FEC(1-D Non-interleaved Row FEC) : 一种连续的源数据包进行保护的方案&#xff0c;可用于恢复按行分组的源…

Linux内存管理--smaps内存

一、内存的两个概念 了解smaps内存之前要先搞清楚Linux内存管理中的虚拟内存&#xff08;Virtual Memory&#xff09;和驻留内存&#xff08;Resident Memory&#xff09;两个概念。 1、虚拟内存 首先需要强调的是虚拟内存不同于物理内存&#xff0c;虽然两者都包含内存字眼…

微信会员卡开发流程

功能需求&#xff1a; 通过微信第三方平台创建的模板小程序&#xff0c;想要实现用户在小程序支付一定金额后领取会员卡&#xff0c;领取会员卡后可给用户下发一定数量的优惠券&#xff0c;并且实现用户在小程序消费享受商品折扣。 开发流程&#xff1a; 一、了解微信的3个平…

Java高级: 反射

目录 反射反射概述反射获取类的字节码反射获取类的构造器反射获取构造器的作用反射获取成员变量&使用反射获取成员方法反射获取成员方法的作用 反射的应用案例 接下来我们学习的反射、动态代理、注解等知识点&#xff0c;在以后开发中极少用到&#xff0c;这些技术都是以后…

【动态规划刷题 14】最长递增子序列 摆动序列

673. 最长递增子序列的个数 链接: 673. 最长递增子序列的个数 给定一个未排序的整数数组 nums &#xff0c; 返回最长递增子序列的个数 。 注意 这个数列必须是 严格 递增的。 示例 1: 输入: [1,3,5,4,7] 输出: 2 解释: 有两个最长递增子序列&#xff0c;分别是 [1, 3, 4,…

[Qt]基础数据类型和信号槽

文章目录 1. Qt基本结构1.1 Qt本有项目1.1.1 项目文件&#xff08;.pro&#xff09;1.1.2 main.cpp1.1.3 mainwindow.ui1.1.4 mainwindow.h1.1.5 mainwindow.cpp 1.2 Qt中的窗口类1.2.1基础窗口类1.2.2 窗口的显示 1.3 内存回收 2. Qt中的基础数据类型2.1 基础类型2.2 log输出2…

Linux上防火墙操作

开放关闭防火墙 查看防火墙状态的命令&#xff1a;systemctl status firewalld 或者 firewall-cmd --state 暂时关闭防火墙的命令&#xff1a;systemctl stop firewalld 暂时开启防火墙的命令&#xff1a;systemctl start firewalld 永久关闭防火墙(禁用开机自启)下次启动&a…

内网穿透——Windows搭建服务器

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中&#xff0c;观看视频绝对是主力应用场景之一&…

使用redis+lua通过原子减解决超卖问题【示例】

系列文章目录 一、SpringBoot连接MySQL数据库实例【tk.mybatis连接mysql数据库】 二、SpringBoot连接Redis与Redisson【代码】 三、SpringBoot整合WebSocket【代码】 四、使用redislua通过原子减解决超卖问题【示例】 五、SpringBoot整合Elasticsearch【代码示例】 文章目录 系…