首页 > 数据库 >3种常见的数据库迁移工具对比

3种常见的数据库迁移工具对比

时间:2024-12-26 09:41:07浏览次数:3  
标签:同步 TurboDX 数据库 Step datax 迁移 对比

3种常见的数据库迁移工具对比

神州数码云基地 神州数码云基地 已认证账号 2 人赞同了该文章

之前在项目中,收到一个紧急需求,要把数据从 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版本需要联系官方索要。


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


我们致力于用数字技术重构企业价值,助力企业实现数字化转型升级!

公众号搜索【神州数码云基地】,后台回复TiDB,加入数据库技术交流群!

bilibili搜索【神州数码云基地】,收看更多数据库相关视频


说明:文章由神州数码武汉云基地团队实践整理输出,转载请注明出处。

发布于 2023-02-15 11:43・IP 属地湖北

标签:同步,TurboDX,数据库,Step,datax,迁移,对比
From: https://www.cnblogs.com/ios9/p/18631947

相关文章

  • redis中,msyql数据库读写分离搭建
    一.mysql读写分离:缓解主服务器的压力 1.概念:主服务器写数据,从服务器读数据 2.实现方法: 客户端分离:开发手动分离地址 服务端分离:数据库与应用之间加一个中间件,分离读写请求 mysql-proxy,mysql-route,maxscale amoeba,cobar,mycat2 atlas,k......
  • GuassDB数据库的GRANT & REVOKE
    ​目录一、GaussDB的权限概述二、GaussDB权限设计建议三、GaussDB的GRANT命令1.功能说明2.注意事项3.常用语法四、GaussDB的REVOKE命令用法1.功能说明2.注意事项3.常用语法五、GaussDB示例1.GRANT语句示例2.REVOKE语句示例一、GaussDB的权限概述在数据库中,对象......
  • GaussDB 数据库实验环境搭建指导
    @目录简介内容描述实验环境说明1GaussDB数据库购买1.1实验介绍1.1.1关于本实验1.1.2实验目的1.2购买GaussDB数据库1.2.1登录华为云1.2.2购买华为云GaussDB数据库简介本指导书适用于在华为云部署购买GaussDB数据库,通过该指导书可以顺利完成GaussDB数据库在华为云的购买。......
  • 4.2 数据库分组查询
    1、为什么要分组上一节课我们学习了聚合函数,默认统计的是全表范围的数据。配合上where子句就能缩小统计的范围了,但是这并不能满足我们的要求。比如说我现在想查询每个部门的平均底薪是多少钱,这个就需要对员工记录,按照部门编号去分组了。比如说10部门的员工分成一组,20部门的员......
  • centos 自动备份mysql数据库
    创建自动备份脚本创建文件mysql_auth_back.sh#!/bin/bash#source/etc/profile#以下配置信息需要根据自己情况进行编辑DB_HOST="127.0.0.1"......
  • 崩溃列表数据库查询(可供参考)
    首先去https://weikezhijia.feishu.cn/sheets/BIvxsKZhHhzpC6tDyoLcPE50n4d?sheet=9ikXjx看库中导出指标,然后可以查到是rum_error表,然后去ors_rum_test服务器,ors_rum_test数据库,rum_error表去查询,结合点击全部按钮后查看F12 然后查看preView里的字段,结合着去查rum_error表,比......
  • 数据库基础
    1、数据库概念一个存储数据的地方数据按照分类存储到不同的表简单的电子表格非常高效快速查询其中的数据2、为什么学习数据库关注页面操作,还需要检查数据库中的数据是否正确出现bug时,能够定位到问题原因造数据,修改数据-测试环境3、数据库类型关系型数......
  • redis 数据迁移到集群
    关闭protected-mode/usr/local/redis/bin/redis-cli-p26379-a123456--no-auth-warning-h192.168.174.108configsetprotected-modeno/usr/local/redis/bin/redis-cli-p26379-a123456--no-auth-warning-h192.168.174.112configsetprotected-modeno/us......
  • 使用python脚本,批量修改mysql数据库表字段名称
    前提:搭建python相关环境目的:将驼峰式命名或混合大小写的字段名转换为下划线分隔的小写字段名。例如:UserName->user_name,userName->user_name一、新建脚本update_table_column_names.pyimportpymysqlimportreimportsysdefto_snake_case(name):s1......
  • 数据库连接池----DBUtils的使用
      DBUtils是一个用于管理数据库连接池的Python库,它提供了连接池的管理,可以避免每次进行数据库操作时都重新建立连接。通过DBUtils,你可以更高效地管理数据库连接,尤其在高并发的情况下,能够有效减少创建和销毁连接的开销。DBUtils支持多种数据库驱动,包括MySQL、Postgre......