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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 现在我们需要将数据从一个老的实例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到无限大。
相关实践学习
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
目录
相关文章
|
10月前
|
数据采集 关系型数据库 MySQL
大数据数据采集的数据迁移(同步/传输)的Sqoop之DataX
在大数据领域中,数据迁移是一个非常重要的任务。而Sqoop是一款流行且实用的数据迁移工具,但是它对于某些特定场景的数据迁移并不太方便。为了解决这个问题,阿里巴巴集团开发了一款开源的数据集成工具DataX,提供了更多的数据迁移方式和功能。本文将介绍DataX的基本原理和使用方法,希望能够为大家提供一些参考和帮助。
272 0
|
DataX 开发者
DataX在数据迁移中的应用
DataX在数据迁移中的应用
DataX在数据迁移中的应用
|
弹性计算 大数据 Shell
使用DataX进行OTS实例间数据迁移
本文主要说明在业务不停服的前提下如何实现对OTS的增量迁移,以及迁移后的数据一致性校验
3749 0
|
DataX Python Java
OTS数据迁移验证方案
  OTS在业务停写的情况下,可以通过DATAX工具对OTS数据的全量迁移。本文描述了在进行业务割接的情况下,ots数据的全量迁移配置方法,以及数据校验方法。 1 OTS数据迁移方法 1.1 工具环境要求 tablestore客户端工具机:在本地安装表格存储客户端管理工具,提供图形化的操作界面,用于创建、更新和删除数据表。
4594 0
|
6月前
|
存储 DataWorks Unix
Dataworks数据集成之“文本数据”
Dataworks不是支持文本数据导入么?为什么Excel数据不能导入?CSV文件不就是Excel文件么?关于这些问题,我整理了一篇文章进行解释。
764 2
|
9月前
|
数据采集 SQL 分布式计算
数据处理 、大数据、数据抽取 ETL 工具 DataX 、Kettle、Sqoop
数据处理 、大数据、数据抽取 ETL 工具 DataX 、Kettle、Sqoop
978 0
|
1月前
|
分布式计算 DataWorks Java
DataWorks常见问题之数据集成导出分区表的全量数据如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
35 0
|
3月前
|
DataX
datax数据推送,汉字乱码
datax数据推送,汉字乱码.
147 1
|
3月前
|
DataWorks 关系型数据库 MySQL
DataWorks的数据集成实时同步mysql数据吗?
DataWorks的数据集成实时同步mysql数据吗?
118 0
|
4月前
|
数据采集 存储 自然语言处理
【数据挖掘】数据清洗、数据集成、数据标准化的详解(超详细 附源码)
【数据挖掘】数据清洗、数据集成、数据标准化的详解(超详细 附源码)
89 0