写点什么

使用 DMT 工具迁移北京区域的数据库

  • 2019-11-20
  • 本文字数:5365 字

    阅读完需:约 18 分钟

使用DMT工具迁移北京区域的数据库

在前面的 blog《将 Oracle 数据库迁移到 AWS 云的方案》中谈到了多种将 Oracle 数据库从数据中心迁移到 AWS 云中的方法。其中 使用 DMS 服务迁移的方法简单实用,也支持异构数据库的迁移,很多朋友都想使用这种方法完成迁移。但是在北京区域不支持 DMS 服务,如何实现类似的迁移工作呢?其实在北京区域支持使用 Database Migration Tool(DMT)来迁移数据库,DMT 工具是 DMS 服务的前身,它是安装在 Windows 上的一个软件,迁移前只需要获取 DMT 工具的 AMI,然后简单的配置后,就可以进行数据迁移了。本文主要讨论如何使用 DMT 将 Oracle 迁移到 Amazon RDS 数据库,示例的场景如下图所示:



在建立客户本地数据中心与 AWS 连接的时候,考虑到安全性问题,我们建议您通过 VPN 或者企业专线来建立数据库之间的连接,您只需确保您本地数据库端口(例如 Oracle 端口 1521)对外可访问。如果您的业务对安全性要求较高,需要传输的数据量较大,同时,要求以较快速度传输的时候,可以采用专线迁移,但是这种方法成本较高,您需要根据您的业务需求来选择是通过 VPN 还是企业专线迁移。


在介绍 DMT 数据库迁移之前,我们首先介绍一下 DMT 迁移工具支持的数据库类型以及对源和目标数据库的限制:DMT 目前支持将 Oracle、SQL Server、MySQL、SAP Sybase 以及 PostgreSQL 作为源或目标数据库,您也可以将 Amazon Redshift 作为您的目标数据库。同时,DMT 也支持异构数据库的迁移,例如将 Oracle 迁移到 MySQL。


DMT 工具为我们迁移数据库提供了巨大的便利,然而,它也有一些限制条件,下表主要介绍 DMT 支持的三种常用关系型数据库版本以及相关限制条件。如果您需要了解更多有关 DMT 迁移数据库信息,请参考 DMT 用户手册:


https://s3.cn-north-1.amazonaws.com.cn/rdmt/RDS+Migration+Tool+User+Guide.pdf



使用 DMT 迁移主要有下面几个步骤:


(1)获取 DMT 的 AMI


(2)启动 DMT 的 AMI


(3)登陆 DMT 服务器


(4)配置服务器


(5)访问 DMT 工具


(6)迁移数据

1.获取 DMT 的 AMI

如果您有数据库数据需要导出或者导入到 AWS 北京区域中,首先您需要获取 DMT 的 AMI 镜像,然后根据镜像启动 EC2 服务器。获取 DMT 的镜像有两种方式:


(1)和支持您当前 AWS 账号的商务人员联系,他能帮您在后台申请访问 DMT AMI 的权限。


(2)您也可以自己在 Support Center 中开 case。在 AWS Console 中访问 Support Center 的方式如下图所示:


2.启动 DMT 的 AMI

当您有能访问 DMT 的 AMI 以后,登陆您的 AWS 账号,进入 Services->EC2->AMI 的界面,选择“Private images”列表,就可以看到有一个 Amazon_RDS_Migration_Tool 的记录,这就是最新的迁移工具,如下图所示:



选择 DMT 点击上方的“Lunch”按钮,启动一个已经安装好 DMT 工具的服务器。接下来您需要配置您实例的类型、大小、实例所在 VPC 以及安全组和密钥等信息。具体配置步骤请参考官方文档:http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/EC2_GetStarted.html


需要注意的是:


(1)在选择 DMT 服务器所在 VPC 的时候,尽量选择源或者目标数据库所在的 VPC 创建 DMT 服务器,这样可以加快迁移的速度。


(2)在配置安全组的时候,您的安全组应该允许 RDP 协议和 https 协议。由于 DMT 服务器是 Windows Server 服务器,因此您需要使用 Windows 远程桌面连接访问,此时需要 RDP 协议,source 指定当前需要连接客户端的 IP 或者 IP 段。DMT 工具可以通过浏览器来访问,因此需要设置 https 协议的安全组,如下图所示:


3.登陆 DMT 服务器

启动 DMT 服务器,并下载私钥后,就可以登陆 DMT 服务器了,如下图所示,当您的服务器状态显示为 running,并且通过健康检查后,您的服务器就可以正常访问了。如下图所示:



选择您的 DMT 服务器,然后点击 Connect,显示如下界面:



在此步骤中,您需要根据下载的私钥获取登陆 Windows 的密码。点击 get Password,显示如下图所示界面:



输入您前面下载的私钥的文件全部内容,点击 Decrypt Password 后,您在界面上可以看到 Administrator 的密码,请记录下这个密码。下面就可以登陆服务器了。


本例中是使用 MAC 的 Windows 远程终端软件来访问 DMT 服务器,如果您使用 Windows 客户端,访问过程类似,输入远程 DMT 服务器的 DNS 名称,输入用户名和密码并连接。



连接上 DMT 终端后,您会看到 Windows Server 2012 的桌面如下图所示,桌面上有 DMT 工具。



连接到远程终端后,您可以根据需要修改访问 Windows 的密码,修改密码可以在控制面板中完成,界面如下:


4. 配置服务器

登陆到 DMT 服务器后,在界面上有 Database Migration Tool Documentation 的目录,进入目录并下载 QuickStart Guide.下载过程中如果出现如下错误,请添加授信站点或者配置服务器解决错误。



下载 Quick Start Guide 和 PDF 阅读软件。



打开 QuickStart Guide 如下图所示,您可以按照您数据库的类型(Oracle, MySQL 等)选择相应的驱动程序。



本例中由于迁移的是 Oracle 数据库,安装 Oracle 的驱动和客户端相对复杂,下面会详细解释如何安装 Oracle 驱动,其他驱动的安装请参考文档。点击 Quick Start Guide 中的 Oracle Instant Client 后面的链接后,出现如下界面(需要您有 Oracle 账号才能下载软件):



下载 Instant Client Package-Basic: All files required to run OCI….的文件,也就是上图第一个黄色方框中的文件。


下载 Instant Client Package-ODBC 驱动,如上图第二个黄色方框。由于 DMT 安装在 Windows Server 上,因此有很多安全的限制,如果遇到禁止下载的错误,可以参照下图:



选择 Internet,然后点击 Customer level。



选择 Downloads,然后 Enable 下载,就可以正常下载 Oracle 的软件了。



下载完成后,basic 和 odbc 的包如上图所示。


创建 c:\oracle 目录,将目录作为解压的目录,选中 basic-windows 的文件,然后解压到 oracle 目录,如下图示:



选中 odbc 的压缩包,然后解压到 c:\oracle



解压后的文件目录结构大致如下:



选中 odbc_install.exe 并运行,如下图:



选择 run,默认没有反应是正常状态 。


将变量 C:\oracle\instantclient_12_1 添加到 Path 变量中,如下图所示:



增加 TNS_ADMIN 变量如下图所示:



在本例中,增加的变量 TNS_ADMIN 和变量 Path 的值相同。

5.访问 DMT 工具

先使用界面上的工具 Stop Amazon RDS Migration Service 停止 DMT 服务。这样避免刚才设置的环境变量没有应用 DMT 工具中。


在点击在桌面点击下面图标启动 DMT 服务。



启动后,如果见到下面的窗口:



表示启动成功。


选择图标



就可以启动 DMT 的 Web 访问客户端,如下图所示:



见到 Console 的界面,表示 DMT 服务启动成功。DMT 的 console 可以在服务器上访问,也可以在客户端访问,在外网访问只需要获取到 DMT 服务器的 Public DNS,使用下面格式 URL 从外网访问 DMT console。


https://your-public-dns/AmazonRDSMigrationConsole


访问 console 后,会弹出如下界面,输入访问 windows 的用户名和密码。



输入登陆系统的用户名和密码并登陆,显示如下界面:



在界面中使用 Manage Database 创建 Source 和 Target 数据库,创建 Task 就可以开始迁移您的数据库了。

6.使用 DMT 迁移数据

当您通过前面的步骤能够正确地访问 DMT 工具,说明配置基本成功,下面就可以通过 DMT 迁移您的数据库了。


Step1: 配置源数据库连接信息


点击上图中的 Manage Databases->Add Database,输入数据库类型为 Oracle,填好具体 URL 及数据库的 Role 信息,示例信息如下:



参数说明:


Name:给需要迁移的数据库定义一个名称,可以根据需要定义。


Description:给需要迁移的数据库一个详细的描述。


Role:需要迁移数据库的角色,如果是迁移中的源数据库,则选择 SOURCE,如果是迁移中的目标数据库,则选择 TARGET.


Connection String:对于传统 Oracle 数据库的格式为 ip:port/sid


User name:数据库连接的用户名


Password:数据库连接的密码


Step2: 配置目标 RDS 数据库连接信息


配置目标 RDS 数据库信息如下:



RDS 的 Connection String 的格式为:


.:/


Step 3:检查 Source 和 Target 数据库的归档模式和 Supplemental Log


由于 DMT 工具可以捕捉数据库日志,将源数据库的变化复制到目标数据库,这种复制方式要求源和目标数据库都是归档的数据库,并且需要 Supplemental Log 的设置。


使用 SQL PLUS 连接源数据库,如果数据库处于非归档模式,则将数据库改为归档模式。


运行下面语句,修改 Supplemental Log 设置:


SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;


Database altered.


使用 Oracle SQL Developer 或者其他客户端工具连接 RDS 目标数据库,运行下面的语句:


exec rdsadmin.rdsadmin_util.alter_supplemental_logging(‘ADD’);


Step 4:创建 Task


在主界面上点击“New Task”,如下图所示:



Task options: 定义复制的类型,Full Load 表示将当前的表和数据拷贝到目标数据库。Apply Changes 表示将当前时刻到停止复制前的日志变化同步到目标数据库。如果两个都选择,表示同步数据,并将捕捉到的数据库变化复制到目标数据库。


Step 5:定义 Task


将 Source 和 Target 数据库的图标,拖入到左边的流程图中,如下图所示,我们定义了将 OracleSourceDB 复制到 RDSDatabase 中。



定义好流程后,点击 Table Selection 选择需要复制哪些表。如下图所示:



在此图中,我们复制的是 TEST.T_USERS 表。您也可以使用 Patterns 的方式匹配表名。




点击 Task 中的 Run 按钮,很快数据库就开始迁移了。

7. 错误诊断

(1)如果在测试数据库时出现 oci.dll 无法加载的错误,如下图所示:



这个错误一般说明你没有将 instance client 的路径配置到 path 变量中去。此时只需要配置好变量,然后停止并启动 DMT 服务就可以了。


(2)ORA-12170: TNS: Connect timeout occurred [122307] OCI error.



如果出现此错误,说明 DMT 工具连接数据库超时,此时请检查 RDS 数据库的 Security Group 是否开启了 DMT 服务器的 1521 端口的访问,或者检查数据库的防火墙等网络设置,确保 DMT 服务器能够正常访问 Oracle 服务器。


作者介绍:



蓝勇


AWS 解决方案架构师,负责基于 AWS 的云计算方案架构的咨询和设计,同时致力于 AWS 云服务在国内的应用和推广,在 DR 解决方案、数据仓库、RDS 服务、企业应用、自动化运维等方面有着广泛的设计和实践经验。在加入 AWS 之前,在甲骨文中国担任资深售前工程师,负责售前方案咨询和架构设计,在数据库,中间件,大数据及企业应用方面有丰富经验。



杨婉洁


亚马逊 AWS 解决方案架构师实习生,喜欢编程,熟悉 Java、C++、JSP、HTML 以及关系型数据库。曾在学校和企业参与数据分析项目,熟悉各类数据分析的算法。热爱大数据、云计算。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/dmt/


2019-11-20 08:00645

评论

发布
暂无评论
发现更多内容

12种 vo2dto 方法,就 BeanUtils.copyProperties 压测最拉胯!【快双11了,别用错喽】

小傅哥

Java 小傅哥 MapStruct vo2dto JMapper

「 活动 」连续 3 天,企业容器应用实战营上海站来啦!

阿里巴巴云原生

阿里云 Kubernetes 容器 云原生 活动

仅需三天,受人追捧的华为内部Java优化笔记登顶Github热搜!

Java 架构 面试 程序人生 编程语言

GitHub标星过万!阿里内部流传的JDK源码剖析手册到底有多强?

程序员 jdk 面试 java

想提高运维效率,那就把MySQL数据库部署到Kubernetes 集群中

华为云开发者联盟

MySQL 运维 测试 MySQL数据库 Kubernetes 集群

百分点大数据技术团队:低代码平台实践

百分点科技技术团队

DCI架构是如何解决DDD战术建模缺点的?

华为云开发者联盟

领域驱动设计 对象 建模 对象编程 DCI架构

设计模式如何提升 vivo 营销自动化业务扩展性 | 引擎篇01

vivo互联网技术

自动化 后端 设计模式 软件架构设计 java

SSH是什么?怎么组成?有哪些优势?

行云管家

SSH 服务器 SSH工具 服务器管理协议

再见收费的Navicat!操作所有数据库靠它就够了!

Java 数据库 架构 开源项目

梦幻西游H5游戏超详细图文架设教程

echeverra

H5游戏

教你用Java7的Fork/Join框架开发高并发程序

华为云开发者联盟

Java 算法 线程 高并发 Fork/Join框架

浙江金华市正规等保测评机构有几家?在哪里?联系电话是多少?

行云管家

网络安全 等保 等保测评

机器翻译是否能替代人工翻译?从前世今生说起

博文视点Broadview

“828页Java面试手册”在我手,何愁offer不到手!

Java 程序员 架构 面试 后端

2021年9月国产数据库大事记

墨天轮

数据库 华为云 国产数据库 达梦 人大金仓

每一个用到canvas的小伙伴都应该了解的fabric.js

荣顶

JavaScript 大前端 canvas 图形处理 画布

低代码BPM平台

低代码小观

低代码 企业 企业管理 BPM 低代码平台

授人以渔,华为“开源雨林”计划致力推动开源生态发展

为绿色而生:智慧矿山可视化数治监管

一只数据鲸鱼

数据可视化 智慧矿山 煤矿 矿山

成本直降50% | 阿里云发布云原生网关,开启下一代网关新进程

阿里巴巴中间件

阿里云 微服务 云原生 中间件 网关

双减来了!人工智能如何促进教育领域转型?

京东科技开发者

人工智能 大数据 AI 教育行业

第 14 章 -《Linux 一学就会》- RAID磁盘阵列的原理与搭建

学神来啦

Linux linux运维 linux云计算

云计算改变企业的传统思考方式

低代码小观

云计算 创新 企业 企业管理 传统观念

Vue进阶(幺叁幺):父子组件传值实现数据深拷贝

No Silver Bullet

Vue 深拷贝 10月月更

设计电商秒杀系统

木云先森

架构训练营

直播回顾|蒋烁淼:《下一代企业级应用软件论坛》可观测性主题精彩分享

观测云

可观测性

专场预告 | DTCC数据库技术大会云溪数据库专场

云计算

一加9 Pro怎么样?值得入手的全能旗舰

Geek_8a195c

【优化技术专题】「线程间的高性能消息框架」终极关注Disruptor的核心源码和Java8的@Contended伪共享指南

洛神灬殇

Disruptor 异步执行 高性能框架 10月月更

校友录小程序开发笔记三十二:校友卡模块设计与实现

CC同学

使用DMT工具迁移北京区域的数据库_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章