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

oracle to mogdb 迁移---mtk工具

原创 刘继超 2022-08-08
1079

1、MTK工具介绍

MTK–异构数据迁移工具

MTK全称为 Database Migration Toolkit,是一个可以将Oracle/DB2/MySQL/openGauss/SqlServer/Informix数据库的数据结构,全量数据高速导入到MogDB的工具。
1.多数据库类型支持
支持 Oracle,DB2,openGauss,SqlServer,MySQL,Informix 等数据库之间的互相迁移 (互为源和目标)。
支持将数据库内容导出成可执行的 SQL 脚本 (源数据库内容迁移到文本)

2.迁移性能调整

支持调整数据迁移过程中的批量查询、批量插入大小等细粒度参数,来调整数据迁移的性能。

支持数据迁移时的多并发,并行和数据分片。

3.结构和数据分离

支持同步迁移对象结构和数据;也支持仅迁移结构或者仅迁移数据(在结构已经迁移完之后)。

支持表级和 Schema 级的迁移范围限定,允许指定schema下全部对象或者某些对象进行迁移 。

支持迁移过程中的 Schema 重映射,也就是支持将对象从源Schema迁移到目标端的不同名Schema下 。

4.程序迁移(支持Oracle/MySQL为源,openGauss/Mogdb为目标)

支持Oracle/MySQL->openGauss/Mogdb的存储过程,函数,触发器,包迁移。

自动根据openGauss/Mogdb的语法规则,对Oracle/MySQL的程序进行改写,之后再在目标端openGauss/Mogdb数据库中创建

2、MTK工具安装 和 oracle需要的客户端安装

[omm@db1 ~]$ su - root
Password: 
Last login: Thu Jun 30 14:21:42 CST 2022 from 192.168.3.100 on pts/0
[root@db1 ~]# 
[root@db1 ~]# 
[root@db1 ~]# cd /home
[root@db1 home]# ls
omm  roo
[root@db1 home]# cd omm/.
[root@db1 omm]# ls
mtk_2.4.2_linux_amd64.tar.gz                              oracle-instantclient19.12-devel-19.12.0.0.0-1.x86_64.rpm  oracle-instantclient19.12-sqlplus-19.12.0.0.0-1.x86_64.rpm
oracle-instantclient19.12-basic-19.12.0.0.0-1.x86_64.rpm  oracle-instantclient19.12-jdbc-19.12.0.0.0-1.x86_64.rpm   tb_rp_ct_crso_out_call_list_mon201803_1.txt
[root@db1 omm]# rpm -ivh oracle-instantclient19.12-*.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:oracle-instantclient19.12-basic-1################################# [ 25%]
   2:oracle-instantclient19.12-devel-1################################# [ 50%]
   3:oracle-instantclient19.12-jdbc-19################################# [ 75%]
   4:oracle-instantclient19.12-sqlplus################################# [100%]
[root@db1 omm]# 


[root@db1 ~]# cd /home/omm/
[root@db1 omm]# ll
total 233604
-rw------- 1 omm dbgrp  12352226 Jul  5 16:54 mtk_2.4.2_linux_amd64.tar.gz
-rw------- 1 omm dbgrp  54501080 Jul  6 14:50 oracle-instantclient19.12-basic-19.12.0.0.0-1.x86_64.rpm
-rw------- 1 omm dbgrp    613488 Jul  6 14:50 oracle-instantclient19.12-devel-19.12.0.0.0-1.x86_64.rpm
-rw------- 1 omm dbgrp   1524732 Jul  6 14:50 oracle-instantclient19.12-jdbc-19.12.0.0.0-1.x86_64.rpm
-rw------- 1 omm dbgrp    703176 Jul  6 15:06 oracle-instantclient19.12-sqlplus-19.12.0.0.0-1.x86_64.rpm
-rw------- 1 omm dbgrp 169508765 Jun 28 11:33 tb_rp_ct_crso_out_call_list_mon201803_1.txt
[root@db1 omm]# tar -xf mtk_2.4.2_linux_amd64.tar.gz 
[root@db1 omm]# ll
total 233604
drwxr-xr-x 3 root root         69 Jul  7 09:12 mtk_2.4.2_linux_amd64
-rw------- 1 omm  dbgrp  12352226 Jul  5 16:54 mtk_2.4.2_linux_amd64.tar.gz
-rw------- 1 omm  dbgrp  54501080 Jul  6 14:50 oracle-instantclient19.12-basic-19.12.0.0.0-1.x86_64.rpm
-rw------- 1 omm  dbgrp    613488 Jul  6 14:50 oracle-instantclient19.12-devel-19.12.0.0.0-1.x86_64.rpm
-rw------- 1 omm  dbgrp   1524732 Jul  6 14:50 oracle-instantclient19.12-jdbc-19.12.0.0.0-1.x86_64.rpm
-rw------- 1 omm  dbgrp    703176 Jul  6 15:06 oracle-instantclient19.12-sqlplus-19.12.0.0.0-1.x86_64.rpm
-rw------- 1 omm  dbgrp 169508765 Jun 28 11:33 tb_rp_ct_crso_out_call_list_mon201803_1.txt
[root@db1 omm]# cd mtk_2.4.2_linux_amd64/
[root@db1 mtk_2.4.2_linux_amd64]# ll
total 35096
-rw-r--r-- 1 root root    43629 Jul  4 09:43 CHANGELOG.md
drwxr-xr-x 2 root root      209 Jul  7 09:12 example
-rwxr-xr-x 1 root root 35885568 Jul  4 09:43 mtk
-rw-r--r-- 1 root root     2051 Jan 11 16:51 README.md

3、获取MTK license

查看版本

./mtk -v

申请License 请联系恩墨的小墨!!!

./mtk license gen

查看命令行帮助

./mtk -h

4、配置 ora2mog.json

{
  "taskID": "1544967622372626432",
  "source": {
    "type": "oracle",
    "connect": {
      "version": "19.7.0.0.0",
      "host": "192.168.3.59",
      "user": "dbmt",
      "port": 1521,
      "password": "******",
      "dbName": "wxoadb",
      "timeout": 30000000000,
      "charset": "ZHS16GBK"
    },
    "parameter": {
      "parallelInsert": 1,
      "dropExistingObject": false,
      "truncTable": false,
      "caseSensitive": 0,
      "colKeyWords": null,
      "objKeyWords": null,
      "quoteMark": false,
      "path": "",
      "schemaPath": "",
      "dataPath": "",
      "fileType": "",
      "fileSize": "",
      "csvHeader": false,
      "csvNullValue": "",
      "csvFieldDelimiter": "",
      "csvOptionallyEnclosed": "",
      "excludeSysTable": null,
      "remapSchema": null,
      "remapTable": null,
      "remapTablespace": null,
      "enableSyncTabTbsPro": false,
      "enableSyncCompTabPro": false,
      "timeFormat": "",
      "dateFormat": "",
      "dateTimeFormat": "",
      "noSupportPartTabToNormalTab": false,
      "ignoreDB2PartInclusive": false,
      "igNotSupportIntervalPart": false,
      "igErrorData": false,
      "enableBatchCommit": false,
      "ignoreTabPartition": false,
      "autoAddMaxvaluePart": false,
      "autoAddMySQLAutoIncr": false,
      "autoAddMySQLAutoIncrTabList": null,
      "ignoreNotSupportDefault": false,
      "replaceZeroDate": "",
      "virtualColToNormalCol": false,
      "virtualColConv": null,
      "mySQLSkipErrorDateTimeData": false,
      "ignoreTableDDLCompErr": false,
      "convertPackageMethod": "",
      "enableOgBlobClob": false,
      "enableConvertSrid": false,
      "defaultSrid": "",
      "seqLastNumAddNum": 0,
      "skipColumnType": null,
      "skipColumnName": null,
      "templateSeqName": "",
      "charAppendEmptyString": false,
      "tableOptions": null,
      "indexOptions": null
    }
  },
  "target": {
    "type": "mogdb",
    "connect": {
      "version": "2.1.1",
      "vendor": "MogDB",
      "host": "192.168.3.25",
      "user": "dbmt",
      "port": 26000,
      "password": "******",
      "dbName": "miao",
      "timeout": 30000000000,
      "charset": "UTF8",
      "datCompatibility": "A"
    },
    "parameter": {
      "parallelInsert": 4,
      "dropExistingObject": false,
      "truncTable": false,
      "caseSensitive": 0,
      "colKeyWords": {},
      "objKeyWords": {},
      "quoteMark": false,
      "path": "./data",
      "schemaPath": "data/schema",
      "dataPath": "data/data",
      "fileType": "sql",
      "fileSize": "",
      "csvHeader": false,
      "csvNullValue": "",
      "csvFieldDelimiter": ",",
      "csvOptionallyEnclosed": "\"",
      "excludeSysTable": [],
      "remapSchema": {},
      "remapTable": {},
      "remapTablespace": {},
      "enableSyncTabTbsPro": false,
      "enableSyncCompTabPro": false,
      "timeFormat": "HH:MI:SS",
      "dateFormat": "YYYY-MM-DD",
      "dateTimeFormat": "YYYY-MM-DD HH24:MI:SS",
      "noSupportPartTabToNormalTab": false,
      "ignoreDB2PartInclusive": false,
      "igNotSupportIntervalPart": false,
      "igErrorData": false,
      "enableBatchCommit": false,
      "ignoreTabPartition": false,
      "autoAddMaxvaluePart": false,
      "autoAddMySQLAutoIncr": false,
      "autoAddMySQLAutoIncrTabList": [],
      "ignoreNotSupportDefault": false,
      "replaceZeroDate": "",
      "virtualColToNormalCol": false,
      "virtualColConv": {},
      "mySQLSkipErrorDateTimeData": false,
      "ignoreTableDDLCompErr": false,
      "convertPackageMethod": "",
      "enableOgBlobClob": false,
      "enableConvertSrid": false,
      "defaultSrid": "",
      "seqLastNumAddNum": 0,
      "skipColumnType": {},
      "skipColumnName": {},
      "templateSeqName": "SEQ_{{.TabName}}_{{.ColName}}",
      "charAppendEmptyString": false,
      "tableOptions": {},
      "indexOptions": {}
    }
  },
  "limit": {
    "parallel": 4,
    "fetchSize": 1000,
    "batchSize": 1000,
    "bufferSize": 8,
    "cpBufferSize": 8,
    "oracleSelectParallel": 2,
    "channelCacheNum": 10000,
    "limit": 0
  },
  "object": {
    "tables": [],
    "schemas": [
      "DBMT"
    ],
    "excludeTable": {},
    "tableSplit": {},
    "objects": {
      "DBMT": []
    }
  },
  "dataOnly": false,
  "schemaOnly": false,
  "disableTableDataComp": false,
  "disableCollStatistics": false,
  "reportFile": "mtk_report.html",
  "debug": false,
  "preRun": false,
  "test": false,
  "disableIgnoreCase": false,
  "disableSelectPart": false,
  "disableFKCons": false,
  "disableSyncIdxAfterData": false,
  "disablePrintMigDataProgress": false
}

5、扩文件系统

[root@db1 ~]# mount /dev/sdb1 /mogdb/data/db1/pg_location
[root@db1 ~]# chown omm:dbgrp /mogdb/data/db1/pg_location
[root@db1 /]# vi /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sat Mar  7 09:58:11 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=133cf253-8e46-4fb9-bbba-a18965938533 /                       xfs     defaults        0 0
UUID=cd9c7c10-e67c-4204-a76e-af44f841fd7f swap                    swap    defaults        0 0
/dev/sdb1     /mogdb/data/db1/pg_location     ext4     defaults    0 0

[root@db1 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        70G   24G   47G  35% /
devtmpfs        904M     0  904M   0% /dev
tmpfs           920M   12K  920M   1% /dev/shm
tmpfs           920M  9.2M  910M   1% /run
tmpfs           920M     0  920M   0% /sys/fs/cgroup
tmpfs           184M   12K  184M   1% /run/user/42
tmpfs           184M     0  184M   0% /run/user/1001
/dev/sdb1       2.0T   71M  1.9T   1% /mogdb/data/db1/pg_location/db_tbs

7、执行mtk

 ./mtk -c ora2mog.json --reportFile mtk_report.html --logfile mtk_report.log

8、执行后结果


-----------------------
ObjectName Type Summary
-----------------------

+------------------+-------------------+-------------------+--------+-----------+-------------+-------------+-------------+-------------+
|       Type       |     StartTime     |      EndTime      | Status | Total Num | Success Num | Warring Num | Failed  Num | Time        |
+------------------+-------------------+-------------------+--------+-----------+-------------+-------------+-------------+-------------+
|Schema            |2022-08-08 06:49:46|2022-08-08 06:49:46|finish  |1          |1            |0            |0            |162 ms       |
|Sequence          |2022-08-08 06:49:46|2022-08-08 06:49:46|finish  |0          |0            |0            |0            |225 ms       |
|ObjectType        |2022-08-08 06:49:46|2022-08-08 06:49:47|finish  |0          |0            |0            |0            |953 ms       |
|Queue             |2022-08-08 06:49:47|2022-08-08 06:49:47|finish  |0          |0            |0            |0            |245 ms       |
|Table             |2022-08-08 06:49:47|2022-08-08 06:50:06|finish  |1804       |1697         |107          |0            |19 s 290 ms  |
|TableData         |2022-08-08 06:50:06|2022-08-08 19:15:24|finish  |1854       |1808         |43           |3            |12 h 25 m 17 s 655 ms|
|Index             |2022-08-08 19:15:24|2022-08-08 19:15:25|finish  |458        |451          |6            |1            |740 ms       |
|Constraint        |2022-08-08 19:15:25|2022-08-08 19:15:33|finish  |0          |0            |0            |0            |8 s 444 ms   |
|DBLink            |2022-08-08 19:15:33|2022-08-08 19:15:33|finish  |0          |0            |0            |0            |55 ms        |
|View              |2022-08-08 19:15:33|2022-08-08 19:15:34|finish  |0          |0            |0            |0            |179 ms       |
|MaterializedView  |2022-08-08 19:15:34|2022-08-08 19:15:34|finish  |0          |0            |0            |0            |528 ms       |
|Function          |2022-08-08 19:15:34|2022-08-08 19:15:34|finish  |0          |0            |0            |0            |304 ms       |
|Procedure         |2022-08-08 19:15:34|2022-08-08 19:15:35|finish  |0          |0            |0            |0            |147 ms       |
|Package           |2022-08-08 19:15:35|2022-08-08 19:15:35|finish  |0          |0            |0            |0            |166 ms       |
|Trigger           |2022-08-08 19:15:35|2022-08-08 19:15:35|finish  |0          |0            |0            |0            |160 ms       |
|Synonym           |2022-08-08 19:15:35|2022-08-08 19:15:35|finish  |0          |0            |0            |0            |74 ms        |
|TableDataCom      |2022-08-08 19:15:35|2022-08-08 19:27:07|finish  |1804       |1761         |43           |0            |11 m 31 s 999 ms|
|AlterSequence     |2022-08-08 19:27:07|2022-08-08 19:27:08|finish  |0          |0            |0            |0            |648 ms       |
|CollStatistics    |2022-08-08 19:27:08|2022-08-08 19:32:12|finish  |1804       |1761         |43           |0            |5 m 4 s 185 ms|
+------------------+-------------------+-------------------+--------+-----------+-------------+-------------+-------------+-------------+

time="2022-08-08 19:32:13.852987" level=info msg="reportDir: mtk_report" function=PrintReport line=236 file="mtk/cmd/mtk/services/cmd.go"
time="2022-08-08 19:32:26.077751" level=info msg="the text report : mtk_report.txt" function=HTMLReportToFIle line=123 file="mtk/pkg/report/report.go"
time="2022-08-08 19:32:27.060807" level=info msg="the warring report : mtk_report.warring" function=HTMLReportToFIle line=130 file="mtk/pkg/report/report.go"
time="2022-08-08 19:32:27.083022" level=info msg="the error report : mtk_report.err" function=HTMLReportToFIle line=137 file="mtk/pkg/report/report.go"

9、可以查看html文件
image.png
10、错误处理
从oracle库导出csv文件 ,然后copy mogdb库里

最后修改时间:2022-08-09 09:54:39
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
3人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论