使用MTKD从oracle迁移到mogdb并调用MVD进行对比

2023年 12月 31日 27.0k 0

原作者:陈坤

背景:有客户需要从oracle 迁移部分数据到mogdb中,需要修改schema 名,修改表名,并希望使用mvd进行批量的对比。在单独使用mvd进行对比时,只支持读取mtk的json格式,但不能获取remap的信息,或只能进行单表对比。可以直接使用mtk调用mvd进行批量的对比。命令行模式为,先进行mtk迁移后,执行mtk -c ora2mogdb.json mvd。而这里介绍使用图形化工具mtkd 进行迁移并对比数据。

软件版本:

操作系统:linux-centos-v7.6.1810

源库:oracle 19.11.0

目标库:mogdb 5.0.1

MTKD 2.9.5

MVD 3.6.9

安装环境

下载mtkd:

https://docs.mogdb.io/zh/mtk/v2.0/release-2.9#295

mtkd 可以安装在源库,也可以安装在目标库上,本案例是安装在目标库。一般来说,源库有数据或者有业务,而目标库是新环境,大多数情况也会选择装在目标库上。

安装mtk的环境配置,如果要迁移oracle数据库,就要安装oracle 客户端。具体源库目标库分别依赖的环境可以参考:https://docs.mogdb.io/zh/mtk/v2.0/mtk-env

安装oracle客户端

本案例是以迁移oracle为例,需要安装oracle客户端。

在下面地址中找到对应操作系统的版本

https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

oracle官网没找到19.11对应的,只有最新的,下载了一个19.21的客户端的zip版本,也是可以用的。

下载后解压

unzip instantclient-basic-linux.x64-19.21.0.0.0dbru.zip

出现一个目录,这样就可以了

instantclient_19_21

例如:

[enmo@master137 ~]$ ll /home/enmo/mtk

total 161744

drwx------ 3 enmo enmo 4096 Dec 4 15:32 instantclient_19_21

-rw-r–r-- 1 enmo enmo 75320771 Dec 4 15:32 instantclient-basic-linux.x64-19.21.0.0.0dbru.zip

设置oracle 环境变量

在执行mtk 之前需要设置oracle 客户端的环境变量,否则会报错:

DPI-1047: Cannot locate a 64-bit Oracle Client library: “libclntsh.so: cannot open shared object file: No such file or directory”.

根据我当前的目录,设置环境变量:

export LD_LIBRARY_PATH=/home/enmo/mtk/instantclient_19_21:$LD_LIBRARY_PATH

安装MTKD

环境安装好之后。在主机上解压MTKD安装包,我是安装在数据库操作系统用户下的,没有装在root下,具体安装步骤如下:

[enmo@master137 ~]$ cp mtkd_2.9.5_linux_amd64.tar.gz mtkd/

[enmo@master137 ~]$ cd mtkd

[enmo@master137 mtkd]$ ll

total 27360

-rw------- 1 enmo enmo 28012941 Dec 6 14:14 mtkd_2.9.5_linux_amd64.tar.gz

[enmo@master137 mtkd]$ tar -zxf mtkd_2.9.5_linux_amd64.tar.gz

[enmo@master137 mtkd]$ ll

total 27364

drwx------ 2 enmo enmo 4096 Dec 6 14:14 mtkd_2.9.5_linux_amd64

-rw------- 1 enmo enmo 28012941 Dec 6 14:14 mtkd_2.9.5_linux_amd64.tar.gz

[enmo@master137 mtkd]$ cd mtkd_2.9.5_linux_amd64/

[enmo@master137 mtkd_2.9.5_linux_amd64]$ ll

total 81912

-rw------- 1 enmo enmo 82994 Nov 1 09:44 CHANGELOG.md

-rw------- 1 enmo enmo 3451 May 12 2023 HOW-TO-RUN.md

-rwx------ 1 enmo enmo 83785920 Nov 1 09:43 mtkd

生成license

生成license的命令,需要能连接外网,填写邮箱后会生成license ,也会下载一份到当前目录:

mtkd license gen

如果已有mtk,mvd等产品的license 可以直接复制过来用。

[enmo@master137 mtkd_2.9.5_linux_amd64]$ cp …/…/mtk/license.json license.json

[enmo@master137 mtkd_2.9.5_linux_amd64]$ ll

total 81916

-rw------- 1 enmo enmo 82994 Nov 1 09:44 CHANGELOG.md

-rw------- 1 enmo enmo 3451 May 12 2023 HOW-TO-RUN.md

-rw------- 1 enmo enmo 3714 Dec 6 14:16 license.json

-rwx------ 1 enmo enmo 83785920 Nov 1 09:43 mtkd

安装MVD

因为要在MTKD中调用MVD进行对比,所以也需要提前安装好MVD。

下载MVD:

https://docs.mogdb.io/zh/mvd/v3.4/release-notes

解压后找到mvd_linux_x86_64文件

[enmo@master137 mvd_v3.6.5_Linux_centos_7_x86_64]$ ll
total 65104
-rw------- 1 enmo enmo 24788 Dec 1 14:54 changelog.md
-rw------- 1 enmo enmo 33 Dec 1 14:54 CHECKSUM
drwx------ 14 enmo enmo 4096 May 31 2023 clidriver
drwx------ 2 enmo enmo 4096 Dec 1 14:54 images
-rw------- 1 enmo enmo 6913 Dec 1 14:54 mvd_config_example.json
-rwx------ 1 enmo enmo 66582376 Dec 1 14:54 mvd_linux_x86_64
-rw------- 1 enmo enmo 29365 Dec 1 14:54 ReadMe.md

修改好文件权限,将mvd_linux_x86_64文件复制到mtkd的目录中

[enmo@master137 mtkd]$ cp …/mvd/mvd_v3.6.5_Linux_centos_7_x86_64/mvd_linux_x86_64 mvd_linux_x86_64
[enmo@master137 mtkd]$ ll
total 92388
drwx------ 3 enmo enmo 4096 Dec 6 15:02 mtkd_2.9.5_linux_amd64
-rw------- 1 enmo enmo 28012941 Dec 6 14:14 mtkd_2.9.5_linux_amd64.tar.gz
-rwx------ 1 enmo enmo 66582376 Dec 6 15:04 mvd_linux_x86_64

这样就可以了。

启动mtkd

./mtkd

[enmo@master137 mtkd_2.9.5_linux_amd64]$ ./mtkd
Using license file: /home/enmo/mtkd/mtkd_2.9.5_linux_amd64/license.json
Name : ShangHai Futures Exchange
Expiry: 2026-12-31 00:00:00 +0000 UTC
Version: 2.7.2
MMMMMMMM MMMMMMMMTTTTTTTTTTTTTTTTTTTTTTTKKKKKKKKK KKKKKKKDDDDDDDDDDDDD
M:::::::M M:::::::MT:::::::::::::::::::::TK:::::::K K:::::KD::::::::::::DDD
M::::::::M M::::::::MT:::::::::::::::::::::TK:::::::K K:::::KD:::::::::::::::DD
M:::::::::M M:::::::::MT:::::TT:::::::TT:::::TK:::::::K K::::::KDDD:::::DDDDD::::😄
M::::::::::M M::::::::::MTTTTTT T:::::T TTTTTTKK::::::K K:::::KKK D::::😄 D::::😄
M:::::::::::M M:::::::::::M T:::::T K:::::K K:::::K D::::😄 D::::😄
M:::::::M::::M M::::M:::::::M T:::::T K::::::K:::::K D::::😄 D::::😄
M::::::M M::::M M::::M M::::::M T:::::T K:::::::::::K D::::😄 D::::😄
M::::::M M::::M::::M M::::::M T:::::T K:::::::::::K D::::😄 D::::😄
M::::::M M:::::::M M::::::M T:::::T K::::::K:::::K D::::😄 D::::😄
M::::::M M:::::M M::::::M T:::::T K:::::K K:::::K D::::😄 D::::😄
M::::::M MMMMM M::::::M T:::::T KK::::::K K:::::KKK D::::😄 D::::😄
M::::::M M::::::M TT:::::::TT K:::::::K K::::::KDDD:::::DDDDD::::😄
M::::::M M::::::M T:::::::::T K:::::::K K:::::KD:::::::::::::::DD
M::::::M M::::::M T:::::::::T K:::::::K K:::::KD::::::::::::DDD
MMMMMMMM MMMMMMMM TTTTTTTTTTT KKKKKKKKK KKKKKKKDDDDDDDDDDDDD

Release version: v2.9.5
Git Commit hash: 710fa655
Git Commit Date: 2023-11-01T01:43:44Z
Git Tag : v2.9.5
Build timestamp: 20231101014614

此时mtkd就已经启动了。

使用mtkd图形界面进行迁移

可以在前台用浏览器打开图形化界面:我的虚拟机主机ip是 192.168.182.137,所以打开以下地址。http://192.168.182.137:8080/

这里有一个我已经测试的项目,第一次打开是没有的。

使用MTKD从oracle迁移到mogdb并调用MVD进行对比-1

点击创建项目

使用MTKD从oracle迁移到mogdb并调用MVD进行对比-2

填写源库和目标库配置,其实相当于mtk配置json文件中的source 和target项目。也可以直接编辑json

下方有迁移配置,可填写要迁移的表或schema

填写好之后,还会进入一次json格式配置文件页面,可以手动编辑,调整其他参数,直接在左边的页面上编辑json文件。

parameter中需要注意的参数:

remapschema,可以配置重命名schema

remaptabl,可以控制重命名表

可按如下配置

“remapSchema”: {“CK”:“MOMO”},
“remapTable”: {“T1”:“TT1”,“TEST”:“TTEST”},

如果每次迁移需要truncate已经存在的表,需要设置truncTable,默认值是false

“truncTable”: true,

还有:dropSchema,dropExistingObject,skipExistPLSQL等参数,默认值都是false,如果真需要在迁移前删除目标库的同名对象,可以进行配置。

可以点击参数在右边查看参数的含义。

编辑完之后,需要先点击保存配置。

然后就可以启动迁移,选择一次性全部迁移,可以给迁移记录命名。点确定就开始迁移了。

使用MTKD从oracle迁移到mogdb并调用MVD进行对比-3

然后会跳转到运行日志界面,展示迁移的日志

迁移完成后,可以检查概览和报告

使用MTKD从oracle迁移到mogdb并调用MVD进行对比-4

报告中会详细列出迁移的对象类型,数量,成功数量等,也会自动执行数据对比,这里只是数据量对比。

使用MTKD从oracle迁移到mogdb并调用MVD进行对比-5

调用mvd进行数据对比

注意迁移报告中的对比的只是比较行数,并不会比较具体数据。要进行更严格的对比,需要配置mvd对比。

回到配置页面,点击启动迁移,但是选择数据对比。

对比完成后,可以看到使用了mvd对比,以及对比结果。

如果结果不一致,也可以下载查看不一致的地方。

关于remap table

目前的官方文档中写明了,已经废弃了该功能,但实际测试是可用的。只是页面上不支持,但点开查看sql,可以看到在目标库是用新表名创建的。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论