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

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

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
相关文章
|
7天前
|
存储 运维 安全
云上金融量化策略回测方案与最佳实践
2024年11月29日,阿里云在上海举办金融量化策略回测Workshop,汇聚多位行业专家,围绕量化投资的最佳实践、数据隐私安全、量化策略回测方案等议题进行深入探讨。活动特别设计了动手实践环节,帮助参会者亲身体验阿里云产品功能,涵盖EHPC量化回测和Argo Workflows量化回测两大主题,旨在提升量化投研效率与安全性。
云上金融量化策略回测方案与最佳实践
|
9天前
|
人工智能 自然语言处理 前端开发
从0开始打造一款APP:前端+搭建本机服务,定制暖冬卫衣先到先得
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。
8422 20
|
12天前
|
Cloud Native Apache 流计算
资料合集|Flink Forward Asia 2024 上海站
Apache Flink 年度技术盛会聚焦“回顾过去,展望未来”,涵盖流式湖仓、流批一体、Data+AI 等八大核心议题,近百家厂商参与,深入探讨前沿技术发展。小松鼠为大家整理了 FFA 2024 演讲 PPT ,可在线阅读和下载。
4548 11
资料合集|Flink Forward Asia 2024 上海站
|
13天前
|
自然语言处理 数据可视化 API
Qwen系列模型+GraphRAG/LightRAG/Kotaemon从0开始构建中医方剂大模型知识图谱问答
本文详细记录了作者在短时间内尝试构建中医药知识图谱的过程,涵盖了GraphRAG、LightRAG和Kotaemon三种图RAG架构的对比与应用。通过实际操作,作者不仅展示了如何利用这些工具构建知识图谱,还指出了每种工具的优势和局限性。尽管初步构建的知识图谱在数据处理、实体识别和关系抽取等方面存在不足,但为后续的优化和改进提供了宝贵的经验和方向。此外,文章强调了知识图谱构建不仅仅是技术问题,还需要深入整合领域知识和满足用户需求,体现了跨学科合作的重要性。
|
20天前
|
人工智能 自动驾驶 大数据
预告 | 阿里云邀您参加2024中国生成式AI大会上海站,马上报名
大会以“智能跃进 创造无限”为主题,设置主会场峰会、分会场研讨会及展览区,聚焦大模型、AI Infra等热点议题。阿里云智算集群产品解决方案负责人丛培岩将出席并发表《高性能智算集群设计思考与实践》主题演讲。观众报名现已开放。
|
8天前
|
人工智能 容器
三句话开发一个刮刮乐小游戏!暖ta一整个冬天!
本文介绍了如何利用千问开发一款情侣刮刮乐小游戏,通过三步简单指令实现从单个功能到整体框架,再到多端优化的过程,旨在为生活增添乐趣,促进情感交流。在线体验地址已提供,鼓励读者动手尝试,探索编程与AI结合的无限可能。
三句话开发一个刮刮乐小游戏!暖ta一整个冬天!
|
1月前
|
存储 人工智能 弹性计算
阿里云弹性计算_加速计算专场精华概览 | 2024云栖大会回顾
2024年9月19-21日,2024云栖大会在杭州云栖小镇举行,阿里云智能集团资深技术专家、异构计算产品技术负责人王超等多位产品、技术专家,共同带来了题为《AI Infra的前沿技术与应用实践》的专场session。本次专场重点介绍了阿里云AI Infra 产品架构与技术能力,及用户如何使用阿里云灵骏产品进行AI大模型开发、训练和应用。围绕当下大模型训练和推理的技术难点,专家们分享了如何在阿里云上实现稳定、高效、经济的大模型训练,并通过多个客户案例展示了云上大模型训练的显著优势。
104586 10
|
8天前
|
消息中间件 人工智能 运维
12月更文特别场——寻找用云高手,分享云&AI实践
我们寻找你,用云高手,欢迎分享你的真知灼见!
713 44
|
6天前
|
弹性计算 运维 监控
阿里云云服务诊断工具:合作伙伴架构师的深度洞察与优化建议
作为阿里云的合作伙伴架构师,我深入体验了其云服务诊断工具,该工具通过实时监控与历史趋势分析,自动化检查并提供详细的诊断报告,极大提升了运维效率和系统稳定性,特别在处理ECS实例资源不可用等问题时表现突出。此外,它支持预防性维护,帮助识别潜在问题,减少业务中断。尽管如此,仍建议增强诊断效能、扩大云产品覆盖范围、提供自定义诊断选项、加强教育与培训资源、集成第三方工具,以进一步提升用户体验。
639 243
|
2天前
|
弹性计算 运维 监控
云服务测评 | 基于云服务诊断全方位监管云产品
本文介绍了阿里云的云服务诊断功能,包括健康状态和诊断两大核心功能。作者通过个人账号体验了该服务,指出其在监控云资源状态和快速排查异常方面的优势,同时也提出了一些改进建议,如增加告警配置入口和扩大诊断范围等。

热门文章

最新文章