暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

715





数据库

神州数码云基地

在数据库上的尝试、调研与分享




本期内容 

 数据库迁移同步工具调研 




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



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







                数据库同步迁移的工具很多

                ”称体裁衣“才是王道~


                如果你对数据库有想法

                欢迎加入我们一起讨论哦⬇

                本期作者 

                 蔡一凡 



                更多精彩内容 





                了解云基地,就现在!


                IT技术哪家

                神州数码最在行

                行业新星后起之秀

                历史虽不长,但实 力 强




                文章转载自神州数码云基地,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论