使用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 数据库账号授权

数据库权限列表
源端 TiDBSELECT, SHOW VIEW
目标端 GaiaDBCREATE, 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 白名单。

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

0011865c1e073f471b00789a8eda2278.jpeg

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 创建任务

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

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

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

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

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

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

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

8c9cd43fc2b57048cf15ba05fd1c42a3.jpeg
  • 接入类型:支持专线接入 TiDB 实例。

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

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

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

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

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

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

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

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

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

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

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

4.2.2 配置任务

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

ac6fad84fefa0b7be19e77c394ff0448.jpeg

4.2.2.1 连接信息配置

源端连接信息配置:

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

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

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

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

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

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

962698ae94eb1cc821c8774e607abf21.jpeg
  • 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 访问控制策略。

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

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

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

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

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

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

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

目标端连接信息配置:

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

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

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

4.2.2.3 对象映射

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

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

  • 同步语句选择:增量同步阶段,支持指定需要同步的 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。

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

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

6a818c39266ffb83b88ecdb3744eff65.jpeg

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

4.2.3 预检查和启动任务

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

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

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

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

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

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

43e0dfd1a96d9df9577cc7a17b11a196.jpeg

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

cc68c8849e33417f1515ce2ba4052bed.jpeg

4.3 执行数据校验

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

35fce279fe278a06e870736f71ee4d3e.jpeg

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

7c108b3d4985742a50dc06b8cd723e5d.jpeg b538d84cbe0e094cb44d6ad2f38f4a81.jpeg

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

81a6831df2f4fbee66c94ebed19e8ab0.jpeg 897aa584e184c94959b88af09306e0ea.jpeg

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支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/423150.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch:介绍 kNN query,这是进行 kNN 搜索的专家方法

作者:来自 Elastic Mayya Sharipova, Benjamin Trent 当前状况:kNN 搜索作为顶层部分 Elasticsearch 中的 kNN 搜索被组织为搜索请求的顶层(top level)部分。 我们这样设计是为了: 无论分片数量多少,它总…

EHS管理系统为何需要物联网的加持?

EHS是Environment、Health、Safety的缩写,是从欧美企业引进的管理体系,在国外也被称为HSE。EHS是指健康、安全与环境一体化的管理。 而在国内,整个EHS市场一共被分成三类; 一类是EHS管培体系,由专门的EHS机构去为公司…

二维码地址门牌管理系统:社区新风向

文章目录 前言一、集成先进技术的系统二、便捷居民体验三、支持社区管理四、未来展望与可扩展性 前言 随着科技的不断发展,智能化管理已经深入到我们的生活中。二维码门牌管理系统作为一款创新产品,在社区管理领域迅速引起广泛关注。这款系统不仅提升了…

一、认识 JVM 规范(JVM 概述、字节码指令集、Class文件解析、ASM)

1. JVM 概述 JVM:Java Virtual Machine,也就是 Java 虚拟机 所谓虚拟机是指:通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统。 即:虚拟机是一个计算机系统。这种计算机系统运行在完全隔离的环境中…

新书速览|MediaPipe机器学习跨平台框架实战

MediaPipe助你高效构建移动端短视频应用。MediaPipe、机器学习、短视频应用、视频特效、游戏控制 本书内容 《MediaPipe机器学习跨平台框架实战》以实际项目为线索,带领读者探索MediaPipe在不同场景中的应用,使读者既能了解理论知识,又能通过…

VisualSVN Server下载安装和使用方法、服务器搭建、使用TortoiseSvn将项目上传到云端服务器、各种错误解决方法

VisualSVN Server下载安装和使用方法、服务器搭建、使用TortoiseSvn将项目上传到云端服务器、各种错误解决方法 0.写在前面00.电脑配置01.思路 1.VisualSVN Server下载安装01.下载02.安装03.电脑命名不能有中文04.制作VisualSVN Server快捷方式05.License limits exceeded, Som…

HarmonyOS 发送http网络请求

好 本文 我们来说 http请求 首先 我们要操作网络内容 需要申请权限 项目中找到 main目录下的module.json5 最下面加上 "requestPermissions": [{"name": "ohos.permission.INTERNET"} ]这里 我在本地写了一个get接口 大家可以想办法 弄一个后…

RK3568平台 TinyAlsa集成第三方音频算法

一.tinyalsa介绍 ALSA(Advanced Linux Sound Architecture)是一个开源项目,涵盖了用户空间和内核空间对音频设备的操作接口,通过应用层使用alsalib可以实现对音频设备的控制 TinyAlsa是android推出的一个精简的ALSA库&#xff0c…

R语言批量把数值变量和因子变量的互转

#我们以rms包的lung数据集为例 library(rms) data<-lung #这里有两种方法&#xff0c; #第1是知道需要转化的变量在哪几列&#xff1b; #第2知道需要转化的变量名 str(data) #假设我们想转化inst/status/sex/三个变量的类型 #图1先看看变量类型和处于第几列 str(dat…

[笔记]深度学习入门 基于Python的理论与实现(五)

5. 误差反向传播法 上一节介绍了神经网络的学习&#xff0c;并通过数值微分计算了神经网络的权重参数的梯度&#xff08;严格地说&#xff0c;是损失函数关于权重参数的梯度&#xff09;。数值微分简单、容易实现&#xff0c;但是计算很费时间。 我们将介绍误差反向传播法&…

Cyber RT 服务通信

场景&#xff1a; 用户乘坐无人出租车过程中&#xff0c;可能临时需要切换目的地&#xff0c;用户可以通过车机系统完成修改&#xff0c;路径规划模块需要根据新的目的地信息重新规划路径&#xff0c;并反馈修正后的结果给用户&#xff0c;那么用户的修正请求数据与修正结果是如…

gradle打包分离依赖jar

正常打包的jar是包含项目所依赖的jar包资源&#xff0c;而且大多数场景下的依赖资源是不会频繁的变更的&#xff0c;所以实际把项目自身jar和其所依赖的资源分离可以实现jar包瘦身&#xff0c;减小上传的jar包总大小&#xff0c;能实现加速部署的效果 一 原本结构 二 配置buil…