TableStore: 使用Datax将实例A的数据迁移到实例B中

本文涉及的产品
对象存储 OSS,20GB 3个月
文件存储 NAS,50GB 3个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
简介: 现在我们需要将数据从一个老的实例A迁移到实例B上面,做一下备份,我们打算使用Datax作为我们的数据传输工具,其中用到了otsreader和otswriter。

背景

现在我们需要将数据从一个老的实例A迁移到实例B上面,做一下备份,我们打算使用Datax作为我们的数据传输工具,其中用到了otsreader和otswriter。

将数据从A实例备份到B实例

  • 第一步,TableStore环境准备,当前Datax不支持自动建表的功能,所以我们需要在B中创建迁移对应的表。创建表的时候有两个选择,第一是使用 ots cli,第二是使用table store的SDK。我们建议使用SDK。
 ots cli : https://market.aliyun.com/products/53690006/cmgj000264.html?spm=5176.730005.0.0.CEf1EF
 sdk: https://www.aliyun.com/product/ots
于此同时获取A和B的相关信息。后面的配置都要使用下面的信息,所以提前准备好。信息如下:
## 实例A
## endpoint:http://a.cn-hangzhou.ots.aliyuncs.com
## ak(秘钥): ******
## 实例:A
## Table: person_info
## 主键:uid(string), pid(int)
## 属性列:length(int),address(string),country(string),description(string)

## 实例B
## endpoint:http://b.cn-hangzhou.ots.aliyuncs.com
## ak(秘钥): ******
## 实例:B
## Table: person_info
## 主键:uid(string), pid(int)
  • 第二步,Datax环境准备,找一台机器两边都能联通的ECS,在ECS上面部署Datax
git clone https://github.com/red-chen/one_key_install_datax.git
cd one_key_install_datax
sh datax.sh install
  • 第三步,编辑Datax Job的配置
# 我们这里会使用到两个插件,分别是otsreader和otswriter,
# otsreader的帮助文档:https://github.com/alibaba/DataX/blob/master/otsreader/doc/otsreader.md 
# otswriter的帮助文档:https://github.com/alibaba/DataX/blob/master/otswriter/doc/otswriter.md 
# 配置如下:

vim ots_to_ots.json

{
    "job": {
        "setting": {
            "speed": {
                "channel": "1"
            }
        },
        "content": [
            {
                "reader": {
                    "name": "otsreader",    
                    "parameter": {
                        "endpoint":"http://a.cn-hangzhou.ots.aliyuncs.com",
                        "accessId":"*********",
                        "accessKey":"*********",
                        "instanceName":"A",
                        "table":"person_info",
                        "column" : [
                            {"name":"uid"},
                            {"name":"pid"},
                            {"name":"length"},
                            {"name":"address"},
                            {"name":"country"},
                            {"name":"description"}
                        ],
                       "range": {
                            "begin":[{"type": "INF_MIN"},{"type": "INF_MIN"}],
                            "end":[{"type":"INF_MAX"},{"type": "INF_MAX"}],
                           "split":[]      
                       }
                    }
                },
               "writer": {
                    "name": "otswriter",
                    "parameter": {
                        "endpoint":"http://b.cn-hangzhou.ots.aliyuncs.com",
                        "accessId":"*********",
                        "accessKey":"*********",
                        "instanceName":"B",
                        "table":"person_info",
                        "primaryKey" : [
                            {"name":"uid", "type":"string"},
                            {"name":"pid", "type":"int"}
                        ],
                        "column" : [
                            {"name":"length", "type":"int"},
                            {"name":"address", "type":"string"},
                            {"name":"country", "type":"string"},
                            {"name":"description", "type":"string"}
                        ],
                        "writeMode" : "PutRow"
                    }
                }
            }
        ]
    }
}
  • 第四步,启动Datax
# datax会每10秒打印一次速率,可以根据这个速率评估大体的迁移时间
sh datax.sh run ots_to_ots.json


# 等待执行完毕,结束的样例如下:
任务启动时刻                    : 2016-06-30 00:00:00
任务结束时刻                    : 2016-06-30 16:00:00
任务总计耗时                    :              57600s
任务平均流量                    :               1.2M/s
记录写入速度                    :            1736rec/s
读出记录总数                    :           100000000
读写失败总数                    :                   0

高级选项

由于很多时候数据量会非常大,但是全量迁移(备份)的时间因为业务的原因受到了限制,需要很快的将数据备份过去。这个时候需要开启高级选项。插件支持并发的的迁移数据,这里需要利用到otsreader的range并发读功能。其实原理很简单,就是讲表拆分成多份,并发的读取数据。步骤如下

# 第一步,环境准备,创建要目标表

# 第二步,计算Range的个数,可以先简单跑一下迁移任务,看看当个Range(没有配置Split,默认就是一个Range)的速率是多少,一般是1M~10M之间,具体的大小和单行的大小有一定关系,比如我们要1000秒跑完,单个Range只有5M/s,数据量为10GB,所以可以得到Range:10GB / 5M / 1000秒 = 2,需要两个Range任务。

# 第三步,发送工单,要求阿里的工程师将源表和目标表,分为2个分区,并提供一下分区的分区点。如我们的表,第一列是Int类型的,数据范围是0~10000,且数据是均匀在这个范围内分布。所以分区之后,第一个分区的数据范围是0~5000,第二个是5000~10000,所以可以得到的迁移范围是[0, 5000), [5000, 10000),分区点(split)就是5000

# 第四步,修改配置,修改reader的的range配置在split中添加一个切分点,如下配置:


    "split":[
        {"type":"int", "value":"5000"}
    ]

同时修改channel为2,如下:

"speed": {
        "channel": "2"
 }

# 上面配置的意思就是将导入任务拆分一次,拆分点就是5000。这样配置之后,datax任务将会被拆分为2个并发线程,第一个线程导的数据范围就是无限小到5000,第二个就是5000到无限大。
相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
目录
相关文章
|
数据采集 关系型数据库 MySQL
大数据数据采集的数据迁移(同步/传输)的Sqoop之DataX
在大数据领域中,数据迁移是一个非常重要的任务。而Sqoop是一款流行且实用的数据迁移工具,但是它对于某些特定场景的数据迁移并不太方便。为了解决这个问题,阿里巴巴集团开发了一款开源的数据集成工具DataX,提供了更多的数据迁移方式和功能。本文将介绍DataX的基本原理和使用方法,希望能够为大家提供一些参考和帮助。
481 0
|
DataWorks 关系型数据库 MySQL
4.独享数据集成资源组与 rds 实例 vpc 网络打通指导|学习笔记
快速学习4.独享数据集成资源组与 rds 实例 vpc 网络打通指导
4.独享数据集成资源组与 rds 实例 vpc 网络打通指导|学习笔记
|
DataX 开发者
DataX在数据迁移中的应用
DataX在数据迁移中的应用
DataX在数据迁移中的应用
|
弹性计算 大数据 Shell
使用DataX进行OTS实例间数据迁移
本文主要说明在业务不停服的前提下如何实现对OTS的增量迁移,以及迁移后的数据一致性校验
3878 0
|
DataX Python Java
OTS数据迁移验证方案
  OTS在业务停写的情况下,可以通过DATAX工具对OTS数据的全量迁移。本文描述了在进行业务割接的情况下,ots数据的全量迁移配置方法,以及数据校验方法。 1 OTS数据迁移方法 1.1 工具环境要求 tablestore客户端工具机:在本地安装表格存储客户端管理工具,提供图形化的操作界面,用于创建、更新和删除数据表。
4768 0
|
3月前
|
数据采集 DataWorks 监控
DataWorks产品使用合集之数据集成并发数不支持批量修改,该怎么办
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
30天前
|
数据采集 DataWorks 数据管理
DataWorks不是Excel,它是一个数据集成和数据管理平台
【10月更文挑战第10天】随着大数据技术的发展,企业对数据处理的需求日益增长。阿里云推出的DataWorks是一款强大的数据集成和管理平台,提供从数据采集、清洗、加工到应用的一站式解决方案。本文通过电商平台案例,详细介绍了DataWorks的核心功能和优势,展示了如何高效处理大规模数据,帮助企业挖掘数据价值。
81 1
|
1月前
|
数据采集 SQL DataWorks
DataWorks不是Excel,它是一个数据集成和数据管理平台
【10月更文挑战第5天】本文通过一家电商平台的案例,详细介绍了阿里云DataWorks在数据处理全流程中的应用。从多源数据采集、清洗加工到分析可视化,DataWorks提供了强大的一站式解决方案,显著提升了数据分析效率和质量。通过具体SQL示例,展示了如何构建高效的数据处理流程,突显了DataWorks相较于传统工具如Excel的优势,为企业决策提供了有力支持。
87 3
|
2月前
|
存储 分布式计算 DataWorks
dataworks数据集成
dataworks数据集成
102 1
|
2月前
|
机器学习/深度学习 DataWorks 数据挖掘
基于阿里云Hologres和DataWorks数据集成的方案
基于阿里云Hologres和DataWorks数据集成的方案
66 7