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

news/2024/12/26 9:42:22/文章来源:https://www.cnblogs.com/ios9/p/18631947

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工具包

下载地址:datax-opensource.oss-cn-hangzhou.aliyuncs.com

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

本机访问: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 属地湖北

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

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

相关文章

img标签的onerror事件有什么作用?

onerror 是 HTML <img> 标签的一个事件属性,它用于指定当图像加载出现错误时执行的 JavaScript 代码。如果指定的图像文件不存在、无法访问,或者由于某种原因无法正确加载到页面上,就会触发这个事件。 例如,你可以使用 onerror 事件来提供一个备用的图像,以便在原图…

java基础3

异常 Java 异常类层次结构图概览:Exception 和 Error 有什么区别? 在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 Throwable 类。Throwable 类有两个重要的子类:Exception :程序本身可以处理的异常,可以通过 catch 来进行捕获。Exception 又可以分为 Checked …

12-26 工作笔记

1. 从已有的PCB制作封装库得到下面的内容,代表成功了。

业务系统文件安全上传 如何做到安全合规?

业务系统文件安全上传的业务场景,主要是指金融、医疗、能源、政府机构等,内部各类业务系统(例如:OA、供应商管理系统、客户管理系统、客服系统、风控系统等)面向大量终端用户提供服务时,往往需要终端用户上传各类文件附件。 这种业务场景面临的主要挑战包括: 1、安全威…

Byrutor,俄罗斯最大游戏破解资源站|中文

Byrutor是一个源自俄罗斯的游戏下载网站,提供大量最新和经典的游戏资源,几乎涵盖了Steam等主流平台的内容。用户可以通过搜索或浏览找到自己喜欢的游戏,并通过BT种子下载游戏资源。该平台支持多种语言,包括俄语和英语,并且每天更新内容,确保用户能够获取最新的游戏资源。…

销冠秘籍:人脉拓展

在人生的旅途中,人脉往往扮演着至关重要的角色。如果你的朋友众多,人际关系广泛,善于建立和维护关系,那么业务的拓展自然会水到渠成。然而,现实生活中的人脉构建并非易事,它需要我们用心去经营,去维护。 自我价值:人脉的基石 初入职场时,我曾被老板告诫:年轻人不要过…

未发现数据源名称并且未指定默认驱动程序

如果遇到类似“未发现数据源名称并且未指定默认驱动程序”的错误提示,通常是因为系统找不到指定的ODBC驱动程序。此时建议检查以下几个方面:确认驱动程序已正确安装:通过控制面板中的“管理工具” -> “ODBC数据源”查看是否列出了所需的MySQL ODBC驱动程序。 验证驱动程…

虚拟主机上本地连接数据库非常缓慢,应该如何排查和优化?

当在虚拟主机环境中遇到本地连接数据库变得非常缓慢的情况时,这不仅影响用户体验,还可能导致业务流程中断。因此,迅速有效地排查并解决这个问题至关重要。下面我们将详细介绍如何一步步排查导致数据库连接变慢的原因,并提供一些实用的优化建议。 首先,需要明确的是,“本地…

远程SSH无法登录,重置密码无效,该如何处理?

当遇到远程SSH无法登录且重置密码无效的情况时,这往往意味着存在较为复杂的安全或配置问题。这类问题不仅会影响日常运维工作,还可能暗示着潜在的安全风险。因此,必须谨慎对待并尽快找出根本原因加以修复。接下来,我们将详细介绍如何诊断和解决此类问题的方法。 首先要认识…

网站二级页面无法完整显示怎么办?

确认程序内部伪静态及插件设置是否正确。 检查服务器日志,查看是否有相关错误信息。 尝试清除浏览器缓存或使用不同浏览器访问,排除客户端问题。非常感谢您长期对我们服务的支持!扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、…

客户反馈无法访问网站怎么办?

让客户尝试更换不同浏览器访问,排除浏览器兼容性问题。 建议客户重启本地路由器或重新拨号后再次访问。 提供客户的IP地址,我们将在服务器端进行核查,确认是否存在拦截情况。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML…

FTP账号无法连接,提示连接失败,如何解决?

建议您提供FTP设置截图和连接报错截图,以便我们进一步核实。同时,确保FTP服务器地址、用户名和密码正确无误。如果问题仍然存在,建议您联系技术支持获取更多帮助。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、J…