自建TiDB迁移至GaiaDB
更新时间:2024-08-14
本文主要介绍如何通过结合消息服务 for Kafka 与 TiDB 数据库的 Pump、Drainer 组件,完成从 TiDB 迁移至百度云原生数据库 GaiaDB。
- 消息服务 for Kafka:详细介绍参见:消息服务 for Kafka 产品介绍
- 百度云原生数据库 GaiaDB:详细介绍参见:云原生数据库 GaiaDB
前提条件
- 已创建源端 TiDB 实例。
- 已创建存储空间大于自建 TiDB 数据库占用存储空间的目标 GaiaDB 实例。创建方式,请参见 购买集群。
限制说明
应用限制
类型 | 说明 |
---|---|
源端限制 |
|
其他限制 |
|
支持的SQL操作
操作类型 | SQL操作语句 |
---|---|
DML | INSERT、UPDATE、DELETE |
DDL | CREATE DATABASE、CREATE TABLE、CREATE TABLE LIKE、ALTER TABLE、DROP DATABASE、CREATE VIEW、CREATE FUNCTION、CREATE PROCEDURE、ALTER FUNCTION、ALTER PROCEDURE、CREATE TRIGGER、DROP TABLE、TRUNCATE TABLE、RENAME TABLE、DROP INDEX、CREATE INDEX |
数据库账号权限要求
数据库 | 结构迁移 | 全量迁移 | 增量迁移 |
---|---|---|---|
源端 | SELECT | SELECT | SELECT,SHOW VIEW,SUPER,REPLICATION SLAVE |
目标端 | 读写权限 | 读写权限 | 读写权限 |
注意:
如果结构迁移选择了账号迁移,则目标段数据库账号还需 DCL 权限
操作步骤
准备工作
若您需要增量同步,则需进行以下配置:
- 部署 Pump 和 Drainer 组件,详情请参见 TiDB Binlog 集群部署。
- 修改 Drainer 组件的配置文件,设置输出为 Kafka,详情请参见 Kafka 自定义开发。
- 部署 Kafka 集群,您可以选择自建或使用百度智能云消息服务 for Kafka,详情参见 创建消息服务 for Kafka。
注意:
- 当接入方式为专线接入时,请确保 Kafka 集群部署在专线接入相同的 VPC 内。
- 若选择百度智能云消息服务作为中转 Kafka,请在创建集群时确保将 网络配置—>产品间转储 开关打开。
配置任务
参数 | 说明 |
---|---|
源端位置 | 选择自建数据存储。 |
源端接入类型 | 支持公网、BCC/BBC/DCC、VPC、专线接入方式。 |
源端数据类型 | 选择 TiDB。 |
源端地域 | 选择迁移链路的源端所属的地域,购买后不支持更换地域,请谨慎选择。 |
专线接入所在网络 | 仅接入类型选择专线接入时需配置。专线接入有三个可选项分别为:该地域的 VPC 列表、该地域的可用区列表、选定可用区对应的子网列表。VPC 列表中请选择专线所在的 VPC。 |
目标端位置 | 选择百度智能云数据库。 |
目标端接入类型 | 选择云原生数据库 GaiaDB。 |
目标数据类型 | 选择 GaiaDB。 |
目标端地域 | 选择迁移链路的目标端所属的地域,购买后不支持更换地域,请谨慎选择。 |
同步方向 | 仅支持单向同步。 |
允许一键反向 | 开启后,在任务增量阶段支持一键反向,启动后将中断当前同步链路,并启动从目标端到源端的数据同步链路,实现数据自动回流到源端。 |
链路规格 | DTS 为您提供了不同性能的链路规格,迁移链路规格的不同会影响迁移速率,您可以根据业务场景进行选择,详情请参见 链路规格说明。 |
- 创建任务成功后自动返回任务列表页面,选择新创建的任务,点击 更多操作—>配置任务。
-
在配置任务页面,配置源库及目标库信息,本文以 公网 接入方式为例介绍配置流程。
配置流程 类别 配置 说明 任务基本属性 任务名称 DTS 会自动生成一个任务名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。 源端连接设置 主机名/IP 填入源端 MySQL 数据库的访问地址,本示例中填入公网地址。当接入方式为专线接入时,需要填入 TiDB 实例在百度云 VPC 内的 IP。 端口 填入源端 MySQL 数据库的服务端口(需开放至公网),默认为3306。当接入方式为专线接入时,需要填入 TiDB 实例在百度云 VPC 内的端口。 授权白名单 当接入方式为专线接入时显示,需在源数据库的网络白名单中加入授权白名单 IP,确保源端可与该 IP 连通。 账号 填入源端 MySQL 数据库的账号,权限要求详请参见数据库账号的权限要求。 密码 填入该数据库账号对应的密码。 增量同步配置 是否同步增量 若需要做增量同步,需要开启此选项,开启后需要填写 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 访问控制策略。 目标端连接设置 实例 ID 选择目标 GaiaDb 实例 ID。 -
配置完成后,点击页面下方的 授权白名单进入下一步。
如果源或目标数据库是 BCC/BBC/DCC 自建或 IDC 自建数据库或其他云数据库,则需要您手动添加对应地区 DTS 服务的 IP 地址,以允许来自 DTS 服务器的访问。
警告:
DTS 自动添加或您手动添加 DTS 服务的 IP 地址段可能会存在安全风险,一旦使用本产品代表您已理解和确认其中可能存在的安全风险,并且需要您做好基本的安全防护,包括但不限于加强账号密码强度防范、限制各网段开放的端口号、内部各 API 使用鉴权方式通信、定期检查并限制不需要的网段等等。
-
配置任务对象映射。
配置 说明 迁移类型 支持结构迁移、全量迁移和增量同步,其中增量同步为必选。 同步语句选择 增量同步阶段,支持指定需要同步的 SQL 语句类型,可多选。 特殊 DDL 过滤 增量同步阶段,在选择了同步 DDL 语句的情况下,支持过滤。 自定义同步位点 当未选择结构迁移和全量迁移,仅选择了增量同步时,可以指定增量同步的起始位点,DTS 支持选择两种起始位点。详情可见:修改迁移任务的当前位点。 - offset:以 Kafka Topic 消息日志的偏移量作为起始位点,格式参考:100
- commitTs:以 TiDB 事务的提交时间点作为起始位点,格式参考:426164827296890882
限制传输速度 根据实际情况,选择是否对全量迁移和增量同步任务进行更细粒度的限流策略设置(设置 每秒迁移的行数 和 每秒迁移的数据量),以缓解目标库压力。详情参见:迁移限速。 重试时间 源端/目标端实例无法连接后自动重试,用户可根据实际情况调整重试时间,或者在源端和目标端的实例释放后尽快释放 DTS 实例。 同步 Online DDL 指定是否同步由 gh-ost, pt-osc、DMS 工具执行的表结构变更操作。详情参见:同步 Online DDL。 传输对象 整个实例:将源端除系统库外的所有数据迁移到目标端,不迁移的系统库为:mysql、sys、information_schema、performance_schema。手动选择:选择此选项时,在页面左侧选择需要迁移的库表,库表信息将会被自动添加到页面右侧。模式匹配:详情参见:模式匹配。 -
上述配置完成后,点击页面下方的 保存并预检查。
说明
- 在迁移任务正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动迁移任务。
- 如果预检查失败,请查看失败检查项的提示,并根据提示修复后重新进行预检查。
-
如果预检查产生警告:
- 对于不可以忽略的检查项,请查看失败检查项的提示,并根据提示修复后重新进行预检查。
- 对于可以忽略无需修复的检查项,您可以点击 强制通过,在弹出的窗口中勾选风险确认信息并点击 确定,跳过告警检查项重新进行预检查。如果选择屏蔽告警检查项,可能会导致数据不一致等问题,给业务带来风险。
- 前置校验提示校验成功后,点击 立即开启任务。
- 迁移任务正式开始,您可以在任务列表页面查看具体进度。
后续操作(可选)
数据校验
详情参见 配置数据校验。
业务切换
详情参见 业务切换流程。
附录: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 | 支持 |