首页 > 其他分享 >使用datax做数据同步所踩的坑。。。

使用datax做数据同步所踩的坑。。。

时间:2024-11-08 13:45:51浏览次数:3  
标签:同步 数据库 json jdbc DataX mysql 数据 datax

数据同步步骤:

按照网上的步骤下载部署好datax后,开始尝试数据同步:先准备好数据,任务为将test数据库的test1同步至testwriter数据库的test2.

datax目录为/usr/local/datax,datax.py目录为/usr/local/datax/bin下。由于此次数据同步连接的两个数据库均为mysql类型,先查看.json文件配置格式:

cd /usr/local/datax/bin //先进入data.py目录下
python datax.py -r mysqlreader -w mysqlwriter //查看.json文件配置格式

DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.


Please refer to the mysqlreader document:
     https://github.com/alibaba/DataX/blob/master/mysqlreader/doc/mysqlreader.md 

Please refer to the mysqlwriter document:
     https://github.com/alibaba/DataX/blob/master/mysqlwriter/doc/mysqlwriter.md 
 
Please save the following configuration as a json file and  use
     python {DATAX_HOME}/bin/datax.py {JSON_FILE_NAME}.json 
to run the job.

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader", 
                    "parameter": {
                        "column": [], 
                        "connection": [
                            {
                                "jdbcUrl": [], 
                                "table": []
                            }
                        ], 
                        "password": "", 
                        "username": "", 
                        "where": ""
                    }
                }, 
                "writer": {
                    "name": "mysqlwriter", 
                    "parameter": {
                        "column": [], 
                        "connection": [
                            {
                                "jdbcUrl": "", 
                                "table": []
                            }
                        ], 
                        "password": "", 
                        "preSql": [], 
                        "session": [], 
                        "username": "", 
                        "writeMode": ""
                    }
                }
            }
        ], 
        "setting": {
            "speed": {
                "channel": ""
            }
        }
    }
}

注意要严格按照.json格式,reader的“jdbcUrl”有中括号[],writer的“jdbcUrl”没有中括号。

OK,此时可以复制.json格式,自建一个.json文件作修改了。我的是/usr/local/datax/jsonfile下的mysql2mysql.json

{
  "job": {
    "content": [
      {
        "reader": {
          "name": "mysqlreader",  //reader
          "parameter": {
            "column":["*"], //字段列表
            "connection":[
                {
                        "jdbcUrl":["jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false"], //数据库地址
                        "table":["test1"]  //表名
                }
            ],
            "password":"12345678", //账号密码
            "username":"root"
          }
        },

        "writer": {
          "name": "mysqlwriter", //writer,格式与reader相同
          "parameter": {
            "column":["*"],
           "connection":[
                {
                        "jdbcUrl":"jdbc:mysql://localhost:3306/testwriter?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false",
                        "table":["test2"]
                }
            ],
            "password":"12345678", 
            "username":"root",
            "writeMode":"insert"
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": "5"
       }
    }
  }
}

配置好.json后,回到data.py所在的bin目录下,开始同步。

 python datax.py /usr/local/datax/jsonfile/mysql2mysql.json 

显示已同步完成,此时再打开dbeaver,查看testwriter.test2中数据确实被同步了。

success!

常见报错及解决办法:

1. 经DataX智能分析,该任务最可能的错误原因是:
com.alibaba.datax.common.exception.DataXException: Code:[Framework-02], Description:[DataX引擎运行过程出错,具体原因请参看DataX运行结束时的错误诊断信息  .].  - java.lang.ClassCastException: class java.lang.String cannot be cast to class java.util.List (java.lang.String and java.util.List are in module java.base of loader 'bootstrap')

出现这类错误大概率问题在.json文件,检查格式是否有错误,jdbc链接是否正确等。可以新建一个终端窗口试试能否远程登录mysql来验证。

2. WARN DBUtil - test connection of [jdbc:mysql://127.0.0.1:3306/test] failed, for Code:[DBUtilErrorCode-10], Description:[连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port或者向 DBA 寻求帮助(注意网络环境).]. - 具体错误信息为:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server..
2024-11-08 10:11:54.423 [job-0] ERROR RetryUtil - Exception when calling callable, 异常Msg:DataX无法连接对应的数据库,可能原因是:1) 配置的ip/port/database/jdbc错误,无法连接。2) 配置的username/password错误,鉴权失败。请和DBA确认该数据库的连接信息是否正确。
java.lang.Exception: DataX无法连接对应的数据库,可能原因是:1) 配置的ip/port/database/jdbc错误,无法连接。2) 配置的username/password错误,鉴权失败。请和DBA确认该数据库的连接信息是否正确。

出现这类错误是因为datax的lib中缺少了mysql的驱动文件,直接将mysql驱动文件copy到datax的lib目录下即可。

标签:同步,数据库,json,jdbc,DataX,mysql,数据,datax
From: https://blog.csdn.net/weixin_43154489/article/details/143619574

相关文章

  • 深入理解Java虚拟机 --- 运行时数据区
    程序计数器每个线程都有自己的程序计数器(线程私有),它可以看作是当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型里,字节码解释器工作时就是通过改变计数器的值来选取下一条需要执行的字节码指令。为什么程序计数器线程私有主要是为了保证进程切换之后能够恢复到......
  • 数据结构 --树
    定义树是n(n>=0)个结点的有限集。n=0时,称为空树。在任意一棵树非空树中应满足:(1)有且仅有一个特定的称为根(root)的结点(2)当时,其余结点可分为个互不相交的有限集,其中每一个集合本身又是一颗树,并且称为根的子树。基本概念结点的度:一个结点拥有的子树的数目叶子结点:度为0......
  • Python数据分析NumPy和pandas(二十六、数据整理--连接、合并和重塑 之三:重塑和透视)
    对表格数据的重新排列操作,称为reshape或pivot。有很多种方法对表格数据进行重塑。一、使用分层索引进行reshape分层索引提供了一种在DataFrame中重新排列数据的方法。主要有两个函数方法:stack:将数据中的列旋转或透视到行。unstack:从行转为列。还是用代码示例来学习......
  • python球探数据分析
    Python球探数据分析入门指南作为一名刚入行的小白,你可能会对如何使用Python进行球探数据分析感到困惑。不用担心,这篇文章将为你提供一份详细的入门指南,帮助你逐步掌握这项技能。流程概览首先,让我们通过一个表格来了解整个数据分析的流程:步骤描述1获取数据2数据......
  • 别再手动处理数据了!FastGPT 这个新功能让你提前下班
    大家好!今天给大家介绍FastGPT4.8.11版本新增的一个超强节点-【循环运行】节点。如果你经常需要处理大量数据,这个功能绝对能让你事半功功倍!......
  • 最新毕设-SpringBoot-求职推荐系统-55000(免费领项目)可做计算机毕业设计JAVA、PHP、爬
    摘 要当前社会竞争激烈,求职市场信息众多,但信息不对称、筛选困难的问题依然存在。因此,设计开发一款求职推荐系统是顺应时代发展的必然选择。该求职推荐系统利用Java编程语言,使用springboot技术框架,采取MySQL数据库实现系统的各项功能,具有便捷高效、安全友好的特点,促进求职招聘......
  • 20241107数据封装
    20241107数据封装数据包利用网络在不同设备之间传输时,为了可靠和准确地发送到目的地,并且高效地利用传输资源(传输设备和传输线路),事先要对数据包进行拆分和打包,在所发送的数据包上附加上目标地址,本地地址,以及一些用于纠错的字节,安全性和可靠性较高时,还要进行加密处理等等。这些操......
  • 利用FreeSql.Generator自动根据数据库表动态生成实体类
    安装dotnettoolinstall-gFreeSql.Generator示例FreeSql.Generator-Razor1-NameOptions0,0,0,1-NameSpaceLinCms.Core.Entities-DB"MySql,DataSource=127.0.0.1;Port=3306;UserID=root;Password=123456;InitialCatalog=lincms;Charset=utf8;SslMode=none;M......
  • 毕业设计:python股票推荐系统 数据分析可视化 协同过滤推荐算法 Django框架(源码+论文)✅
    毕业设计:python股票推荐系统数据分析可视化协同过滤推荐算法Django框架(源码+论文)✅1、项目介绍技术栈:python、django框架、requests、BeautifulSoup、协同过滤算法、Echarts可视化、HTML登录注册界面:用户可以注册新账号并登录系统。个人信息修改:用户可以修改个人信......
  • 后端数据校验注解不可用
    解决方法:    1.导入依赖,版本与springboot一致<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>${spring-boot-starter-validation}</version>......