我的编程空间,编程开发者的网络收藏夹
学习永远不晚

DataX安装使用实现MySQL到MySQL数据同步

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

DataX安装使用实现MySQL到MySQL数据同步


	DataX安装使用实现MySQL到MySQL数据同步
[数据库教程]

DataX安装使用实现MySQL到MySQL数据同步

1.前置条件:

1.1jdk安装

  • jdk安装前往官网,这里我安装jdk-8u261

  • 解压

    sudo mkdir -p /opt/moudle
    sudo tar -zxvf jdk-8u261-linux-x64.tar.gz -C /opt/moudle/
    
    
  • 设置环境变量

    export JAVA_HOME=/opt/moudle/jdk1.8.0_261
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH
    
  • 刷新配置

    source /etc/profile
    
  • 检查java

    java -version
    
    # 出现下面安装成功
    java version "1.8.0_261"
    Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
    

1.2python安装

  • 略(官方推荐>=2.6.X)

1.3 Hadoop单机伪分布式安装

2.安装DataX

  • DataX是阿里巴巴的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。

    !技术图片

  • 下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

  • 解压

    tar -zxvf datax.tar.gz -C /opt/software/
    
  • 运行自检脚本

    cd /opt/software/datax/
    bin/datax.py job/job.json
    
  • 出现下面界面表示成功:

技术图片

  • /opt/software/datax/job/job.json格式。
{
	"content":[
		{
			"reader":{
				"name":"streamreader",# 流式读,根据DataX定义好的设置
				"parameter":{
					"column":[#把column里所有value读到流当中
						{
							"type":"string",
							"value":"DataX"
						},
						{
							"type":"long",
							"value":19890604
						},
						{
							"type":"date",
							"value":"1989-06-04 00:00:00"
						},
						{
							"type":"bool",
							"value":true
						},
						{
							"type":"bytes",
							"value":"test"
						}
					],
					"sliceRecordCount":100000
				}
			},
			"writer":{
				"name":"streamwriter",# 流式写,根据DataX定义好的设置
				"parameter":{
					"encoding":"UTF-8",
					"print":false#打印
				}
			}
		}
	],
	"setting":{
		"errorLimit":{# errorLimit错误限制
			"percentage":0.02,# 最大容忍错误限制百分比2%
			"record":0# 容忍错误记录调试 0
		},
		"speed":{# 控制并发数:通过byte或channel控制,这里默认通过byte控制
			"byte":10485760#以 sliceRecordCount乘以byte,打印数据条数占用空间
		}
	}
}

3.基本使用

3.1从stream读取数据并打印到控制台。

  • 首先查看官方json配置模版

    # 查看 streamreader --> streamwriter 模版
    python /opt/software/datax/bin/datax.py -r streamreader -w streamwriter
    # 模版如下:
    DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
    Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.
    
    
    Please refer to the streamreader document:
         https://github.com/alibaba/DataX/blob/master/streamreader/doc/streamreader.md 
    
    Please refer to the streamwriter document:
         https://github.com/alibaba/DataX/blob/master/streamwriter/doc/streamwriter.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": "streamreader", 
                        "parameter": {
                            "column": [], 
                            "sliceRecordCount": ""
                        }
                    }, 
                    "writer": {
                        "name": "streamwriter", 
                        "parameter": {
                            "encoding": "", 
                            "print": true
                        }
                    }
                }
            ], 
            "setting": {
                "speed": {
                    "channel": ""
                }
            }
        }
    }
    
  • 根据模版编写json文件

    {
        "job": {
            "content": [
                {
                    "reader": {
                        "name": "streamreader", 
                        "parameter": {
                            "column": [
                                {
                                    "type":"string",
                                    "value":"xujunkai, hello world!"
                                },
                                {
                                    "type":"string",
                                    "value":"徐俊凯, 你好!"
                                },
                            ], 
                            "sliceRecordCount": "10"#打印次数
                        }
                    }, 
                    "writer": {
                        "name": "streamwriter", 
                        "parameter": {
                            "encoding": "utf-8", #编码方式utf-8
                            "print": true
                        }
                    }
                }
            ], 
            "setting": {
                "speed": {#控制并发数
                    "channel": "2"#控制并发2次-->这里因为是打印所以会sliceRecordCount乘以channel 打印20遍。如果设置为mysql真的会进行并发
                }
            }
        }
    }
    
  • 创建一个json文件,在根目录

    mkdir json
    cd json/
    vim stream2stream.json
    # 将上述内容粘贴进去
    
  • 运行job

    /opt/software/datax/bin/datax.py ./stream2stream.json
    
  • 如下图:

    技术图片

3.2从MySQL到MySQL批量插入

3.2.1预先准备工作:
  • 写入和读取方准备创建库和表

    # 创建库
    create database `testdatax` character set utf8
    # 创建表
    create table user1w(
    id int not null auto_increment,
    name varchar(10) not null,
    score int not null,
    primary key(`id`))engine=InnoDB default charset=utf8;
    
  • 编写一个简单存储过程,读取数据端插入数据:

    DELIMITER //
    create PROCEDURE add_user(in num INT)
    BEGIN
    DECLARE rowid INT DEFAULT 0;
    DECLARE name CHAR(1);
    DECLARE score INT;
    WHILE rowid < num DO
    SET rowid = rowid + 1;
    set name = SUBSTRING(‘abcdefghijklmnopqrstuvwxyz‘,ROUND(1+25*RAND()),1);
    set score= FLOOR(40 + (RAND()*60));
    insert INTO user1w (name,score) VALUES (name,score);
    END WHILE;
    END //
    DELIMITER ;
    
  • 执行插入数据

    call add_user(10000);
    
3.2.2 查看一下mysql到mysql的json配置
  • python /opt/software/datax/bin/datax.py -r mysqlreader -w mysqlwriter,json文件配置:

    {
        "job": {
            "content": [
                {
                    "reader": {
                        "name": "mysqlreader", # 读取端,根据DataX定义好的设置
                        "parameter": {
                            "column": [], # 读取端需要同步的列
                		   "splitPk": "",# 数据抽取时指定字段进行数据分片
                            "connection": [
                                {
                                    "jdbcUrl": [], #读取端连接信息
                                    "table": []# 读取端指定的表
                                }
                            ], 
                            "password": "", #读取端账户
                            "username": "", #读取端密码
                            "where": ""# 描述筛选条件
                        }
                    }, 
                    "writer": {
                        "name": "mysqlwriter", #写入端,根据DataX定义好的设置
                        "parameter": {
                            "column": [], #写入端需要同步的列
                            "connection": [
                                {
                                    "jdbcUrl": "", # 写入端连接信息
                                    "table": []# 写入端指定的表
                                }
                            ], 
                            "password": "", #写入端密码
                            "preSql": [], # 执行写入之前做的事情
                            "session": [], 
                            "username": "", #写入端账户
                            "writeMode": ""# 操作乐星
                        }
                    }
                }
            ], 
            "setting": {
                "speed": {
                    "channel": ""#指定channel数
                }
            }
        }
    }
    
  • 我的配置json:

    {
        "job": {
            "content": [
                {
                    "reader": {
                        "name": "mysqlreader", 
                        "parameter": {
                            "username": "root",
                            "password": "123"
                            "column": ["*"],
                            "splitPk": "id",
                            "connection": [
                                {
                                    "jdbcUrl": [
                                        "jdbc:mysql://读取端IP:3306/testdatax?useUnicode=true&characterEncoding=utf8"
                                    ], 
                                    "table": ["user1w"]
                                }
                            ]
                        }
                    }, 
                    "writer": {
                        "name": "mysqlwriter", 
                        "parameter": {
                            "column": ["*"], 
                            "connection": [
                                {
                                    "jdbcUrl": "jdbc:mysql://写入端IP:3306/testdatax?useUnicode=true&characterEncoding=utf8", 
                                    "table": ["user1w"]
                                }
                            ], 
                            "password": "123", 
                            "preSql": [
                                "truncate user1w"
                            ], 
                            "session": [
                                "set session sql_mode=‘ANSI‘"
                            ], 
                            "username": "root", 
                            "writeMode": "insert"
                        }
                    }
                }
            ], 
            "setting": {
                "speed": {
                    "channel": "5"
                }
            }
        }
    }
    
  • cd到datax下bin目录执行:

    python2 datax.py /root/json/mysql2mysql.json
    
  • 会打印同步数据信息完毕。更多配置见github-dataX

3.3从数据库MySQL数据导入到HDFS中

python /opt/software/datax/bin/datax.py -r mysqlreader -w mysqlwriter
  • 未完待续...

DataX安装使用实现MySQL到MySQL数据同步

原文地址:https://www.cnblogs.com/xujunkai/p/13378942.html

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

DataX安装使用实现MySQL到MySQL数据同步

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

DataX安装使用实现MySQL到MySQL数据同步

DataX安装使用实现MySQL到MySQL数据同步1.前置条件:1.1jdk安装jdk安装前往官网,这里我安装jdk-8u261解压sudo mkdir -p /opt/moudlesudo tar -zxvf jdk-8u261-linux-x64.tar
DataX安装使用实现MySQL到MySQL数据同步
2018-05-28

Python脚本实现datax全量同步mysql到hive

目录前言一、展示脚本二、使用准备三、脚本使用方法前言在我们构建离线数仓时或者迁移数据时,通常选用sqoop和datax等工具进行操作,sqoop和datax各有优点,datax优点也很明显,基于内存,所以速度上很快,那么在进行全量同步时编
Python脚本实现datax全量同步mysql到hive
2024-10-23

怎么使用DataX同步MaxCompute数据到TableStore

这篇文章给大家介绍怎么使用DataX同步MaxCompute数据到TableStore,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。概述现在越来越多的技术架构下会组合使用MaxCompute和TableStore,用M
2023-06-05

MySQL 数据实时同步到 Elasticsearch 的技术实现

将 MySQL 数据实时同步到 Elasticsearch 可以显著增强数据的实时搜索和分析能力。根据具体需求和环境,可以选择适合的同步方法和技术实现。无论是使用现成的工具如 Logstash 和 Debezium,还是编写自定义程序,都需

基于Flink CDC实时同步数据(MySQL到MySQL)

一、环境 jdk8Flink 1.16.1(部署在远程服务器:192.168.137.99)Flink CDC 2.3.0MySQL 8.0(安装在本地:192.168.3.31) (安装部署过程略) 二、准备 准备三个数据库:flink_
2023-08-16

MySQL同步数据Replication的实现步骤

目录一、同步复制数据基本原理二、同步数据示例1、修改主从mysql配置文件2、主机建立同步账号,并查看主库状态信息3、从机同步配置4、查看同步配置效果MySQL提供了Replication功能,可以实现将一个数据库的数据同步到多台其他数据库
2023-03-24

编程热搜

目录