写点什么

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

  • 2023-01-20
    北京
  • 本文字数:1727 字

    阅读完需:约 6 分钟

作者: caiyfc 原文来源:https://tidb.net/blog/5540bfaa

一、背景

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

二、Navicat

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

1. 增加数据源与目标库


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

3. 选择全部表

4. 同步结果

三、DataX

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


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

1. 环境准备


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


yum install -y java-1.8.0-openjdk# python2 自带了,这里不做安装。# 用工具包安装,不需要部署 Apache Maven
复制代码

2.datax 部署

  1. 直接下载 DataX 工具包:DataX 下载地址

  2. 上传到 linux 中

  3. 解压 tar -zxvf datax.tar.gz

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

  5. 验证结果:


3. 编写 job

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

  2. 编写配置模板:

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 等。

1.TurboDX 安装部署

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

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

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


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';
复制代码

四、总结

1、Navicat


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

  • 缺点:

  • 收费!

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


2、DataX


  • 优点:对数据同步友好

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


3、TurboDX


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

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


发布于: 刚刚阅读数: 3
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
有什么方法从 PostgreSQL 数据迁移到 TiDB ?_迁移_TiDB 社区干货传送门_InfoQ写作社区