阿里云DTS踩坑经验分享系列|DTS SelectDB链路最佳实践

本文涉及的产品
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: 大数据时代背景下,高效的数据流转与实时分析能力对于企业的竞争力至关重要。阿里云数据传输服务DTS与SelectDB联合,为用户提供了简单、实时、极速且低成本的事务数据分析方案。用户可以通过 DTS 数据传输服务,一键将自建 MySQL/PostgreSQL、RDS MySQL/PostgreSQL、PolarDB for MySQL/PostgreSQL 数据库,迁移或同步至阿里云数据库 SelectDB 的实例中,帮助企业在短时间内完成数据迁移或同步,并即时获得深度洞察。

阿里云DTS作为数据世界高速传输通道的建造者,每周为您分享一个避坑技巧,助力数据之旅更加快捷、便利、安全。

点击立即体验DTS SelectDB同步链路



作者:宇缤


一、导读

大数据时代背景下,高效的数据流转与实时分析能力对于企业的竞争力至关重要。阿里云数据传输服务DTS与SelectDB联合,为用户提供了简单、实时、极速且低成本的事务数据分析方案。用户可以通过 DTS 数据传输服务,一键将自建 MySQL/PostgreSQL、RDS MySQL/PostgreSQL、PolarDB for MySQL/PostgreSQL 数据库,迁移或同步至阿里云数据库 SelectDB 的实例中,帮助企业在短时间内完成数据迁移或同步,并即时获得深度洞察。


二、DTS SelectDB链路能力介绍

1.链路能力界限

DTS支持从MySQL/PostgreSQL 迁移或同步 结构/全量/增量数据到阿里云SelectDB,当您使用DTS传输数据时,需要了解DTS支持的能力、功能限制和接入DTS的准备工作,以便您平稳地完成数据迁移或同步。

限制项

说明

支持的版本

  • MySQL
    • 自建MySQL5.1、5.5、5.6、5.7、8.0版本
    • RDS MySQL所有版本
    • PolarDB MySQL:所有版本
  • PostgreSQL:
    • 自建PostgreSQL9.5.x、9.6.x、10.x、11.x、12.x、13.x、14.x、15.x、16.x版本
    • RDS PostgreSQL9.4、10、11、12、13、14、15、16版本
    • PolarDB PostgreSQL:11、14、15、16版本
  • 阿里云SelectDB:3.0、4.0版本

支持的架构

  • 库表结构迁移/同步、全量数据迁移/同步、增量数据迁移/同步

支持的数据

  • 支持同步DML操作,支持同步ADD/DROP COLUMN等部分DDL操作(支持范围外的DDL不同步,任务继续运行)。
  • 支持表名、列名等属性名的映射
  • 支持数据过滤
  • 支持同步数据到SelectDB的Unique/Duplicate表
    • 到Unique表:需选取合适字段作为UniqueKey,避免因数据合并导致的数据缺失
    • 到Duplicate表:
  • 支持常见的表、数据类型,数据类型映射关系请参见附录。

特别注意事项

  • 待同步或迁移的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。
  • 在库表结构同步和全量同步阶段,请勿执行库或表结构变更的DDL操作,否则会导致数据同步任务失败。
  • 由于SelectDB实例仅支持以字母开头的库名和表名,如果待同步的库名或表名不是以字母开头,则需要使用映射功能进行修改。
  • 待同步对象(库、表、列)的名称不能包含中文,若有,则需要使用映射功能进行修改(例如将其修改为英文),否则可能会导致任务失败。
  • 在数据同步过程中,请勿在SelectDB数据库中增加BE(Backend)节点,否则会导致任务失败,可重启DTS任务尝试进行恢复。

2.库表结构迁移

DTS支持MySQL/PostgreSQL到SelectDB的库表结构迁移。当DTS任务中勾选了库表结构迁移时,会在任务配置过程中增加“配置库表字段”页面。在该页面上可以对SelectDB中表的Key列、分桶列(Distributed by...)、表引擎进行设置。

待迁移的表需具备主键或唯一约束时,DTS库表结构迁移模块默认在SelectDB创建Unique表,且Key列和分桶列默认选用源端的主键列/唯一键列。

待迁移的表需不具备主键且不具备唯一约束时,DTS库表结构迁移模块默认在SelectDB创建Duplicate表,且需要在配置库表字段”页面手动配置Key列和分桶列。且库表结构迁移模块会在已有列的基础上增加_is_deleted_version_record_id三个标识列用于判断数据的存在性、源端生成时间和写入目标端的顺序,下表为3个标识的具体说明:

名称

数据类型

默认值

说明

_is_deleted

int

0

数据是否被删除:

  • Insert:记录为0
  • Update::记录为0
  • Delete:记录为1

_version

bigint

0

数据生成的版本:

  • 全量数据:记录为0
  • 增量数据:记录为源端binlog中对应的时间戳(秒级)

_record_id

bigint

0

数据写入的标识:

  • 全量数据:记录为0
  • 增量数据:增量日志的记录ID,为该日志唯一标识,且递增。


3.数据迁移

image.png

3.1 迁移/同步数据到SelectDB的Unique表

全量迁移阶段,DTS从源端切片拉取数据,通过StreamLoad方式写入SelectDB,支持断点续传和数据过滤,支持切片级别的并发读取和写入,提供高性能的数据迁移能力。

增量迁移阶段,基于Unique表的数据合并能力以及StreamLoad的删除标记列能力,实现大规模增量数据的攒批StreamLoad写入,并且采用写时合并策略(merge on write),降低对业务读取的扰动。

3.2 迁移/同步数据到SelectDB的Duplicate表

DTS全量和增量迁移均采用StreamLoad方式写入,并且增量阶段对于insert/update/delete均采用追加写的形式进行同步,实现对于源端数据变更历程的完整记录。

为判断数据的存在性、源端生成时间和写入目标端的顺序,需使用DTS库表结构迁移或保证Duplicate表中具有以上_is_deleted、_version、_record_id三个标识列,并在业务上依据标识列对数据进行筛选。


三、常见问题解答

1.Char/Varchar类型数据超长无法写入

MySQL和PostgreSQL中VARCHAR(n)中n代表是字符长度,而在SelectDB中是字节长,由于SelectDB采用utf8mb4编码,所以建议将SelectDB中列的长度设置为VARCHAR(4*n),从而避免数据超长导致无法写入。

2.String类型数据超长无法写入

SelectDB中String类型数据默认允许占用空间为1048576字节(1MB),当源端对应列数据长度超过该限制时,会导致数据写入报错。可通过修改SelectDB集群中BE节点的配置项string_type_length_soft_limit_bytes来调整String支持的空间大小,最大支持2147483643字节(2GB)。

3.DateTime类型数据写入时报错:不允许将null值写入not null列

首先需要确认源端数据中是否存在null值。若源端对应列具有not null的约束,则通常是源端数据格式非法或不在SelectDB允许的范围内(例如:0000-00-00之类的zerodate)。这类数据在写入SelectDB时,引擎会自动转为null值,若SelectDB中该列具有not null的约束则会导致DTS任务异常。

针对该类问题,可修改源端非法值后重新进行数据同步,或去掉SelectDB中的not null约束来恢复DTS任务。

4.DTS同步过程中SelectDB集群新增BE节点导致同步异常

DTS任务启动时会获取并缓存SelectDB集群中BE节点的地址信息,以保证通过StreamLoad写入数据时能够通过重定向连接到指定的节点。DTS暂时无法主动感知任务运行中SelectDB集群内新增的BE节点,因此当SelectDB集群的BE节点数量发生变更时,可能会导致DTS同步出现异常,需要手动重启DTS任务来恢复任务。


四、快来关注

  1. 数据传输服务(Data Transmission Service,简称DTS)支持关系型数据库、NoSQL、大数据(OLAP)等数据源,集数据迁移、订阅、实时同步、校验功能于一体,能够解决公共云、混合云场景下,远距离、秒级异步数据传输难题。其底层基础设施采用阿里双11异地多活架构,为数千下游应用提供实时数据流,已在线上稳定运行7年之久,是一款沉淀了丰富实践经验的可靠产品。点击了解更多DTS相关信息
  2. 欢迎加入钉群讨论交流:

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 数据采集 监控
阿里云DTS踩坑经验分享系列|SLS同步至ClickHouse集群
作为强大的日志服务引擎,SLS 积累了用户海量的数据。为了实现数据的自由流通,DTS 开发了以 SLS 为源的数据同步插件。目前,该插件已经支持将数据从 SLS 同步到 ClickHouse。通过这条高效的同步链路,客户不仅能够利用 SLS 卓越的数据采集和处理能力,还能够充分发挥 ClickHouse 在数据分析和查询性能方面的优势,帮助企业显著提高数据查询速度,同时有效降低存储成本,从而在数据驱动决策和资源优化配置上取得更大成效。
174 9
|
3月前
|
弹性计算 安全 容灾
阿里云DTS踩坑经验分享系列|使用VPC数据通道解决网络冲突问题
阿里云DTS作为数据世界高速传输通道的建造者,每周为您分享一个避坑技巧,助力数据之旅更加快捷、便利、安全。本文介绍如何使用VPC数据通道解决网络冲突问题。
152 0
|
5月前
|
NoSQL 安全 容灾
阿里云DTS踩坑经验分享系列|Redis迁移、同步
阿里云数据传输服务DTS在帮助用户迁移Redis数据、同步数据时,在某些复杂场景下会出现报错,或者源库与目标库数据不一致的问题,给用户带来困扰。本文介绍了DTS Redis到Redis迁移、同步过程中的典型问题,以帮助用户更好地使用DTS。
330 2
|
7月前
|
SQL 负载均衡 安全
阿里云DTS踩坑经验分享系列|全量迁移加速方法指南
阿里云数据传输服务DTS是一个便捷、高效的数据迁移和数据同步服务。一般而言,一个完整的DTS数据迁移任务主要包括预检查、结构迁移,全量迁移,增量迁移等阶段,其中全量迁移会将源数据库的存量数据全部迁移到目标数据库。面对各种各样的用户场景, 本文将重点介绍如何使用阿里云DTS实现全量数据迁移加速,以缩短迁移时间,确保数据迁移的效率和稳定性。
678 0
|
9月前
|
SQL 运维 关系型数据库
阿里云DTS踩坑经验分享系列|数据不一致修复大法
阿里云数据传输服务DTS在帮助用户迁移数据、同步数据时,在某些复杂场景下会出现源库与目标库数据不一致的问题,造成数据错误,给用户带来困扰。由于数据不一致的问题很难完全避免,为了及时修复不一致的数据,DTS产品推出数据订正功能,保障用户在同步\迁移数据时的数据一致性。本文介绍了产生数据不一致的一些典型场景,并重点阐述了如何使用DTS数据订正功能来修复不一致的数据。
677 4
|
9月前
|
关系型数据库 MySQL OLAP
免费!数据传输服务DTS助您零成本畅享ClickHouse和SelectDB的疾速数据集成之旅!
DTS震撼发布全新数据目标支持:即刻连接 RDS MySQL 至 Clickhouse或 SelectDB,实现数据实时同步的无缝飞跃!现可立享一个月内免费体验,立即了解!
|
9月前
|
NoSQL 关系型数据库 数据库
数据传输服务DTS(Data Transmission Service)是阿里云提供的实时数据流服务
【2月更文挑战第29天】数据传输服务DTS(Data Transmission Service)是阿里云提供的实时数据流服务
121 5
|
9月前
|
关系型数据库 MySQL 数据库
使用阿里云的数据传输服务DTS(Data Transmission Service)进行MySQL 5.6到MySQL 8.0的迁移
【2月更文挑战第29天】使用阿里云的数据传输服务DTS(Data Transmission Service)进行MySQL 5.6到MySQL 8.0的迁移
369 2
|
9月前
|
关系型数据库 MySQL 数据挖掘
阿里云 SelectDB 携手 DTS ,一键实现 TP 数据实时入仓
DTS 作为阿里云核心的数据交互引擎,以其高效的实时数据流处理能力和广泛的数据源兼容性,为用户构建了一个安全可靠、可扩展、高可用的数据架构桥梁。阿里云数据库 SelectDB 通过与 DTS 联合,为用户提供了简单、实时、极速且低成本的事务数据分析方案。用户可以通过 DTS 数据传输服务,一键将自建 MySQL / RDS MySQL / PolarDB for MySQL 数据库,迁移或同步至阿里云数据库 SelectDB 的实例中,帮助企业在短时间内完成数据迁移或同步,并即时获得深度洞察。
阿里云 SelectDB 携手 DTS ,一键实现 TP 数据实时入仓
|
9月前
|
SQL 分布式计算 监控
在数据传输服务(DTS)中,要查看每个小时源端产生了多少条数据
【2月更文挑战第32天】在数据传输服务(DTS)中,要查看每个小时源端产生了多少条数据
91 6

热门文章

最新文章