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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
云备份 Cloud Backup,100GB 3个月
简介: 现在我们需要将数据从一个老的实例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的基本原理和使用方法,希望能够为大家提供一些参考和帮助。
429 0
|
DataWorks 关系型数据库 MySQL
4.独享数据集成资源组与 rds 实例 vpc 网络打通指导|学习笔记
快速学习4.独享数据集成资源组与 rds 实例 vpc 网络打通指导
330 0
4.独享数据集成资源组与 rds 实例 vpc 网络打通指导|学习笔记
|
DataX 开发者
DataX在数据迁移中的应用
DataX在数据迁移中的应用
DataX在数据迁移中的应用
|
弹性计算 大数据 Shell
使用DataX进行OTS实例间数据迁移
本文主要说明在业务不停服的前提下如何实现对OTS的增量迁移,以及迁移后的数据一致性校验
3861 0
|
DataX Python Java
OTS数据迁移验证方案
  OTS在业务停写的情况下,可以通过DATAX工具对OTS数据的全量迁移。本文描述了在进行业务割接的情况下,ots数据的全量迁移配置方法,以及数据校验方法。 1 OTS数据迁移方法 1.1 工具环境要求 tablestore客户端工具机:在本地安装表格存储客户端管理工具,提供图形化的操作界面,用于创建、更新和删除数据表。
4753 0
|
4月前
|
数据采集 供应链 搜索推荐
数据集成:融合不同来源的数据
【6月更文挑战第4天】数据集成在企业中发挥关键作用,连接数据孤岛,促进信息流动,提升决策能力。通过抽取、清洗、转换和加载(ETL)不同来源、格式的数据,整合到统一框架,进行深度分析。以零售商为例,集成销售、客户和供应链数据可优化库存管理。数据清洗确保质量,转换满足分析需求,最终加载到数据仓库。Python和pandas库是实现这一过程的工具之一。随着技术进步,数据集成将推动企业向智能化和个性化发展。
109 2
|
4月前
|
数据采集 DataWorks 安全
DataWorks产品使用合集之选择独享调度,数据集成里可以使用,但是数据地图里面测试无法通过,是什么原因导致的
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
43 0
DataWorks产品使用合集之选择独享调度,数据集成里可以使用,但是数据地图里面测试无法通过,是什么原因导致的
|
3月前
|
SQL DataWorks 关系型数据库
DataWorks产品使用合集之数据集成时源头提供数据库自定义函数调用返回数据,数据源端是否可以写自定义SQL实现
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
DataWorks 安全 API
DataWorks产品使用合集之是否可以不使用DataWorks进行EMR的调度和DataX数据导入
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
数据采集 分布式计算 大数据
MaxCompute产品使用合集之数据集成中进行数据抽取时,是否可以定义使用和源数据库一样的字符集进行抽取
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。