使用DTS实现TiDB到GaiaDB数据迁移

1 概览

本文主要介绍通过 DTS 数据迁移功能,结合消息服务 for Kafka 与 TiDB 数据库的 Pump、Drainer 组件,完成从TiDB迁移至百度智能云云原生数据库 GaiaDB。

  • 消息服务 for Kafka:详细介绍参见:消息服务 for Kafka 产品介绍

  • 百度智能云云原生数据库GaiaDB:详细介绍参见:云原生数据库 GaiaDB

2 需求场景

适用于使用百度智能云数据传输服务 DTS(以下简称 DTS),将 TiDB 数据库实例的数据,通过公网/专线迁移到目标端 GaiaDB 实例中。

3 方案概述

3.1 迁移前置条件

  • 已创建作为迁移源端的 TiDB 实例。

  • 已创建作为迁移目标端的 GaiaDB 实例。

3.2 数据库账号授权

数据库 权限列表
源端 TiDB SELECT, SHOW VIEW
目标端 GaiaDB CREATE, CREATE ROUTINE, CREATE VIEW, ALTER, ALTER ROUTINE, SELECT, INSERT, UPDATE, DELETE, DROP, INDEX

3.3 注意事项

  • DTS 在执行全量迁移时将占用源库和目标库一定的资源,可能会导致数据库负载上升。如果数据库业务量较大或服务器规格较低,可能会加重数据库压力,甚至导致数据库服务不可用。建议您在执行数据同步前谨慎评估,在业务低峰期执行数据同步。

  • 如果源库中待迁移的表没有主键或唯一约束,且所有字段没有唯一性,可能会导致目标数据库中出现重复数据。

4 配置步骤

4.1 准备工作

  • 如果 TiDB 数据库具有白名单限制访问,您需要将 DTS 服务器IP地址加入 TiDB 白名单中。详情参见 DTS 授权 IP 白名单。

  • 若您需要增量同步,则需进行以下配置:


TiDB2GaiaDB.png

    1. 部署 Pump 和 Drainer 组件,详情请参见 TiDB Binlog 集群部署。

    2. 修改 Drainer 组件的配置文件,设置输出为 Kafka,详情请参见 Kafka 自定义开发。

    3. 部署 Kafka 集群,您可以选择自建或使用百度智能云消息服务 for Kafka,详情参见创建消息服务 for Kafka

注意: 1. 当接入方式为专线接入时,请确保Kafka集群部署在专线接入相同的 VPC 内。2. 若选择百度智能云消息服务作为中转 Kafka,请在创建集群时确保将 网络配置>产品间转储 开关打开。

4.2 配置数据迁移

4.2.1 创建任务

首先,在创建任务界面配置数据传输任务的部分上下游连接信息,创建任务时支持源端/目标端位置选择自建数据存储和百度智能云数据库。

源端可根据数据源接入方式选择不同的接入类型:

接入类型:自建数据存储(公网)

  • 接入类型:支持公网/BCC/BBC/DCC 自建 TiDB 实例。

  • 数据类型:固定选择 TiDB。

  • 地域:自建数据存储实例所在的百度智能云逻辑地域。

接入类型:自建数据存储(专线)

  • 接入类型:支持专线接入 TiDB 实例。

  • 数据类型:固定选择 TiDB。

  • 地域:专线接入实例所在的百度智能云逻辑地域。

  • 专线接入所在网络:仅接入类型选择专线接入时存在。专线接入有三个可选项分别为:该地域的 VPC 列表、该地域的可用区列表、选定可用区对应的子网列表。VPC 列表中请选择专线所在的 VPC。

目标端接入类型可直接选择云原生数据库 GaiaDB:

接入类型:云原生数据库 GaiaDB

  • 接入类型:支持云原生数据库 GaiaDB 实例。

  • 数据类型:固定选择 GaiaDB。

  • 地域:云原生数据库 GaiaDB 实例所在的百度智能云逻辑地域。

  • 允许一键反向:开启后,可以支持割接后执行一键反向,一键建立反向回滚同步任务。

  • 链路规格:根据限流需求按需选择。

完成配置后点击【下一步】按钮完成创建任务,返回列表页。

4.2.2 配置任务

列表页点击任务操作栏右侧【配置任务】按钮进入配置任务界面。

4.2.2.1 连接信息配置

源端连接信息配置:

接入类型:自建数据存储(公网)

  • 主机名/IP:公网接入时,需要填入 TiDB 实例的公网 IP,支持填写域名。

  • 端口:填入 TiDB 实例的端口。

  • 账号:填入 TiDB 实例的访问账号。

  • 密码:填入 TiDB 实例的访问密码。

  • 是否同步增量:若需要做增量同步,需要开启此选项,开启后需要填写 Kafka 连接信息,如下所示:

  • Kafka 版本:选择 Kafka 版本号。

  • Kafka Broker:填入 Kafka Broker,支持格式 IP:端口,IP 与端口以英文冒号分隔,多个地址以英文逗号分隔,如 192.168.1.1:9092,192.168.1.2:9093。

  • Kafka Topic:填入 Kafka Topic 名称,Topic 需要提前创建好。

  • Kafka 消息格式:填入 Kafka 消息格式,当前仅支持 "tidb-binlog" 格式。

  • Kafka 访问控制:填写 kafka 访问控制策略。

接入类型:自建数据存储(专线)

  • 主机名/IP:专线接入时,需要填入 TiDB 实例在百度智能云 VPC 内的 IP。

  • 端口:专线接入时,需要填入 TiDB 实例在百度智能云 VPC 内的端口。

  • 授权白名单:在源数据库的网络白名单中加入授权白名单 IP,确保源端可与该 IP 连通。

  • 账号:填入 TiDB 实例的访问账号。

  • 密码:填入 TiDB 实例的访问密码。

  • 是否同步增量:若需要做增量同步,需要开启此选项,开启后需要填写 Kafka 连接信息。

目标端连接信息配置:

接入类型:云原生数据库 GaiaDB

  • 实例 ID:接入类型为云原生数据库 GaiaDB 时,表示云原生数据库 GaiaDB 的实例 ID。

完成配置后点击【授权白名单进入下一步】按钮,进入对象映射配置页。

4.2.2.3 对象映射

配置任务-对象映射界面 TiDB 版配置参数说明如下:

  • 迁移类型:支持结构迁移、全量迁移和增量同步,其中增量同步为必选。

  • 同步语句选择:增量同步阶段,支持指定需要同步的 SQL 语句类型,可多选。

  • 特殊 DDL 过滤:增量同步阶段,在选择了同步 DDL 语句的情况下,支持过滤。

  • 自定义同步位点:当未选择结构迁移和全量迁移,仅选择了增量同步时,可以指定增量同步的起始位点,DTS 支持选择两种起始位点。详情可见:自定义同步位点。

    • offset:以 Kafka Topic 消息日志的偏移量作为起始位点,格式参考:100;

    • commitTs:以 TiDB 事务的提交时间点作为起始位点,格式参考:426164827296890882;

  • 限制传输速度:全量迁移和增量同步阶段更细粒度的限流策略,支持按照每秒迁移的行数和每秒迁移的数据量限制任务的传输速度。详情可见:迁移限速。

  • 重试时间:源端/目标端实例无法连接后自动重试,用户可根据实际情况调整重试时间,或者在源端和目标端的实例释放后尽快释放 DTS 实例。

  • 同步 Online DDL:指定是否同步由 gh-ost, pt-osc、DMS 工具执行的表结构变更操作。详情可见:同步 Online DDL。

  • 传输对象:DTS 支持三种配置传输对象方式。

    • 整个实例:将源端除系统库外的所有数据迁移到目标端,不迁移的系统库为:mysql、sys、information_schema、performance_schema。

    • 手动选择:选择此选项时,将出现如下的库表选择页面,页面左侧会展示源端所有的库表信息,在页面左侧选择需要迁移的库表,库表信息将会被自动添加到页面右侧。点击右侧库表名旁的"编辑"按钮可以设置库表名映射、列名映射、行过滤、列过滤(白名单)、列过滤(黑名单)等功能;(注:"编辑"功能在一键反向任务中不可用)。

    • 模式匹配(在一键反向任务中,该选项不可用),详情可见:自定义迁移对象。

完成配置后点击【保存并预检查】按钮,开始执行预检查。

4.2.3 预检查和启动任务

DTS 会在预检查阶段对任务配置及源端/目标端 MySQL 实例做检查,确认是否满足数据迁移需求。其中,检查结果分为四类:

  • 失败:表示该检查项不通过,且严重影响数据迁移的正常执行。失败的检查项无法强制通过,建议您根据修复建议处理后重新预检查。

  • 警告:表示该检查项不通过,对数据迁移有一定负面影响。您可以确认后点击【强制通过】按钮强制通过检查。

  • 成功:表示该检查项通过。

  • 未开始:表示该检查项未开始执行。

若出现检查失败,您可以修改任务配置后重新执行预检查,或返回列表页后重新执行预检查。

预检查通过后,您可直接启动数据迁移任务。

4.3 执行数据校验

在列表页观察到正向数据流进入复制变更阶段,且延迟追平。

可以点击任务 ID 进入任务详情页。选择右侧数据一致性校验,点击【创建一致性校验】按钮后,可根据需要调整数据校验配置。完成后点击【确定】按钮,启动数据校验。

执行完成的数据校验任务状态为任务结束,您可以点击【查看详情】查看数据校验详情,可以看到校验结果和数据不一致统计。对校验结果的详细解释可见:创建数据校验任务

5 DTS 支持迁移的 TiDB 数据类型

TiDB数据类型 DTS是否支持
BOOLEAN 支持
TINYINT 支持
SMALLINT 支持
MEDIUMINT 支持
INT 支持
BIGINT 支持
DECIMAL 支持
FLOAT 支持
DOUBLE 支持
BIT 支持
YEAR 支持
DATE 支持
TIME 支持
DATETIME 支持
TIMESTAMP 支持
CHAR 支持
VARCHAR 支持
BINARY 支持
VARBINARY 支持
TINYTEXT 支持
TEXT 支持
MEDIUMTEXT 支持
LONGTEXT 支持
TINYBLOB 支持
BLOB 支持
MEDIUMBLOB 支持
LONGBLOB 支持
SET 支持
ENUM 支持
JSON 支持
相关推荐
handsomestWei1 天前
PingCAP TiDB数据库专员PCTA认证笔记
数据库·tidb
追光天使3 天前
Mac/Linux 快速部署TiDB
linux·macos·tidb
TiDB_PingCAP4 天前
B 站数据库负责人赵月顺:助力海内外业务增长,百套 TiDB 的选型与运维实战
运维·数据库·tidb
PingCAP5 天前
B 站数据库负责人赵月顺:助力海内外业务增长,百套 TiDB 的选型与运维实战
数据库·分布式·tidb
TiDB_PingCAP5 天前
知乎 PB 级别 TiDB 数据库集群管控实践
k8s·tidb·tidb operator
-KamMinG6 天前
TIDB的备份与恢复、上传OSS
数据库·oracle·tidb
Dnui_King6 天前
从零开始学TiDB(6)深入学习Placement Driver(PD)
学习·tidb
Dnui_King6 天前
从零开始学TiDB(5)Raft与Multi Raft
tidb
PingCAP7 天前
知乎 PB 级别 TiDB 数据库集群管控实践
数据库·tidb
TiDB 社区干货传送门15 天前
使用 Grafana 展示多个TiDB集群的告警
linux·服务器·数据库·tidb·grafana