IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> DataX oracle同步mysql(新增及变化) -> 正文阅读

[大数据]DataX oracle同步mysql(新增及变化)

一、Datax安装

1 Datax下载

DataX工具下载地址:https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/20220530/datax.tar.gz

1.1 Datax安装

1.1.1 把下载好的 datax.tar.gz 上传到Linux

1.1.2 解压 tar -xzvf datax.tar.gz ,会有/datax 目录,进入cd datax 目录

在这里插入图片描述

1.1.3 先删除datax目录中的所有隐藏文件,否则执行脚本会失败

 find ./ -name '._*' -print0 |xargs -0 rm -rf

1.1.4 执行测试脚本:./bin/datax.py job/job.json ,看到下图的效果,说明环境正常

在这里插入图片描述

2.DataX 全量同步数据,oracle 到 mysql

2.1oracle数据库表

在这里插入图片描述

2.2 使用navicat 工具-数据传输-设置原数据-目标文件

将orcale中的表导出为mysql建表语句格式
在这里插入图片描述
在这里插入图片描述

2.3 sfiles.sql 目标文件

)
因为mysql和orcale数据库的建表语句类型有差异

2.4 修改sfiles.sql文件

  • 1.主键类型修改
  • 2.时间类型修改
    修改后的内容
CREATE TABLE `SFILES` (
`ID`  int(11) NOT NULL ,
`PDF_FILE`  varchar(200) NULL ,
`CREATE_TIME`  datetime(6) NULL ,
`EDIT_TIME`  datetime(6) NULL ,
PRIMARY KEY (`ID`)
);

2.5 执行建表语句

在这里插入图片描述
此时mysql中就有和orcale中一样的表了。

2.6 在Datax目录下 执行./bin/datax.py -r oraclereader -w mysqlwriter ,获取示例json配置,然后去修改里面的参数。

#在job 目录中创建 vi osflies_to_msfiles.json,这是改完后能同步的参数配置
{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "oraclereader",
                    "parameter": {
                        "column": ["*"],
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:oracle:thin:@127.0.0.1:7029:EERFDB"],
                                "table": ["SFILES"]
                            }
                        ],
                        "password": "123456",
                        "username": "root"
                    }
                },
                "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "column": ["*"],
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://node1:3306/eerf_user?useUnicode=true&characterEncoding=UTF-8",
                                "table": ["SFILES"]
                            }
                        ],
                        "password": "123456",
                        "preSql": [],
                        "session":["set session sql_mode='ANSI'"],
                        "username": "root",
                        "writeMode": "update"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": "3"
            }
        }
    }
}

执行全量同步:./bin/datax.py job/oracle_to_mysql.json ,可以看到有 1045条记录被同步到mysql了
在这里插入图片描述

3. Datax 新增及变化同步

vim /opt/module/datax/job/osfiles_to_msfiles1.json

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "oraclereader",
                    "parameter": {
                        "column": ["*"],
                        "where": "EDIT_TIME >to_date('${start_time}','yyyy-mm-dd hh24:mi:ss')  and EDIT_TIME <= to_date('${end_time}','yyyy-mm-dd hh24:mi:ss')",
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:oracle:thin:@10.175.94.58:7029:EERFDB"],
                                "table": ["SFILES"]
                            }
                        ],
                        "password": "123456",
                        "username": "eerf_user"
                    }
                },
                "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "column": ["*"],
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://node1:3306/eerf_user?useUnicode=true&characterEncoding=UTF-8",
                                "table": ["SFILES"]
                            }
                        ],
                        "password": "123456",
                        "preSql": [],
                        "session":["set session sql_mode='ANSI'"],
                        "username": "root",
                        "writeMode": "update"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": "3"
            }
        }
    }
}

vim /opt//datax/shell/test_file.sh

#!/bin/bash
source /etc/profile
#当前时间戳
cur_time=$(date +%s)
#结束时间
end_time="'$(date -d @$cur_time +"%Y-%m-%d %H:%M:%S")'"
#开始时间,为当前时间的前300s
start_time="'$(date -d @$(($cur_time-300)) +"%Y-%m-%d %H:%M:%S")'"

# 执行datax脚本,传入时间范围
/opt/module/datax/bin/datax.py /opt/module/datax/job/osfiles_to_msfiles.json -p "-Dcreate_time=$start_time -Dend_time=$end_time" &

并给test_file.sh赋可执行权限:chmod -R 777 test_file.sh

然后设置 crontab 定时任务,每5分钟执行一次,和上面脚本中的300s对应

crontab -e
*/5 * * * * /opt/module/datax/shell/test_file.sh >/dev/null 2>&1

前提条件:

  • 1.在orcale中有新数据产生时,create_time 和 edit_time 默认为当前时间
    修改数据时edit_time 动态改为当前时间 .
  • 2.在条件1 已成立的情况下可以保证mysql新增及变化同步成功
    好了,此时就完成了新增及变化同步

4.DataX同步流程:

  • 1.第一次部署datax时,手动执行全量同步脚本,同步已有客户数据
  • 2.再进行增量同步,用Linux的crontab和脚本配合,能按时间进行增量同步
  • 3.oracle同步mysql时,有几种同步模式,建议"writeMode"设置为"update":
    • 3.1.mysql的"writeMode"设置为"insert",在有重复数据记录时,不会同步,直接跳过,就算oracle中该条数据已经修改了,也不会同步
    • 3.2.mysql的"writeMode"设置为"replace",在有重复数据记录时,会先删除mysql中的记录,再把oracle中的记录新增进去
    • 3.3.mysql的"writeMode"设置为"update",在有重复数据记录时,会把oracle中的列,覆盖mysql中的列,未配置同步的列,不会覆盖
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:30:00  更:2022-07-17 16:31:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:14:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码