数据库迁移同步工具你选对了吗?

news2025/2/27 7:18:48

文章目录

  • 前言
  • 一、Navicat
  • 二、DataX
  • 二、TurboDX
  • 总结


前言

之前在项目中,收到一个紧急需求,要把数据从 PostgreSQL 迁移到 TiDB 中。由于时间紧任务重,来不及调研高效的方式,直接使用了 Navicat 内置的功能,把数据从 PostgreSQL 迁移到了 TiDB。

项目结束后,我深入调研了几个同步迁移工具,本期就跟大家一起看看,几个迁移同步工具的实现步骤和各自的优缺点,以便在后续项目中能够选择最佳的工具,高效完成


一、Navicat

Navicat Premium 是一套多连接数据库开发工具,让你在单一应用程序中同时连接多种类型的数据库:MySQL、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL,可一次快速方便地访问所有数据库。

我们先来一起看看它的迁移能力 ⬇

  • Step 1: 增加数据源与目标库

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

  • Step 2: 打开数据传输工具填写好相关信息:工具->传输工具

在这里插入图片描述

  • Step 3: 选择全部表

在这里插入图片描述

  • Step 4: 同步结果

在这里插入图片描述

4步操作就实现了数据库同步迁移。


二、DataX

DataX 是阿里云DataWorks数据集成的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台

DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS 等各种异构数据源之间高效的数据同步功能。

我们可以把Datax的同步功能当作迁移功能使用,看看效果如何 ⬇

  • Step 1: 环境准备

  • Linux

  • JDK(1.8以上,推荐1.8)

  • Python(2或3都可以)

  • Apache Maven 3.x (Compile DataX)

我们这里只简单介绍工具包安装:

yum install -y java-1.8.0-openjdk

# python2 自带了,这里不做安装。
# 用工具包安装,不需要部署 Apache Maven
  • Step 2: Datax部署

1、直接下载DataX工具包

下载地址:https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202210/datax.tar.gz;

2、上传到Linux中

3、解压

tar -zxvf datax.tar.gz;

4、验证环境是否正常

python ./datax/bin/datax.py ./datax/job/job.json

5、验证结果
在这里插入图片描述

  • Step 3: 编写Job

1、查看配置模板

python ./datax/bin/datax.py -r postgresqlreader -w mysqlwriter

2、编写配置模板


{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "postgresqlreader",
                    "parameter": {
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:postgresql://10.3.70.132:30118/dc-master-data-management-pg_migrate_test"],
                                "table": ["crm_lead"]
                            }
                        ],
                        "password": "test",
                        "username": "test",
                        "column": ["*"]
                    }
                },
                "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://10.3.65.137:4000/test?characterEncoding=utf8&useSSL=false&useServerPrepStmts=true&prepStmtCacheSqlLimit=1000&useConfigs=maxPerformance&rewriteBatchedStatements=true&defaultfetchsize=-2147483648",
                                "table": ["crm_lead"]
                            }
                        ],
                        "username": "root",
                        "password": "tidb",
                        "writeMode": "insert",
                        "column": ["*"]
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": "1"
            }
        }
    }
}

  • Step 4: 启动Datax

1、启动Datax

python ./datax/bin/datax.py ./datax/pg2tidb.json

2、完成结果
在这里插入图片描述


二、TurboDX

TurboDX for MySQL 专门针对兼容MySQL路线的数据库作为目标库的实时同步工具软件,支持Oracle(RAC)、SQLServer、MySQL、PostgreSQL、DB2、Informix等,全量+增量实时同步到MySQL/TiDB/Oceanbase/TDSQL/GlodenDB/SequoiaDB/GreatDB/HotDB等。

  • Step 1: TurboDX 安装部署

1、准备⼀台Windows环境的机器

2、下载数据迁移⼯具(TurboDX for MySQL),并成功安装

3、启动

打开Windows 服务控制面板(可直接使用Windows 自带的搜索功能,输入 “服务” 即可快速进入),找到TurboDXDB、TurboDX Server、TurboDXWEB 三项服务,并按顺序依次启动。

在这里插入图片描述

  • Step 2: TurboDX 使用

1、访问 TurboDX

本机访问:http://127.0.0.1:8422/turbodx

进入TurboDX 控制中心,默认登录用户密码为 admin/admin

在这里插入图片描述

2、配置数据源 PostgreSQL
在这里插入图片描述
3、配置需要迁移的库
在这里插入图片描述
4、配置目标数据库TiDB
在这里插入图片描述

5、配置迁移任务

在右侧选项菜单中,找到任务管理,选择子菜单,复制同步,点击左上角新建按钮,配置集群信息,注意全量与增量选项都要勾选,然后保存。

在这里插入图片描述

6、完善任务配置

选中任务,并点击打开。

在这里插入图片描述
在这里插入图片描述
7、迁移目标库表结构

选择迁移库表,调整对应字段,点击确定。
在这里插入图片描述
在这里插入图片描述

8、启动迁移任务

点击运行

在这里插入图片描述

点击确定

在这里插入图片描述

9、解决报错

在这里插入图片描述

解决方法:执行 SQL 并重启 postgresql。

ALTER SYSTEM SET wal_level = 'logical';

总结

  • Navicat

-优点:方便快捷,操作简单,对于经常使用 Navicat 的小伙伴来说,更加熟悉,简单的数据迁移没有问题。

-缺点:一方面是收费,另外迁移表结构的时候,有时候会报错,应该是字段类型对应关系没做好。

  • DataX

-优点:对数据同步友好

-缺点:对数据迁移不够友好

Datax主要是做数据同步的,在数据迁移方面有诸多不方便的地方,比如Datax是用多个task来实现数据同步的,每个task需要手动编写 json ,并指定表名与同步的字段名。

如果数据迁移的表与字段太多,task的配置就是非常耗时的一件事情,这对于数据迁移来说实在太麻烦。而且使用Datax之前,下游数据库的表结构要自己创建,工作量一下就大了。所以数据量少的时候,可以用Datax来做数据迁移,但是有大量数据的情况下,不建议使用 Datax

  • TurboDX

-优点:部署简单;操作简单易懂;能全库全表迁移,也能自由过滤指定表迁移;迁移不需要人为干预,功能齐全;表结构迁移与数据迁移是分开的两个功能,可以单独操作。

-缺点:社区版需要使用Windows,Linux版本需要联系官方索要

以上就是本期关于数据库同步迁移的调研分析内容,大家在实际项目中,可以根据自己的情况酌情选择适合的。

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

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

相关文章

支付宝沙箱环境使用

第一步、开通支付宝开放平台账户 https://open.alipay.com/第二步、选择沙箱环境,按照官方文档操作即可 https://opendocs.alipay.com/common/02kkv7进入沙箱控制台 https://open.alipay.com/develop/sandbox/app第三步、配置接口的加密方式,选择自定义…

Modbus通信协议学习笔记

Modbus主从设备 主控设备(Modbus Master):工控机、PLC、触摸屏等等 从设备(Modbus Slave):PLC、Modbus采集模块、带485通讯的传感器、仪器仪表等等 Modbus物理接口:串口(RS232、RS4…

零信任-深信服零信任aTrust介绍(5)

​深信服零信任aTrust介绍 深信服是国内领先的互联网信任服务提供商,也是国内首家通过认证的全球信任服务商。深信服零信任是其中一项核心的信任技术,主要针对身份认证、数字签名、数字证书等方面的信任问题。 深信服零信任提供了一种新的安全保护模式…

【老王读Spring Transaction-5】Spring事务传播行为propagation behavior的实现原理

Spring事务传播行为propagation behavior的实现原理前言Spring 版本正文事务传播行为(propagation behavior)列举事务传播行为归类事务传播行为的实现原理小结前言 Spring 对事务的封装除了实现了基本的事务管理之外,还提供了事务传播行为(propagation behavior)的…

【STM32笔记】HAL库外部定时器、系统定时器阻塞、非阻塞延时

【STM32笔记】HAL库外部定时器、系统定时器阻塞、非阻塞延时 外部定时器 采用定时器做延时使用时 需要计算好分频和计数 另外还要配置为不进行自动重载 对于50MHz的工作频率 分频为50-1也就是50M/501M 一次计数为1us 分频为50000-1也就是1k 一次计数为1ms 我配置的是TIM6 只…

深度学习——自注意力机制和位置编码(笔记)

1.自注意力: ①在深度学习中,经常使用卷积神经网络或者循环神经网络对序列进行编码 ②对于key,value和query,自注意力有一套自己的选法,因为key,value和query的值来自同一组输入。因此被称为自注意力或内部注意力 2…

CDGA|数据治理为什么绕不开数据权责问题?如何确定数据权责?

许多企业在经历过信息化建设之后,自然而然地将数据管理的重任交付给了IT部门,而当企业数据质量产生问题时,高层管理者也往往将其归结为IT部门的责任。然而,企业IT部门真的能够管理好这些数据,使其发挥最大效能吗&#…

在 Kubernetes 上运行《我的世界》

最近给小朋友装上了叨叨许久的 Minecraft(我的世界),为了体验安装的是开源启动器 HMCL。其实这游戏我也关注比较久了,不过感觉太耗时间。但被小朋友拉上一起玩,便研究了下自建服务器。GitHub 发现已经有人做好了 Minec…

操作系统(四):磁盘调度算法,先来先服务,最短寻道时间优先,电梯算法

文章目录一、磁盘结构二、先来先服务三、最短寻道时间优先四、电梯算法 SCAN一、磁盘结构 盘面(Platter):一个磁盘有多个盘面; 磁道(Track):盘面上的圆形带状区域,一个盘面可以有多…

大数据处理学习笔记1.2 Scala变量与数据类型

文章目录零、本讲学习目标一、变量声明(一)简单说明(二)利用val声明变量1、声明方式2、案例演示(三)利用var声明变量1、声明方式2、案例演示(四)换行输入语句(续行&#…

生产故障|Kafka ISR频繁伸缩引发性能急剧下降

生产故障|Kafka ISR频繁伸缩引发性能急剧下降-阿里云开发者社区 本文是笔者双十一系列第二弹,源于一个双十一期间一个让笔者猝不及防的生产故障,本文将详细剖析Kafka的副本机制,以及ISR频繁变更(扩张与伸缩)为什么会导致集群不可…

深入浅出C++ ——queue类深度剖析

文章目录一、queue的简介二、queue类常用接口三、STL中queue类的模拟实现一、queue的简介 队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。队列作为容器适配器实现,容器适配…

【RNN详解】SimpleRNN,LSTM,bi-LSTM的原理及Tensorflow实现

目录1.摘要2.SimpleRNN2.1.原理介绍2.2.代码实现3.LSTM3.1.原理介绍3.2.代码实现4.LSTM改进—bi_LSTM5.总结感觉不错的话,记得点赞收藏啊。1.摘要 RNN是一种特殊的神经网络结构,它是根据“人的认知是基于过往的经验和记忆”这一观点提出的,它…

node.js+vue图书销售租赁书店运营管理系统mysql vscode

图书销售租赁书店运营管理系 前端技术:nodejsvueelementui,视图层其实质就是vue页面,通过编写vue页面从而展示在浏览器中,编写完成的vue页面要能够和控制器类进行交互,从而使得用户在点击网页进行操作时本图书馆租赁管理系统主要分…

面向新手的git实战教程

嗨!我是团子,大家好久不见呀~ 记得之前在网上学习git相关知识时,看到的文章大部分都是讲解git的基本命令有哪些,用处是什么,但是自己真正上手使用git时,仍然无从下手。 所以今天就想从初始化一个git仓库开始…

Quartz 快速入门案例,看这一篇就够了

前言 Quartz 是基于 Java 实现的任务调度框架,对任务的创建、修改、删除、触发以及监控这些操作直接提供了 api,这意味着开发人员拥有最大的操作权,也带来了更高的灵活性。 什么是任务调度? 任务调度指在将来某个特定的时间、固…

rabbitmq topic模式设置#通配符情况下 消费者队列未接收消息问题排查解决

目录说明说明 生产者配置 Exchange:topic_exchange_shcool Routing key:topic.shcool.# 消费者代码配置 Exchange:topic_exchange_shcool Routing key:topic.shcool.user PostConstructpublic void twoRabbitInit() {//声明交换…

基于微信小程序云开发实现考研题库小程序项目(完整版)

今天手把手的带大家实现一款答题类的题库小程序,如果着急的话,可以直接去看文末源码.下载与项目部署。考研题库小程序云开发实战,完整版提供给大家学习。题库小程序,基于云开发的微信答题小程序,软件架构是微信原生小程…

YOLOv8进行改进并训练自定义的数据集

一.训练数据集准备 YOLOv8的训练数据格式与YOLOv5的训练数据格式一致,这一部分可以进行沿用。之前博文有发布VOC标注格式转YOLO标注格式的脚本,有需要可以查看。 二.项目克隆 YOLOv8项目文件可以直接去github上下载zip文件然后解压,也可以直…

Telerik UI for WPF 2023 R1

Telerik UI for WPF 2023 R1 之 WPF 的 Telerik 用户界面,WPF 控件库开发人员信任,快速构建美观、高性能的 WPF 业务应用程序。现在支持 .NET 6 和 7.0。 概述部分背景图像 主要特征 现代专业主题图标,现代专业主题 通过各种受 Office、Wind…