DBMotion x Chat2DB:高效迁移,优雅同步,数据腾飞不再愁

news2024/11/28 14:39:20

在这里插入图片描述

DBMotion

在这里插入图片描述

基本介绍

数据传输服务DBMotion是一款轻量、绿色的数据库迁移同步校验工具。支持国产化数据迁移、支持容灾演练、支持两地三中心和异地多活;源库无感知、简单易集成、丝滑高性能。助您在多云之间随心迁移、自由容灾。

功能介绍

已支持的数据库

v1.0.0 DBMotion插件 支持 MySQL to MySQL的对象迁移、全量数据迁移、增量同步;目前支持 5.6、5.7、8.0 三个版本的同版本迁移或向高版本迁移。


待支持的数据库

下面是已经实现支持,待集成进DBMotion插件的数据库类型

PostgreSQL to PostgreSQL 的对象迁移, 全量数据迁移,增量同步(暂不支持DDL和双向同步)。 目前支持 9.6 以上版本的同版本迁移或向高版本迁移。

MySQL to Clickhouse 的对象迁移、全量数据迁移、增量同步;支持 MySQL 5.6、5.7、8.0 到 Clickhouse 22 以后的版本。

MongoDB to MongoDB 的对象迁移、全量数据迁移、增量同步;目前支持 MongoDB 3.6 以上版本的同版本迁移或向高版本迁移。

openGauss to openGauss 的对象迁移、全量数据迁移、增量同步;支持 5.0.0 以上版本的单向和双向同步。

GaussDB to GaussDB 的对象迁移、全量数据迁移、增量同步;支持 503.1 以上版本的同版本迁移或向高版本迁移。

Oracle to GaussDB 的全量数据迁移和增量同步。

SQL Server to SQL Server 的对象迁移、全量数据迁移;目前支持 2017/2019 同版本的相互迁移。

Redis to Redis 的全量数据迁移和增量同步;目前支持 5.0 及以上版本的同版本迁移或向高版本迁移。

MySQL to Kafka 的全量数据迁移。

PostgreSQL/GaussDB/openGauss to Kafka 的全量数据迁移,增量订阅。


应用场景

一、机房内、云上云下数据库迁移

DBMotion支持Docker线下版和云上版本,用户可以下载线下版本在自己机房内做数据库迁移操作。 也可以直接使用云上的SAAS版来进行云上迁移或者跨云迁移,支持云上迁移到云下,云下迁移到云上,支持对RDS的到ECS或者线下机房的容灾同步。

二、国产化数据库迁移

通过可视化透明迁移工具将非国产数据库迁移到国产数据库,海外云迁移到国产云。 支持表、索引等结构也支持存储过程、自定义函数等代码的转换;通过内置专家经验和最佳实践保证业务高效、透明、安全的进行全量和增量同步数据,可实现零停机迁移;支持对象和数据的校验,兜底数据一致性;支持反向同步,随时可回滚。

三、异地多活数据同步

支持MySQL和openGauss的双向同步,有效的避免循环复制,支持覆盖、忽略和报错三种冲突解决策略。支持两地三中心/异地多活架构,支持容灾演练。


优势特点

  • 零停机:整个迁移过程中不需要业务停机,对源库不加任何锁。源库在迁移过程中可以做各种DDL操作

  • 方便直观:采用可视化操作,点点鼠标就可以完成数据的迁移和校验

  • 并发高性能:对象、全量、增量、校验过程全部采用多线程并发,同步性能能到达40M/s

  • 安全高效:支持SSL连接,保证传输数据安全

  • 稳定可靠:支持断点续传,源端断开自动重连,目标端失败自动重试

  • 预检查:正式迁移前提前预检查,预先发现迁移过程中可能出现的问题

  • 数据校验:迁移后支持数据校验,为数据切换保驾护航

  • 双向同步:主动避免循环复制,支持冲突策略处理

  • 对象映射/where条件过滤:支持源库和目标库的对象名映射,支持同步时忽略部分敏感数据

  • 热修改:同步过程中支持热修改同步对象

  • 跨网络访问:通过代理网关可以访问内网或者云上RDS


资费

DBMotion插件Chat2DB Pro会员限时免费使用。


使用限制

1. 带宽限制

源库到DBMotion和DBMotion到目标库的网络带宽会限制迁移的速度。如果任何一端的网络带宽较差都会导致迁移性能下降,达不到规格标称的迁移速度。

2. 数据库性能限制

源库或者目标库的性能会导致DBMotion迁移性能的下降。源库性能差会导致DBMotion取数据慢,目标库性能差会导致DBMotion存数据慢。

3. MySQL binlog格式问题

binlog需要使用ROW格式,来保证DBMotion能正确解析出数据的修改,以便增量同步到目标端 DDL变更时,建议使用use db1;alter table tb1类似的方式,而不是使用alter table db2.tb1的方式,避免DBMotion误判数据库导致判断这个变更是否要过滤时出错。

4. 源库对象选择无法区分全选一个节点还是全选当前所有子节点

界面上选择一个schema下所有表时,无法区分是勾选了界面上显示的所有表,还是勾选了整个schema。目前按照勾选整个schema来同步,也就是说,这个schema下当前所有的表和后面创建的表全部都会同步到目标端。

5. 对象依赖层数过多仍然会报错

DBMotion目前会处理对象依赖层数在10层以内的。也就是说view v10依赖于v9,v9依赖于v8,… v2依赖于v1的情况,DBMotion会自动处理,但是大于10层的依赖可能会报错。

6. 对象迁移到全量迁移过程中创建的表无法同步

用户选择了迁移整个schema(db1),但是在对象迁移到全量迁移的这段时间间隔内创建了一个表db1.tb1。由于对象迁移的时候db1.tb1还没有,对象迁移不会把db1.tb1的表结构迁移过去,所以全量迁移的时候会报错说表结构不存在。

7. 其他
Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '=' MySQL 8.0默认使用utf8mb4_0900_ai_ci的Collation作为utf8mb4的校对规则,跟5.6和5.7的utf8mb4_general_ci默认值不一样,如果有view使用convert(tt.ID using utf8mb4 )可能会出现对象迁移时迁移到目标端报错,Illegal mix of collations,建议手工在目标库将view改成convert(tt.ID using utf8mb4 ) COLLATE utf8mb4_general_ci以绕过这个问题。

操作指南

1. 插件安装

打开Chat2DB,点击左侧工具栏的插件图标,点击右侧的Installing插件按钮,点击安装即可。

在这里插入图片描述

2. 打开插件

点击Launch打开插件,等待插件加载完成即可。

在这里插入图片描述

3. 创建任务

在这里插入图片描述

  1. Name字段中输入任务的名称。例如,task-01qu6D。
  2. 根据需要选择虚拟机的规格。选项包括:Tiny,Small,Medium,Large。默认选择的是Tiny。
  • 每个规格的说明:
  • Tiny:最小规格,使用2核4G内存,1线程用于迁移。
  • Small、Medium和Large规格根据需求增加资源。
  1. 源数据库引擎 (Source database engine)
  • 选择源数据库引擎类型。在此例中,选择的是MySQL。
  • 支持的版本包括:5.6、5.7、8.0。
  • 支持的数据库类型包括:自建数据库、ECS自建数据库和云数据库。
  1. 目标数据库引擎 (Target database engine)
  • 选择目标数据库引擎类型。在此例中,选择的是MySQL。
  • 支持的版本包括:5.6、5.7、8.0。
  • 支持的数据库类型包括:自建数据库、ECS自建数据库和云数据库。

在这里插入图片描述

在填写完所有必要的信息后,点击页面右下角的Create按钮,即可创建新任务。

在这里插入图片描述

4. 选择源和目标数据库
  1. 数据库类型
  • Source information(源信息)部分选择你的原始数据库类型。在这个例子中,我们选择了"MySQL"。
  • 同样,在Target information(目标信息)部分选择你想要将数据迁移到的目标数据库类型。同样,这里也选择了"MySQL"。
  1. 数据库IP:端口
  • Source information部分输入你的原始数据库的IP地址和端口号。
  • 对于Target information部分,你需要提供目标数据库的IP地址和端口号。
  1. 账户与密码
  • Source information部分需要你提供访问原始数据库的用户名和密码。用户名默认是root。
  • Target information部分则需要你提供用于访问目标数据库的用户名和密码。
  • 如果你不知道用户名,可以点击下方Auth script操作,获取授权用户。
  1. SSL运输
  • 如果你的数据库配置了SSL加密连接,则可以选择启用SSL传输。否则,请保持禁用状态。
  1. 测试连接
  • 输入所有必要的信息后,你可以点击Test connection来验证你提供的信息是否正确,并且能够成功地连接到你的数据库。

在这里插入图片描述

5. 迁移选项
  1. Objects:
  • 这一区域将会列出一系列的数据库名称。你可以通过勾选这些项目来决定哪些数据库表、视图、函数、存储过程、触发器等应该被包含在迁移过程中。

在这里插入图片描述

  1. Migration:

Speed: 这里提供了迁移速度的选择,默认为Unlimited,即不限速。如果需要限制迁移的速度,可以在此处更改。

  • Migrate type: 提供了三种选项——Objects, Data, 和 Sync incremental。根据需求,你可以选择要迁移的对象定义、数据或者增量同步。
  • Objects: 表示迁移数据库中的对象,比如表、视图等。
  • Data: 表示迁移数据库中的数据。
  • Sync incremental: 表示进行增量同步,只迁移自上次迁移以来发生改变的内容。

Sync policy: 这一部分允许你指定同步策略。

  • Sync topology: 可以选择单向或双向同步。
  • unidirectional: 单向同步,数据只会从源数据库流向目标数据库。
  • Bidirectional: 双向同步,数据可以在两个数据库之间相互流动。
  • Conflict policy: 当冲突出现时的处理方式。
  • Cover and continue: 覆盖已有数据并继续迁移。
  • Ignore and continue: 忽略冲突并继续迁移。
  • Report an error and stop: 报错并停止迁移。
  • Filter DDL: 是否过滤掉数据定义语言(DDL)语句。DDL通常用来创建、修改或删除数据库结构。
  1. Upload migrate object configuration file / Download template file:
  • 如果你已经准备好了迁移对象的配置文件,可以通过点击"Upload migrate object configuration file"上传它。
  • 如果需要下载模板文件以便手动编辑,可以点击"Download template file"。

在这里插入图片描述

  1. Advanced configuration:
  • 点击此链接可以进入更详细的配置页面,对迁移任务进行高级定制。

在这里插入图片描述
在这里插入图片描述

  1. 确认信息:
  • 填写完所有必要的信息后,你可以点击Next前进至下一步。

在执行数据库迁移前,确保已仔细检查所有的选项,特别是冲突政策和同步策略,因为它们可能会直接影响到迁移的结果。

6. 映射和过滤

在这里插入图片描述

  • 字段映射是指将一个表中的字段映射到另一个表中的字段,以便在两个表之间进行数据交换或数据同步。
    在MySQL数据库迁移任务配置过程中,用户可以设置库、表、字段在目标库的对象映射名。
    如下图所示,【文字显示墨绿色,加了-sy后缀】的为修改后目标端Schema、表、字段的映射名显示。

注意:修改后的映射名请以英文字母开头,仅允许英文字母(区分大小写)、数字、下划线组合,长度小于等于64

在这里插入图片描述

在这里插入图片描述

迁移完成后,我们进入目标库查看,可以看到库,表,字段均显示为迁移过程中我们设置的映射名。

在这里插入图片描述

  • 在数据迁移或数据复制中,where可以用来过滤出需要迁移或复制的数据,避免不必要的数据传输和处理,提高迁移或复制效率。
    如下图,在MySQL数据库迁移任务配置过程中,点击映射与过滤,支持自由配置数据过滤条件,在文本框输入过滤条件后,移出文本框,在过滤结果预览中就可以查看到过滤效果,以便用户确认是否满足预期。

在这里插入图片描述

设置好表的过滤条件后,在全量和增量同步过程中就会自动带上过滤条件。保证过滤后的数据才会同步到目标端。
此处我们设置的where过滤条件为:CategoryId > 7,过滤结果如下。

  • 源端数据展示:

在这里插入图片描述

  • 目标端数据展示:

在这里插入图片描述

目标库只同步到了CategoryId > 7的数据,符合目标预期。

7. 最后确认
  • 目标数据库中存在相同名字的对象将会被重建,所以在迁移前请仔细检查目标数据库以避免覆盖和损坏数据。建议在非高峰时段进行数据迁移,以减少数据更新和DDL变更的影响。

  • 在确认阶段,用户需要查看提示信息,理解潜在的问题和风险,如数据库版本不一致可能导致的迁移失败。
    同时,他们也可以查看预检查结果,如果有错误或警告,应解决这些问题后再执行迁移。如果一切正常,用户可以点击Save task and execute来保存并执行迁移任务或者点击Save task来暂时保存相关配置信息。

在这里插入图片描述

8. 迁移结果
  • 迁移完成时,用户可以查看迁移结果,包括迁移的进度、状态、错误信息等。

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

尚品汇-布隆过滤器解决缓存穿透问题(二十四)

目录: (1)布隆过滤器 (2)布隆过滤器实现方式 (3)CompletableFuture异步编排 (4)CompletableFuture介绍 (1)布隆过滤器 (2&#…

web基础及http协议、

⼀、web基本概念和常识 Web:为⽤户提供的⼀种在互联⽹上浏览信息的服务,Web 服 务是动态的、可交 互的、跨平台的和图形化的。Web 服务为⽤户提供各种互联⽹服务,这些服务包括信息浏览 服务,以及各种交互式服务,包括聊…

vue3警告 `markRaw` or using `shallowRef` instead of `ref`.

百度翻译:Vue收到了一个组件,该组件被制成了一个反应对象。这可能会导致不必要的性能开销,应该通过用“markRaw”标记组件或使用“shallowRef”而不是“ref”来避免。 消除办法是 使用markRaw或者shallowRer代替ref

从原理到实践:开发视频美颜SDK与主播美颜工具详解

本篇文章,笔者将深入探讨视频美颜SDK的开发原理和实践应用,重点介绍如何打造一款功能强大的主播美颜工具。 一、视频美颜的基本原理 视频美颜的核心在于图像处理技术,主要包括面部识别、图像增强和特效处理。 1.面部识别 常见的面部识别算…

设计结构——循环结构

循环结构 什么是循环 代码的重复执行,就叫做循环。 循环的分类 无限循环:程序设计中尽量避免无限循环。(程序中的无限循环必须可控) 有限循环:循环限定循环次数或者循环的条件。 循环的构成 循环体循环条件 循环实现的三要素 循环变量…

深度学习项目 -7-使用 Python 的手写数字识别

一、前言 该文章仅作为个人学习使用 二、正文 项目源代码:深度学习项目 - 使用 Python 进行手写数字识别 - DataFlair (data-flair.training) 数据集:​​​​​​​https://drive.google.com/open?id1hJiOlxctFH3uL2yTqXU_1f6c0zLr8V_K Python 深…

AB安全产品详解Guard master Safety Products

AB安全产品详解Guard master Safety Products

程序员面试中的“八股文”:是助力还是阻力?

“八股文”在实际工作中是助力、阻力还是空谈? 作为现在各类大中小企业面试程序员时的必问内容,“八股文”似乎是很重要的存在。但“八股文”是否能在实际工作中发挥它“敲门砖”应有的作用呢?有IT人士不禁发出疑问:程序员面试考…

深入浅出mediasoup—拥塞控制

拥塞控制对于不同网络条件下保证音视频传输质量非常重要。mediasoup 移植了 WebRTC 的 GCC 模块,嵌入到服务器,使得 mediasoup 具备了和 WebRTC 客户端一样的拥塞控制能力。为了使 GCC 能够与 mediasoup 框架良好交互,mediasoup 做了很多适配…

Large Models for Time Series and Spatio-Temporal Data: A Survey and Outlook

基本信息 博客贡献人 谷雨 作者 Ming Jin, Qingsong Wen, et al. 标签 大语言模型、预训练基础模型、大模型、时间序列、时空数据、时态数据 摘要 时态数据,包括时间序列和时空数据,在现实世界的应用中极为广泛。这些数据类型记录了动态系统随时…

2024电赛H题可能用到的代码——自动行驶小车

目录 前言 一、MPU6050零漂处理 二、MPU6050的Yaw(180)误差处理 三、PID算法(增量式位置式) 四、灰度传感器(以8路为例) 1、获取黑线偏差 2、判断ABCD点(有无黑线交点) 五、总结 前言…

内存原生CRAM技术将会颠覆计算存储的未来?

近期,一项刚刚发布的最新研究表明,一种名为计算随机存取存储器(Computational Random-Access Memory, CRAM)的新技术能够极大地减少人工智能(AI)处理所需的能量消耗。这项技术由明尼苏达大学双城分校的一组…

SmartInitializingSingleton和InitializingBean的区别

SmartInitializingSingleton:接口里面就一个方法afterSingletonsInstantiated,它是spring容器将所有bean都初始化完成之后,才会去调用,要求实现它接口的bean必须是单例的。 应用场景:可以在服务启动之后去处理一些逻辑…

红酒与电影:银幕上的醉人瞬间

在光影交织的银幕世界里,红酒不仅是品味生活的象征,更是情感交流的媒介。当定制红酒与电影相遇,它们共同编织出一个个醉人的瞬间,让观众在品味红酒的同时,也沉醉于电影的魅力之中。今天,就让我们一起走进红…

JS小应用:从图床获取的html代码中提取IMG标签并提取图片复制到剪贴板

JS小应用:从图床获取的html代码中提取IMG标签并提取图片复制到剪贴板 问题产生 自己做站长,为了节省银子,难免要用到图床。有的图床可以直接给你URL,这当然是最好的情况: 而有的图床,却禁用了鼠标右键&am…

“论数据分片技术及其应用”写作框架软考高级论文系统架构设计师论文

论文真题 数据分片就是按照一定的规则,将数据集划分成相互独立、正交的数据子集,然后将数据子集分布到不同的节点上。通过设计合理的数据分片规则,可将系统中的数据分布在不同的物理数据库中,达到提升应用系统数据处理速度的目的…

FP分数规划在无线通信中的应用(II)

3. 具体例子 3.1-3.3都只需要用第一章concave-convex方法求解,3.4-3.6需要用到第二章的拉格朗日对偶变换,而且具体解 x \mathbf{x} x时需要对离散变量单独开发算法。 3.1 多小区SISO能量分配 第一个例子是具有一组单天线基站(BSs&#xff…

Python面向对象浅析

目录 面向对象基本概念 一、类和对象 类和对象是面向对象骗程的两个核心概念。 在程序开发中,要设计一个类,通常需要满足一下三个要素: self详解: 对象(Object) 魔法方法: 类里的一些特殊方法 __in…

RK3568笔记四十八:ADC驱动开发测试

若该文为原创文章,转载请注明原文出处。 一、ADC介绍 RK3568集成了一个逐次逼近模数转换器(Successive Approximation ADC),通常简称为SAR ADC。 这种转换器能够将连续的模拟信号转换为离散的数字信号,其特点在于具有…

nginx转发netty长链接(nginx负载tcp长链接配置)

首先要清楚一点,netty是长链接是tcp连接不同于http中负载在http中配置server监听。长连接需要开启nginx的stream模块(和http是并列关系) 安装nginx时注意开启stream,编译时加上参数 --with-stream (其他参数根据自己所需来加) …