随着国家对自主可控的日益重视,目前在各个行业和区域中面临越来越多的国产化,采用有自主知识产权的国产数据库正在成为主流。长期以来,作为拥有纯国产自研背景的 TapData,自是非常重视对于更多国产信创数据库的数据连接器支持,旗下产品已陆续与阿里云、华为云、麒麟软件、优炫数据库、Apache Doris、人大金仓、OceanBase 等国产数据库及操作系统完成产品生态集成认证或产品兼容互认证。
本专题将以 TapData 正在支持的各国产信创数据源为原点,提供详细的数据库同步、迁移教程,为有需求的用户提供更灵活的工具选择。本文将介绍的 TapData 数据源为——TiDB。
国产化浪潮之下,基础软件自主可控迫在眉睫,越来越多的国内企业开始从 Oracle、MySQL 这一类海外数据库向国产数据库迁移,TapData 的能力恰好满足企业快速、无痛实现迁移的需求,有效推动信创行业国产化建设更进一步。信创领域和基础软件设施的自主可控作为国家重点关注领域,全面国产化替代的进程仍在全速前进中。
同为国产基础软硬件生态的积极建设者,TapData 一直以来都在坚持拓展并持续深化与更多国产信创数据库的生态与战略伙伴关系,以期推动更多行业数据管理解决方案及创新应用的落地,提供更加广泛的基础设施选择及技术服务保障,从而为加速国产软硬件产品的应用普及与协同发展贡献力量。纯国产自研的背景更是为 TapData 的这一发展目标添翼。目前,TapData 已成功实现对主流国产数据库的广泛支持,以 TiDB 为例:
TiDB 由 PingCAP 自主设计、研发,为企业关键业务打造,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 协议和 MySQL 生态等重要特性。适合高可用、强一致要求较高、数据规模较大等各种应用场景。核心场景包括金融行业场景、海量数据及高并发的 OLTP 场景、实时 HTAP 场景,以及数据汇聚、二次加工处理的场景。是目前较为知名的国产数据库产品之一。
那么,面临国产化推进需求的企业,如何高效实现面向 TiDB 的数据迁移?
一、TiDB 数据迁移方案
更多详情,参见《TiDB 技术文档-数据迁移》: https://docs.pingcap.com/zh/tidb/stable/migration-overview
TiDB 在官方文档中,为大家提供了一些适用的数据迁移方案:
- 全量数据迁移
- 数据导入:使用 TiDB Lightning 将 Aurora Snapshot,CSV 文件或 SQL dump 文件的数据全量导入到 TiDB 集群。数据导出:
- 使用 Dumpling 将 TiDB 集群的数据全量导出为 CSV 文件或 SQL dump 文件,从而更好地配合从 MySQL 数据库或 MariaDB 数据库进行数据迁移。
- TiDB DM (Data migration) 也提供了适合小规模数据量数据库(例如小于 1 TiB)的全量数据迁移功能。
- 快速初始化 TiDB 集群:TiDB Lightning 提供的快速导入功能可以实现快速初始化 TiDB 集群的指定表的效果。请注意,使用快速初始化 TiDB 集群的功能对 TiDB 集群的影响极大,在进行初始化的过程中,TiDB 集群不支持对外访问。
- 增量数据迁移:使用 TiDB DM 从 MySQL,MariaDB 或 Aurora 同步 Binlog 到 TiDB,该功能可以极大降低业务迁移过程中停机窗口时间。
- TiDB 集群复制:TiDB 支持备份恢复功能,该功能可以实现将 TiDB 的某个快照初始化到另一个全新的 TiDB 集群。
- TiDB 集群增量数据同步:TiCDC 支持同构数据库之间的灾备场景,能够在灾难发生时保证主备集群数据的最终一致性。目前该场景仅支持 TiDB 作为主备集群。
根据迁移数据所在数据库类型、部署位置、业务数据规模大小、业务需求等因素,会有不同数据迁移选择。下面是一些常用的迁移工具汇总:
TiDB Data Migration (DM)
使用场景 | 用于将数据从与 MySQL 协议兼容的数据库迁移到 TiDB |
---|---|
上游 | MySQL,MariaDB,Aurora |
下游 | TiDB |
主要优势 | 一体化的数据迁移任务管理工具,支持全量迁移和增量同步支持对表与操作进行过滤支持分库分表的合并迁移 。 |
使用限制 | 数据导入速度与 TiDB Lightning 的逻辑导入模式大致相同,而比 TiDB Lightning 的物理导入模式低很多。建议用于 1 TB 以内的存量数据迁移。 |
TiDB Lightning
使用场景 | 用于将数据全量导入到 TiDB |
---|---|
上游(输入源文件) | Dumpling 输出的文件从 Amazon Aurora 或 Apache Hive 导出的 Parquet 文件CSV 文件从本地盘或 Amazon S3 云盘读取数据 |
下游 | TiDB |
主要优势 | 支持快速导入大量数据,实现快速初始化 TiDB 集群的指定表支持断点续传支持数据过滤 |
使用限制 | 如果使用物理导入模式进行数据导入,TiDB Lightning 运行后,TiDB 集群将无法正常对外提供服务。如果你不希望 TiDB 集群的对外服务受到影响,可以参考 TiDB Lightning 逻辑导入模式中的硬件需求与部署方式进行数据导入。 |
TiCDC
使用场景 | 通过拉取 TiKV 变更日志实现的 TiDB 增量数据同步工具,具有将数据还原到与上游任意 TSO 一致状态的能力,支持其他系统订阅数据变更 |
---|---|
上游 | TiDB |
下游 | TiDB,MySQL,Kafka,MQ,Confluent,存储服务(如 Amazon S3、GCS、Azure Blob Storage 和 NFS) |
主要优势 | 提供开放数据协议 (TiCDC Open Protocol)。 |
使用限制 | TiCDC 只能同步至少存在一个有效索引的表。暂不支持以下场景:单独使用 RawKV 的 TiKV 集群。在 TiDB 中创建 SEQUENCE 的 DDL 操作和 SEQUENCE 函数 |
TapData
使用场景 | 用于将数据从各类数据源全量/增量导入到 TiDB,同时支持从包括 TiDB 在内的个数据源将数据全量/增量导出 |
---|---|
上游 | TapData 支持的 60 数据目标(含 TiDB),包含商业数据库、开源数据库、云数据库、数据仓库、数据湖、消息队列、SaaS 平台、文件等,且支持自定义数据源 |
下游 | TapData 支持的 60 数据目标(含 TiDB),包含商业数据库、开源数据库、云数据库、数据仓库、数据湖、消息队列、SaaS 平台、文件等,且支持自定义数据源 |
主要优势 | 为进一步简化使用流程,TapData 的 TiDB 连接器集成了 TiCDC,可基于数据变更日志解析为有序的行级变更数据。支持全量数据同步和基于 CDC 的增量实时数据采集,广泛的数据源和数据类型支持,低代码可视化操作 |
使用限制 | 将 TiDB 作为源以实现增量数据同步场景时,还需要检查下述信息:待同步的表需具备主键或唯一索引,其中唯一索引所属列的值不可为 NULL 且不能为虚拟列。为避免 TiCDC 的垃圾回收影响事务或增量数据信息提取,推荐执行命令SET GLOBAL tidb_gc_life_time= '24h' 将其设置为 24 小时。由于 TiDB 组件间通信限制,当采用 Tapdata Cloud 产品时,部署的 Agent 需为半托管实例(详情参见:https://docs.tapdata.net/faq/agent-installation#semi-and-full-agent) |
- 待同步的表需具备主键或唯一索引,其中唯一索引所属列的值不可为 NULL 且不能为虚拟列。
- 为避免 TiCDC 的垃圾回收影响事务或增量数据信息提取,推荐执行命令SET GLOBAL tidb_gc_life_time= '24h' 将其设置为 24 小时。
- 由于 TiDB 组件间通信限制,当采用 Tapdata Cloud 产品时,部署的 Agent 需为半托管实例(详情参见:https://docs.tapdata.net/faq/agent-installation#semi-and-full-agent)
Dumpling
使用场景 | 用于将数据从 MySQL/TiDB 进行全量导出 |
---|---|
上游 | MySQL,TiDB |
下游(输出文件) | SQL,CSV |
主要优势 | 支持全新的 table-filter,筛选数据更加方便支持导出到 Amazon S3 云盘 |
使用限制 | 如果导出后计划往非 TiDB 的数据库恢复,建议使用 Dumpling。如果导出后计划往另一个 TiDB 恢复,建议使用 BR。 |
Backup & Restore (BR)
使用场景 | 通过对大数据量的 TiDB 集群进行数据备份和恢复,实现数据迁移 |
---|---|
上游 | TiDB |
下游(输出文件) | SST,backup.meta 文件,backup.lock 文件 |
主要优势 | 适用于向另一个 TiDB 迁移数据。支持数据冷备份到外部存储,可以用于灾备恢复。 |
使用限制 | BR 恢复到 TiCDC / Drainer 的上游集群时,恢复数据无法由 TiCDC / Drainer 同步到下游。BR 只支持在 mysql.tidb 表中 new_collation_enabled 开关值相同的集群之间进行操作。 |
sync-diff-inspector
使用场景 | 用于校验 MySQL/TiDB 中两份数据的一致性 |
---|---|
上游 | TiDB,MySQL |
下游 | TiDB,MySQL |
主要优势 | 提供了修复数据的功能,适用于修复少量不一致的数据。 |
使用限制 | 对于 MySQL 和 TiDB 之间的数据同步不支持在线校验。不支持 JSON、BIT、BINARY、BLOB 等类型的数据。 |
二、TapData 高效迁移教程:以 MySQL → TiDB 为例
更多详情,参见《TapData 帮助文档-连接数据源-自建数据库 TiDB 》: https://docs.tapdata.net/prerequisites/on-prem-databases/tidb
完成 TapData Agent 部署后,即可跟随以下教程在 TapData 中添加 TiDB 数据源(支持版本:TiDB 6.0.0 及以上),后续可将其作为源或目标库来构建数据管道。这里我们将以 MySQL 为数据源,TiDB 为数据目标进行模拟演示。(*涉及工具版本为 Tapdata 本地部署版)
版本指路:
>>> 点击登录 Tapdata Cloud
>>> 申请试用 Tapdata 本地部署版
*注意:为保障数据的正常同步,TiDB 集群与 TapData 引擎(Agent)之间需处于同一内网且能正常通信。 ① 准备工作
1. 登录 TiDB 数据库,执行下述格式的命令,创建用于数据同步/开发任务的账号。
代码语言:javascript复制CREATE USER 'username'@'host' IDENTIFIED BY 'password';
1. username:用户名
2. host:允许该账号登录的主机,百分号(%)表示允许任意主机。
3. password:密码。
示例:创建一个名为 tapdata 的账号,允许从任意主机登录。
代码语言:javascript复制CREATE USER 'tapdata'@'%' IDENTIFIED BY 'your_passwd';
2. 为刚创建的账号授予权限。
代码语言:javascript复制-- 授予指定库权限
GRANT SELECT, INSERT, UPDATE, DELETE, ALTER, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, DROP ON database_name.* TO 'username';
-- 授予所有库权限
GRANT SELECT, INSERT, UPDATE, DELETE, ALTER, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, DROP ON *.* TO 'username';
- database_name:数据库名称。
- username:用户名。
② 创建 TiDB 的连接
1. 进入 TapData 控制台,在左侧导航栏,单击连接管理。
2. 单击页面右侧的创建,在弹框中,搜索并选择 TiDB。 3. 在跳转到的页面,根据下述说明填写 TiDB 连接信息:
- 连接信息设置
- 连接名称:填写具有业务意义的独有名称。
- 连接类型:支持将 TiDB 数据库作为源或目标。
- PD Server 地址:填写 PDServer 的连接地址和端口,默认端口号为 2379,本参数仅在作为源库时需填写。
- 数据库地址:数据库连接地址。
- 端口:数据库的服务端口,默认为 4000。
- 数据库名称:数据库名称,即一个连接对应一个数据库,如有多个数据库则需创建多个数据连接。
- 账号、密码:数据库的账号和密码,账号的创建和授权方法,见准备工作。
- 高级设置
- 其他连接串参数:额外的连接参数,默认为空。
- 时间类型的时区:默认为数据库所用的时区,您也可以根据业务需求手动指定。
- 共享挖掘:挖掘源库的增量日志,可为多个任务共享源库的增量日志,避免重复读取,从而最大程度上减轻增量同步对源库的压力,开启该功能后还需要选择一个外存用来存储增量日志信息,本参数仅在作为源库时需填写
- 包含表:默认为全部,您也可以选择自定义并填写包含的表,多个表之间用英文逗号(,)分隔。
- 排除表:打开该开关后,可以设定要排除的表,多个表之间用英文逗号(,)分隔。
- agent 设置:默认为平台自动分配,您也可以手动指定。
- 模型加载时间:当数据源中模型数量小于 10,000 时,每小时刷新一次模型信息;如果模型数据超过 10,000,则每天按照您指定的时间刷新模型信息
- 开启心跳表:当连接类型选择为源头和目标、源头时,支持打开该开关,由 Tapdata 在源库中创建一个名为 _tapdata_heartbeat_table 的心跳表并每隔 10 秒更新一次其中的数据(数据库账号需具备相关权限),用于数据源连接与任务的健康度监测
- SSL 设置:选择是否开启 SSL 连接数据源,可进一步提升数据安全性,开启该功能后还需要上传 CA 文件、客户端证书、密钥填写客户端密码。更多介绍,见生成自签名证书
*提示:数据源需在数据复制/开发任务引用并启动后,心跳任务任务才会启动,此时您可以再次进入该数据源的编辑页面,即可单击查看心跳任务。
4. 单击连接测试,测试通过后单击保存:
*提示:如提示连接测试失败,请根据页面提示进行修复。
③ 创建 MySQL 的连接
1. 参照 TiDB 连接创建流程,完成 MySQL 连接配置信息填写,添加数据源 MySQL:
2. 测试 MySQL 连接:
④ 创建数据复制/开发任务
1. 左侧导航栏点击数据复制,并点击右侧创建:
2. 进入 DAG 页面,构建数据复制任务,通过拖拉拽的方式添加源与目标节点,并连接源与目标:
3. 单击源与目标节点,即可按需对二者进行设置:
4. 保存任务:
⑤ 任务启动与监控
1. 启动任务,任务全量同步正常运行:
2. 增量事件正常同步:
以上,便是借助 TapData 快速实现 MySQL 到 TiDB 的全、增量同步的模拟教程。
后续,我们还将陆续输出 GaussDB、人大金仓Kingbase、Oceanbase、神州通用、南大通用、OpenGauss、瀚高、 TDengine、TDSQL、VastBase等热门国产数据源的连接教程,欢迎关注 TapData 官方公众号,了解更多。
关于 TapData
TapData Inc.「深圳钛铂数据有限公司」,成立于2019年9月,核心员工来自 MongoDB、Oracle、百度等,研发人员占比超80%,至今已获五源资本等多家头部风投数千万美元融资。已服务中国移动、中国联通、南方电网、中国一汽、中芯国际、周生生、富邦银行等数十家行业标杆企业。TapData 坚持“开放 开源”战略,推出 TapData Cloud,将无代码数据实时同步的能力以 SaaS 的形式免费开放,目前已积累 1,000 云版和企业版客户,覆盖金融、制造、零售、能源、政府等多个行业。此外,TapData 社区版也已发布,正在面向开发者逐步共享其核心功能。
TapData Live Data Platform是一个以低延迟数据移动为核心优势构建的现代数据平台。企业可以用来实现核心数据系统之间的实时同步、实时交换及实时处理。当实时数据需求日益增多时,企业可以结合分布式存储,使用 TapData 将孤岛数据无缝集中到中央数据平台,为众多下游业务提供一站式的实时数据交换和发布服务。
产品优势:
- 开箱即用与低代码可视化操作
- 内置 100 数据连接器,稳定的实时采集和传输能力
- 秒级响应的数据实时计算能力
- 稳定易用的数据实时服务能力