使用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.mzph.cn/news/641228.shtml

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

相关文章

go 语言中 json.Unmarshal([]byte(jsonbuff), j) 字节切片得使用场景

struct_tag的使用 在上面的例子看到,我们根据结构体生成的json的key都是大写的,因为结构体名字在go语言中不大写的话,又没有访问权限,这种问题会影响到我们对json的key的名字,所以go官方给出了struct_tag的方法去修改…

R语言rvest爬虫如何设置ip代理?

前言 在R语言中使用rvest进行网络爬虫时,可以使用代理服务器来隐藏真实IP地址。有一些R包可以帮助爬虫中设置代理,其中一个常用的包是httr。以下是一个简单的例子,演示如何在rvest中设置IP代理 教程 一、获取代理IP并提取 二、详情设置 l…

2024三掌柜赠书活动第四期: Next.js实战,构建现代化的可扩展Web应用

目录 摘要前言Next.js简介关于《 Next.js实战》实战示例最佳实践和进阶应用编辑推荐内容简介作者简介图书目录书中前言/序言《Next.js实战》全书速览结束语 摘要:本文将介绍Next.js,一个流行的React框架,以及如何在实际项目中使用Next.js构…

OSPF协议LSDB同步过程和邻居状态机

知识改变命运,技术就是要分享,有问题随时联系,免费答疑,欢迎联系! 厦门微思网络​​​​​​ https://www.xmws.cn 华为认证\华为HCIA-Datacom\华为HCIP-Datacom\华为HCIE-Datacom Linux\RHCE\RHCE 9.0\RHCA\ Oracle O…

技术型企业如何选择安全、性价比高的FTP替代方案?

FTP作为世界上第一款文件传输协议,在全球范围内应用广泛,它解决了文件传输协议空白的问题,为文件传输场景提供了专业的解决方案。 但随着网络技术的演进,技术型企业进行文件传输的需求也更多元和复杂,FTP的缺陷也更多的…

CmakeList教程

一、CmakeList介绍: cmake 是一个跨平台、开源的构建系统。它是一个集软件构建、测试、打包于一身的软件。它使用与平台和编译器独立的配置文件来对软件编译过程进行控制。它会通过写的语句自动生成一个MakeFile,从而实现高效编译 二、CmakeList的常用指令 1.指定…

【 CSS 】定位

不要因为小小的失败而放弃大大的梦想,每一次坚持都是通向成功的一步。- 马克吐温 1. 定位 1.1 为何使用定位 我们先来看一个效果,同时思考一下用标准流或浮动能否实现类似的效果? 场景1: 某个元素可以自由的在一个盒子内移动位置&#xff0c…

小程序学习-21

目前小程序分包大小有以下限制: 整个小程序所有分包大小不超过 20M单个分包/主包大小不能超过 2M 独立分包:"independent": true

docker compose安装milvus

下载对应版本的milvus-standalone-docker-compose.yml wget https://github.com/milvus-io/milvus/releases/download/v2.3.5/milvus-standalone-docker-compose.yml重新命令为docker-compose.yml mv milvus-standalone-docker-compose.yml docker-compose.yml启动milvus doc…

记一次 stackoverflowerror 线上排查过程

一.线上 stackOverFlowError xxx日,突然收到线上日志关键字频繁告警 classCastException.从字面上的报警来看,仅仅是类型转换异常,查看细则发现其实是 stackOverFlowError.很多同学面试的时候总会被问到有没有遇到过线上stackOverFlowError?有么有遇到栈溢出?具体栈溢出怎么来…

postman测试导入文件

01 上传文件参数 1.选择请求方式 选择post请求方式,输入请求地址 2.填写Headers Key:Content-Type ; Value:multipart/form-data 如下图 3.填写body 选择form-data,key选择file类型后value会出现按钮&#xff0…

(十二)Head first design patterns代理模式(c++)

代理模式 代理模式:创建一个proxy对象,并为这个对象提供替身或者占位符以对这个对象进行控制。 典型例子:智能指针... 例子:比如说有一个talk接口,所有的people需要实现talk接口。但有些人有唱歌技能。不能在talk接…

表单的总数据为什么可以写成一个空对象,不用具体的写表单中绑定的值,vue3

<el-form :model"form" label-width"120px"><el-form-item label"Activity name"><el-input v-model"form.name" /></el-form-item> </el-form> const form ref({})from为空对象 在v-model里写form…

verde生成网格坐标

文章目录 网格坐标区域调整 Verde是Python用于地理空间数据处理的一个库&#xff0c;由于采用了一些机器学习的方法&#xff0c;所以除了科学计算三件套之外&#xff0c;还需要基于sklearn模块。考虑到依赖关系&#xff0c;这里比较推荐用conda安装。 conda install verde --c…

分布式websocket即时通信(IM)系统保证消息可靠性【第八期】

b站上面本期视频版本&#xff0c;观看视频食用更佳&#xff01;点击即可跳转,找不到视频可以直接搜索我 目前叫 呆呆呆呆梦 目前已经写的文章有。并且有对应视频版本。 git项目地址 【IM即时通信系统&#xff08;企聊聊&#xff09;】点击可跳转 sprinboot单体项目升级成sprin…

Windows 10中的驱动程序与device guard的兼容性

文章目录 Windows 10中的驱动程序与device guard的兼容性windows的device guard是什么如何构建兼容的驱动程序如何验证驱动程序的兼容性驱动程序验证程序兼容性检查启用基于虚拟化的隔离代码完整性HLK测试&#xff08;桌面和服务器&#xff09;Device Guard准备工具DGReadiness…

VsCode容器开发 - VsCode连接远程服务器上的docker

VsCode容器开发 - VsCode连接远程服务器上的docker 前言 之前在服务器上的Docker内开发&#xff0c;文件编辑起来就很不爽。不如使用VsCode直接打开远程服务器上的Docker&#xff0c;这样就能在VsCode里直接无缝编辑Docker里的文件了。 但是百度和必应得到的中文结果都很奇葩…

Java 实现二叉排序树(BST)

文章目录 介绍实现先定义一个节点树测试 总结 介绍 二叉排序树&#xff08;Binary Search Tree&#xff0c;简称BST&#xff09;是一种特殊的二叉树&#xff0c;其中每个节点的值都大于其左子树的任意节点值&#xff0c;而小于其右子树的任意节点值。 它具有以下特点&#xf…

用flinkcdc debezium来捕获数据库的删除内容

我在用flinkcdc把数据从sqlserver写到doris 正常情况下sqlserver有删除数据&#xff0c;doris是能捕获到并很快同步删除的。 但是我现在情况是doris做为数仓&#xff0c;数据写到ods&#xff0c;ods的数据还会通过flink计算后写入dwd层&#xff0c;所以此时ods的数据是删除了…

“智赋校园 无忧运营”——聚铭网络2024高校客户沙龙圆满举办

随着信息技术的迅猛发展&#xff0c;高校教育行业正经历着一场前所未有的数字化转型。然而&#xff0c;网络安全问题日益凸显&#xff0c;对高校的教学、科研和管理带来了巨大的挑战。在此背景下&#xff0c;聚铭网络特举办了以“智赋校园 无忧运营”为主题的2024高校客户沙龙&…