OTS数据迁移验证方案

本文涉及的产品
表格存储 Tablestore,50G 2个月
简介:   OTS在业务停写的情况下,可以通过DATAX工具对OTS数据的全量迁移。本文描述了在进行业务割接的情况下,ots数据的全量迁移配置方法,以及数据校验方法。 1 OTS数据迁移方法 1.1 工具环境要求 tablestore客户端工具机:在本地安装表格存储客户端管理工具,提供图形化的操作界面,用于创建、更新和删除数据表。

  OTS在业务停写的情况下,可以通过DATAX工具对OTS数据的全量迁移。本文描述了在进行业务割接的情况下,ots数据的全量迁移配置方法,以及数据校验方法。

1 OTS数据迁移方法

1.1 工具环境要求

tablestore客户端工具机:在本地安装表格存储客户端管理工具,提供图形化的操作界面,用于创建、更新和删除数据表。

     datax数据迁移工具机:安装python、jdk 和datax。Jdk版本需要1.7及以上,python版本推荐2.6.x。

以上两台工具机需要跟老、新环境的OTS实例开通防火墙策略的80端口。

1.2 迁移前提条件

1)     源ots停止新数据的写入。

2)     用datax迁移前,确定好ots表结构的primary key及其他所有的属性列。

1.3 OTS数据迁移割接步骤

ots采用datax进行数据迁移,在ots源停止新数据写入的情况下,把源库的表的数据全部迁移到新库。

1.3.1 目标端创建ots表

通过TableStore客户端创建新库对应的数据表,表结构如下:

 

列名称

类型

primaryKey

PrimaryKeyName

string

注意:

    ots创建表结构时只创建primarykey,属性列不需要创建。

1.3.2 配置datax任务

datax的迁移配置ots_migration.json的配置内容如下,在迁移数据的配置中,需要列全所有的属性列。

{

 "job": {

        "setting": {

            "speed": {

                "channel": "5"

            }

        },

        "content": [

            {

                "reader": {

                    "name": "otsreader",

                    "parameter": {

                        "endpoint":"http://xxx.vpc.ots.yyy.com/",

                        "accessId":"src_accessId",

                        "accessKey":"src_ accessKey ",

                        "instanceName":"KHGL-VPC2-01",

                        "table":"tablename",

                        "column" : [

                            {"name":" PrimaryKeyName "},

                            {"name":"createId"},

                            {"name":"createUser"},

                           {"name":"createName"},

                           {"name":"searchTime"},

                            {"name":"state"},

                            {"name":"stateDesc"},

                            {"name":"createTime"}

                       ],

                       "range": {

                            "begin":[{"type": "INF_MIN"}],

                            "end":[{"type":"INF_MAX"}]

                       }

                    }

                },

               "writer": {

                    "name": "otswriter",

                    "parameter": {

                        "endpoint":"http://xxx.vpc.ots.yun.zzz.com/",

                        "accessId":"dest_accessId",

                        "accessKey":"dest_accessKey",

                        "instanceName":"RHYKF-OTS-VPC1-1",

                        "table":"tablename",

                        "primaryKey" : [

                            {"name":"zCodeMD5", "type":"string"}

                        ],

                        "column" : [

                                   {"name":"createId","type":"string"},

                                   {"name":"createUser","type":"string"},

                                   {"name":"createName","type":"string"},

                                   {"name":"searchTime","type":"string"},

                                   {"name":"state","type":"string"},

                                   {"name":"stateDesc","type":"string"},

                                   {"name":"createTime","type":"string"}

                          ],

                        "writeMode" : "PutRow"

                    }

                }

            }

        ]

    }

}

1.3.3 执行datax任务

执行datax命令

nohup python datax.py ots_migration.json>ots_result &

2 OTS数据校验方法

2.1 数据校验的场景

通过datax分别把源和目标ots数据导出为文本文件,可以首先对两个导出数据文件进行md5sum比较,如果md5sum的返回值不同,需要根据数据割接窗口的时间要求和数据一致性要求进行如下两点操作。如果对数据一致性要求较高,需要对两个数据文件进行diff比较。如果数据文件较大,此校验方法耗时会比较长,可简单对两个数据文件的行数进行对比。

2.2 数据校验的方法

2.2.1 通过diff进行数据一致性校验

将源和目标端的全量数据导出到第三方服务器上,通过diff方式对比源和目的端的数据,来进行数据校验。

通过diff的方式,对两个数据文件,进行逐行对比。由于datax是按照顺序进行数据的导出,不要求事先对数据文件进行排序。

l  Diff使用方法

diff  file1 file2

2.2.2 通过行数统计的方法进行数据校验

将源和目的端的全量数据导出到第三方服务器上,通过行数统计的方式对比源和目的端的数据,具体操作命令通过datax把ots的源和目标数据分别导出文本,分别从datax的导出日志中获取到ots源和目标数据的行数。

示例如下:其中读出记录总数就是ots数据行数。

2017-11-24 22:05:12.023 [job-0] INFO  JobContainer -

任务启动时刻                    : 2017-11-24 21:31:10

任务结束时刻                    : 2017-11-24 22:05:12

任务总计耗时                    :               2041s

任务平均流量                    :            4.00MB/s

记录写入速度                    :          82053rec/s

读出记录总数                    :           167390000

读写失败总数                    :                   0

 

3 OTS数据迁移回滚方法

由于OTS不支持增量迁移方法,一旦涉及到业务上线之后,OTS已经有数据写入,但需要进行业务回滚的场景,需要依照正向迁移的方式将ots数据进行全量回切。

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
目录
相关文章
|
存储 NoSQL
TableStore: 海量结构化数据分层存储方案
### 前言 表格存储是阿里云自研分布式存储系统,可以用来存储海量结构化、半结构化的数据。表格存储支持高性能和容量型两种实例类型。高性能使用SSD的存储介质,针对读多写多的场景都有较好的访问延时。容量型使用的是SSD和SATA混合的存储介质。
9508 0
|
存储 SQL 传感器
基于 Tablestore 时序存储的物联网数据存储方案
背景物联网时序场景是目前最火热的方向之一。海量的时序数据如汽车轨迹数据、汽车状态监控数据、传感器实时监控数据需要存放进入数据库。一般这类场景下存在如下需求数据高写入,低读取需要对写入数据进行基础的图表展示对写入数据进行聚合分析传统的关系型数据库并不适合此类场景,时序数据库脱颖而出。表格存储时序实例支持时序数据的存储,其具有如下特点:Serverless,分布式,低成本高写入支持优秀的索引能力对数据
1539 0
基于 Tablestore 时序存储的物联网数据存储方案
|
存储 运维 NoSQL
阿里云表格存储全面升级,打造一站式物联网存储新方案
阿里云表格存储全面升级,打造一站式物联网存储新方案
576 0
阿里云表格存储全面升级,打造一站式物联网存储新方案
|
存储 SQL 缓存
|
存储 分布式计算 大数据
3月19日JindoFS系列直播【关于 JindoFS 最新的 OTS 方案】
本次直播主要介绍JindoFS的元数据的后端演化。包括JindoFS的架构以及使用场景、JindoFS 元数据的不同的后端支持,以及JindoFS 在云上环境如何支持 OTS 作为元数据后端。
3月19日JindoFS系列直播【关于 JindoFS 最新的 OTS 方案】
|
NoSQL DataX 开发工具
TableStore: 使用Datax将实例A的数据迁移到实例B中
现在我们需要将数据从一个老的实例A迁移到实例B上面,做一下备份,我们打算使用Datax作为我们的数据传输工具,其中用到了otsreader和otswriter。
7001 0
|
弹性计算 大数据 Shell
使用DataX进行OTS实例间数据迁移
本文主要说明在业务不停服的前提下如何实现对OTS的增量迁移,以及迁移后的数据一致性校验
3878 0
|
存储 监控 NoSQL
基于表格存储的高性能监控数据存储计算方案
概述         随着软件架构的愈发复杂,了解系统现状、调查问题的困难度也增加了很多。此时,一套完善的监控方案能够让开发和运维工程师快速排查问题,更好的维护系统的稳定性。        开源监控方案中,Zabbix、Nagios都是不错的监控软件,可以针对数十万的设备监控数百万的指标,强大的
1698 0
|
存储 索引
表格存储根据多元索引查询条件直接更新数据
表格存储是否可以根据多元索引查询条件直接更新数据?
111 3
|
4月前
|
DataWorks NoSQL 关系型数据库
DataWorks产品使用合集之如何从Tablestore同步数据到MySQL
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。