有什么方法从 PostgreSQL 数据迁移TiDB

网友投稿 542 2023-04-05

一、背景

之前在项目中,收到一个紧急需求,要把数据从 *** 迁移到 TiDB 中。由于时间紧任务重,来不及调研高效的方式,笔者直接使用了 Navicat 内置的功能,把数据从 *** 迁移到了 TiDB。现在笔者有时间了,就调研了几个同步迁移工具。下面让我们一起看看,这几个工具各有什么特点吧。

有什么方法从 *** 数据迁移到 TiDB ?

二、Navicat

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

1.增加数据源与目标库

传输工具">

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

3.选择全部表

4.同步结果

三、DataX

DataX 是*** DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、***、***、SqlServer、Postgre、HDFS、Hive、ADS、***、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS 等各种异构数据源之间高效的数据同步功能。

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

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

2.datax部署

直接下载DataX工具包:DataX***

上传到linux中

解压 tar -zxvf datax.tar.gz

验证环境是否正常 python ./datax/bin/datax.py ./datax/job/job.json

验证结果:

3.编写job

查看配置模板 python ./datax/bin/datax.py -r postgresqlreader -w mysqlwriter

编写配置模板:

{    "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"           }       }   } } ​

4.启动datax

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

完成结果:

三、TurboDX

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

1.TurboDX 安装部署

准备⼀台Windows环境的机器

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

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

2.TurboDX 使用

1.访问 TurboDX

本机访问:http://127.0.0.1:8422/turbodx 进入TurboDX 控制中心,默认登录用户密码为 admin/admin

2.配置数据源 ***

3.配置需要迁移的库表

4.配置目标数据库TiDB

5.配置迁移任务

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

6.完善任务配置

选中任务,并点击打开

7.迁移目标库表结构

选择迁移库表,调整对应字段,点击确定

8.启动迁移任务

点击运行

点击确定

9.解决报错

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

ALTER SYSTEM SET wal_level = logical;

四、总结

1、Navicat

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

缺点:

收费!

迁移表结构的时候,有时候会报错,应该是字段类型对应关系没做好。

2、DataX

优点:对数据同步友好

缺点:对数据迁移不够友好。datax主要是做数据同步的,在数据迁移方面有诸多不方便的地方,比如datax是用多个task来实现数据同步的,每个task需要手动编写 json 并指定表名与同步的字段名,如果数据迁移的表与字段太多,task的配置就是非常耗时的一件事情,这对于数据迁移来说实在太麻烦。而且使用datax之前,下游数据库的表结构要自己创建,工作量一下就大了。所以数据量少的时候,可以用datax来做数据迁移,但是有大量数据的情况下,不建议使用 datax。

3、TurboDX

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

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:TiCDC 源码解读(4)-- TiCDC Scheduler 工作原理解析
下一篇:TiDB PPT玩家快速点评 V6.5 新特性
相关文章