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

文章目录

一、Linux环境要求

jdk1.8及以上

python2

二、准备工作

2.1 Linux安装jdk

linux 复制代码
 yum install -y java-1.8.0-openjdk.x86_64

查看是否安装成功

linux 复制代码
java -version

2.2 linux安装python

linux 复制代码
 yum install -y python

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

linux 复制代码
python --version

2.3 下载DataX:

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

linux 复制代码
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"

linux 复制代码
vim /opt/software/datax/job/job.json

将内容换成以下内容

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 复制代码
 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查询语句中按照定时任务规律,查询此字段时间大于定时任务时间间隔之前的时间的数据。

相关推荐
一 乐2 分钟前
餐厅管理智能点餐系统|基于java+ Springboot的餐厅管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端
gAlAxy...16 分钟前
SpringMVC 响应数据和结果视图:从环境搭建到实战全解析
大数据·数据库·mysql
likuolei38 分钟前
XQuery 完整语法速查表(2025 最新版,XQuery 3.1)
xml·java·数据库
越努力越幸运5081 小时前
git工具的学习
大数据·elasticsearch·搜索引擎
不会写程序的未来程序员1 小时前
详细的 Git 操作分步指南
大数据·git·elasticsearch
b***46241 小时前
从 SQL 语句到数据库操作
数据库·sql·oracle
Q***f6351 小时前
后端数据库性能优化的8个工具推荐
数据库·性能优化
一水鉴天1 小时前
整体设计 定稿 之1 devOps 中台的 结论性表述(豆包助手)
服务器·数据库·人工智能
vx_dmxq2112 小时前
【微信小程序学习交流平台】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·python·mysql·微信小程序·小程序·idea
武子康2 小时前
大数据-167 ELK Elastic Stack(ELK) 实战:架构要点、索引与排错清单
大数据·后端·elasticsearch