全部产品
数据传输服务DTS

从本地Oracle迁移到RDS for MySQL

更新时间:2017-08-21 09:30:25   分享:   

使用数据传输DTS可以将本地的Oracle的数据迁移至RDS MySQL实例。DTS可以实现结构定义、全量数据的迁移以及增量数据迁移。通过增量数据迁移,可以在不影响源Oracle的情况下,实现Oracle数据库的不停服迁移。

本小节简单介绍使用DTS进行Oracle->RDS For MySQL数据迁移的任务配置流程。

迁移步骤

对于Oracle->RDS For MySQL的迁移,支持结构定义、全量数据的迁移以及增量数据迁移。各迁移类型的限制如下:

  • 结构迁移
    DTS会将迁移对象的结构定义迁移到目标实例。目前DTS支持结构迁移的对象有:表。其他对象如视图、同义词、触发器、存储过程、存储函数、包、自定义类型等暂不支持。

  • 全量数据迁移
    DTS会将源数据库迁移对象在的数据全部迁移到目标实例。如果迁移过程中,本地Oracle库有数据写入的话,那么这些增量数据不一定能够被迁移到MySQL中。所以,为保证迁移数据一致性,在迁移过程中,Oracle实例需停止写入。

  • 增量数据迁移

    增量迁移过程中,DTS会监听并获取源Oracle实例的变更redo log,然后将增量变更数据实时同步到目标RDS实例,通过增量数据迁移可以实现目标RDS实例同源Oracle实例的实时数据同步。

迁移权限要求

当使用DTS进行Oracle迁移时,在不同迁移类型情况下,源跟目标数据库的迁移帐号权限要求如下:

迁移类型 结构迁移 全量迁移 增量数据迁移
本地Oracle实例 schema的owner schema的owner SYSDBA
目的RDS MySQL实例 待迁入db的读写权限 待迁入db的读写权限 待迁入db的读写权限

迁移前置条件

  • Oracle版本为10g,11g,12c。
  • Oracle 开启supplement log,且要求 supplemental_log_data_pk,supplemental_log_data_ui 开启。
  • Oracle要求开启archive log。

数据类型映射关系

由于Oracle跟MySQL的数据类型并不是一一对应的,所以DTS在进行结构迁移时,会根据两种数据库类型的数据类型定义,进行类型映射,下面是数据类型映射关系。

Oracle数据类型 MySQL数据类型 DTS是否支持
varchar2(n [char/byte]) varchar(n) 支持
nvarchar2[(n)] national varchar[(n)] 支持
char[(n [byte/char])] char[(n)] 支持
nchar[(n)]] national char[(n)] 支持
number[(p[,s])] decimal[(p[,s])] 支持
float(p)] double 支持
long longtext 支持
date datetime 支持
binary_float decimal(65,8) 支持
binary_double double 支持
timestamp[(fractional_seconds_precision)] datetime[(fractional_seconds_precision)] 支持
timestamp[(fractional_seconds_precision)]with local time zone datetime[(fractional_seconds_precision)] 支持
timestamp[(fractional_seconds_precision)]with local time zone datetime[(fractional_seconds_precision)] 支持
clob longtext 支持
nclob longtext 支持
blob longblob 支持
raw varbinary(2000) 支持
long raw longblob 支持
bfile 不支持
interval year(year_precision) to mongth 不支持
interval day(day_precision) to second[(fractional_seconds_precision)] 不支持
  • 对于char类型,当char(n)的定义长度n超过255时,DTS会自动将类型转换为varchar(n)。
  • 由于MySQL本身不支持类似Oracle中的bfile、interval year to month、interval day to second这种数据类型,所以DTS在进行结构迁移时,这三种类型不会进行转化。迁移时如果表中含有这三种类型,会导致结构迁移失败,用户根据业务需求,将这三种类型修改成MySQL中对应的数据类型即可。
  • 由于MySQL的timestamp类型不包含时区,而Oracle的timestamp with [local] time zone带时区,所以DTS在迁移这两种类型的数据时,会将其转换成UTC时区后,存入MySQL。

迁移步骤

下面详细介绍下使用DTS将本地的Oracle迁移到RDS for MySQL的任务配置流程。

创建RDS实例数据库

在数据迁移过程中,如果待迁移的数据库在目标RDS实例中不存在,那么DTS自动会创建。但是对于如下两种情况,用户需要在配置迁移任务之前,手动创建数据库。

  1. 数据库名称不符合:RDS定义规范(由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长64个字符)。
  2. 待迁移数据库,在Oracle跟目标RDS实例中名称不同。

对于这两种情况,用户需要在配置迁移任务之前,先在RDS控制台完成数据库创建。具体参考RDS数据库创建流程RDS使用手册

创建迁移帐号

迁移任务配置,需要提供Oracle数据库及目标RDS实例的迁移账号。迁移账号所需权限详见上文的迁移权限要求

如果您的Oracle实例的迁移账号尚未创建,那么您可以参考 Oracle Grant语法说明,创建满足要求的迁移账号。

RDS For MySQL 迁移账号的创建及授权操作详见RDS使用手册RDS使用手册

迁移任务配置

当上面的所有前置条件都配置完成后,就可以开始迁移任务配置。下面详细介绍下具体的迁移步骤。

  1. 进入数据传输DTS控制台,单击右上角的创建迁移任务,正式开始任务配置。
  2. 本地Oracle及目标RDS实例的连接信息配置。

    这个步骤主要配置迁移任务名称,Oracle连接信息及目标RDS实例连接信息。其中:

    • 任务名称

      DTS为每个任务自动生成一个任务名称,任务名称没有唯一性要求。您可以根据需要修改任务名称,建议为任务配置具有业务意义的名称,便于后续的任务识别。

    • 源实例信息

      • 实例类型:选择 有公网IP的自建数据库
      • 数据库类型: 选择 Oracle
      • 主机名或IP地址: 配置Oracle访问地址,这个地址必须为公网访问方式
      • 端口:Oracle实例的监听端口
      • SID:Oracle实例的SID
      • 账号:Oracle实例的连接账号
      • 密码:上面Oracle连接账号对应的密码
    • 目标实例信息

      • 实例类型:选择 RDS实例
      • RDS实例ID: 配置迁移的目标RDS实例的实例ID。 DTS支持经典网 络、VPC网络的RDS实例
      • 账号:RDS实例的连接账号
      • 密码:上面RDS实例连接账号对应的密码

      当配置完连接信息后,单击右下角 授权白名单并进入下一步 进行白名单授权。这个步骤DTS会将DTS服务器的IP地址添加到目标RDS实例的白名单中,避免因为RDS实例设置了白名单,导致DTS服务器连接不上RDS实例导致迁移失败。

  3. 迁移对象及迁移类型配置。

    迁移类型包括:结构迁移、全量数据迁移、增量数据迁移。默认选择 结构迁移+全量数据迁移

    迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。
    默认情况下,对象迁移到RDS实例后,对象名跟Oracle一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用DTS提供的对象名映射功能,详细使用方式可以参考库表列映射

    当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤。

  4. 任务预检查。

    在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。

    如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。

    预检查失败

  5. 启动迁移任务。

    当预检查通过后,我们可以启动迁移任务,任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。

    当任务进入增量数据迁移阶段,任务不会自动停止,且一旦源Oracle实例有增量写入,增量数据就会自动同步到目标RDS实例。增量数据迁移是个动态同步的过程,建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证。如果验证成功,那么可以停掉迁移任务,将业务切换到目标数据库。

    至此,完成将本地Oracle数据库到RDS For MySQL的数据迁移任务配置。

本文导读目录
本文导读目录
以上内容是否对您有帮助?