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

本文涉及的产品
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,同步至 ClickHouse 1个月
简介: 大数据时代背景下,高效的数据流转与实时分析能力对于企业的竞争力至关重要。阿里云数据传输服务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. 欢迎加入钉群讨论交流:

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
SQL 容灾 关系型数据库
阿里云DTS踩坑经验分享系列|DTS打通SQL Server数据通道能力介绍
SQL Server 以其卓越的易用性和丰富的软件生态系统,在数据库行业中占据了显著的市场份额。作为一款商业数据库,外部厂商在通过解析原生日志实现增量数据捕获上面临很大的挑战,DTS 在 SQL Sever 数据通道上深研多年,提供了多种模式以实现 SQL Server 增量数据捕获。用户可以通过 DTS 数据传输服务,一键打破自建 SQL Server、RDS SQL Server、Azure、AWS等他云 SQL Server 数据孤岛,实现 SQL Server 数据源的流动。
362 0
阿里云DTS踩坑经验分享系列|DTS打通SQL Server数据通道能力介绍
|
9月前
|
存储 数据采集 监控
阿里云DTS踩坑经验分享系列|SLS同步至ClickHouse集群
作为强大的日志服务引擎,SLS 积累了用户海量的数据。为了实现数据的自由流通,DTS 开发了以 SLS 为源的数据同步插件。目前,该插件已经支持将数据从 SLS 同步到 ClickHouse。通过这条高效的同步链路,客户不仅能够利用 SLS 卓越的数据采集和处理能力,还能够充分发挥 ClickHouse 在数据分析和查询性能方面的优势,帮助企业显著提高数据查询速度,同时有效降低存储成本,从而在数据驱动决策和资源优化配置上取得更大成效。
354 9
|
10月前
|
弹性计算 安全 容灾
阿里云DTS踩坑经验分享系列|使用VPC数据通道解决网络冲突问题
阿里云DTS作为数据世界高速传输通道的建造者,每周为您分享一个避坑技巧,助力数据之旅更加快捷、便利、安全。本文介绍如何使用VPC数据通道解决网络冲突问题。
389 0
|
NoSQL 安全 容灾
阿里云DTS踩坑经验分享系列|Redis迁移、同步
阿里云数据传输服务DTS在帮助用户迁移Redis数据、同步数据时,在某些复杂场景下会出现报错,或者源库与目标库数据不一致的问题,给用户带来困扰。本文介绍了DTS Redis到Redis迁移、同步过程中的典型问题,以帮助用户更好地使用DTS。
1003 2
|
SQL 运维 关系型数据库
阿里云DTS踩坑经验分享系列|数据不一致修复大法
阿里云数据传输服务DTS在帮助用户迁移数据、同步数据时,在某些复杂场景下会出现源库与目标库数据不一致的问题,造成数据错误,给用户带来困扰。由于数据不一致的问题很难完全避免,为了及时修复不一致的数据,DTS产品推出数据订正功能,保障用户在同步\迁移数据时的数据一致性。本文介绍了产生数据不一致的一些典型场景,并重点阐述了如何使用DTS数据订正功能来修复不一致的数据。
1017 4
|
SQL 负载均衡 安全
阿里云DTS踩坑经验分享系列|全量迁移加速方法指南
阿里云数据传输服务DTS是一个便捷、高效的数据迁移和数据同步服务。一般而言,一个完整的DTS数据迁移任务主要包括预检查、结构迁移,全量迁移,增量迁移等阶段,其中全量迁移会将源数据库的存量数据全部迁移到目标数据库。面对各种各样的用户场景, 本文将重点介绍如何使用阿里云DTS实现全量数据迁移加速,以缩短迁移时间,确保数据迁移的效率和稳定性。
1095 0
|
NoSQL 关系型数据库 数据库
数据传输服务DTS(Data Transmission Service)是阿里云提供的实时数据流服务
【2月更文挑战第29天】数据传输服务DTS(Data Transmission Service)是阿里云提供的实时数据流服务
284 5
|
关系型数据库 MySQL OLAP
免费!数据传输服务DTS助您零成本畅享ClickHouse和SelectDB的疾速数据集成之旅!
DTS震撼发布全新数据目标支持:即刻连接 RDS MySQL 至 Clickhouse或 SelectDB,实现数据实时同步的无缝飞跃!现可立享一个月内免费体验,立即了解!
|
关系型数据库 MySQL 数据挖掘
阿里云 SelectDB 携手 DTS ,一键实现 TP 数据实时入仓
DTS 作为阿里云核心的数据交互引擎,以其高效的实时数据流处理能力和广泛的数据源兼容性,为用户构建了一个安全可靠、可扩展、高可用的数据架构桥梁。阿里云数据库 SelectDB 通过与 DTS 联合,为用户提供了简单、实时、极速且低成本的事务数据分析方案。用户可以通过 DTS 数据传输服务,一键将自建 MySQL / RDS MySQL / PolarDB for MySQL 数据库,迁移或同步至阿里云数据库 SelectDB 的实例中,帮助企业在短时间内完成数据迁移或同步,并即时获得深度洞察。
1398 3
阿里云 SelectDB 携手 DTS ,一键实现 TP 数据实时入仓
|
SQL 分布式计算 监控
在数据传输服务(DTS)中,要查看每个小时源端产生了多少条数据
【2月更文挑战第32天】在数据传输服务(DTS)中,要查看每个小时源端产生了多少条数据
161 6