全部产品
数据传输服务DTS

从本地SQL Server迁移到RDS for SQL Server

更新时间:2017-06-07 13:26:11   分享:   

使用数据传输DTS可以将本地SQLServer实例的数据迁移到RDS For SQLServer实例。SQLServer迁移支持增量数据同步功能,可以实现在本地应用不停服的情况下,平滑完成SQLServer数据库的迁移工作。

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

迁移类型

对于SQL Server->RDS for SQL Server数据迁移,DTS支持结构迁移、全量数据迁移及增量数据迁移,这个迁移类型的功能及限制如下:

  • 结构迁移

    DTS将迁移对象的结构定义迁移到目标实例。目前DTS支持结构迁移的对象有:表、视图、表触发器、同义词、SQL存储过程、SQL函数、plan guid、自定义类型、rule、default。

  • 全量数据迁移

    全量迁移将SQLServer实例的存量数据全部迁移到目标RDS实例。如果用户只进行全量数据迁移,那么迁移过程中本地SQLServer实例新增的业务写入不会被同步到目标RDS实例。

    如果用户还选择了增量数据迁移,那么迁移过程中,本地SQLServer实例的增量写入数据会被同步到目标RDS实例。

迁移限制

  • 迁移过程中,不支持DDL操作
  • 结构迁移不支持assemblies、库级存储过程、service broker、全文索引、全文目录、分布式schema、分布式函数、CLR标量函数、CLR标值函数、内部表、聚合函数、系统 的迁移
  • 如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败
  • 增量迁移,只支持含有聚簇索引,且聚簇索引为唯一键的表
  • 增量迁移,不支持 只更新大字段的update语句的同步
  • 增量迁移,不支持含有计算列的表
  • 一个增量迁移任务,只支持一个数据库的迁移。 如果同时有多个数据库需要进行增量数据迁移,那么需要创建多个迁移任务

迁移权限要求

当使用DTS进行SQLServer迁移时,不同迁移类型,对本地SQLServer数据库及目标RDS For SQLServer实例的迁移帐号权限要求如下:

迁移类型 结构迁移 全量迁移
本地SQLServer实例 select select
目的RDS实例 读写权限 读写权限

迁移流程

数据传输服务在进行SQLServer上云迁移时,为了解决对象间的依赖,提高迁移成功率。

结构对象及数据的迁移顺序如下:

  1. 进行结构对象 表、视图、同义词、自定义类型、rule、default、plan guid的迁移。
  2. 全量数据迁移。
  3. 进行结构对象 SQL存储过程、SQL函数、触发器、外键的迁移。
  4. 增量数据迁移。

如果任务没有选择增量数据迁移,那么当全量数据迁移完成后,任务列表中的迁移进度为:结构迁移100%,全量迁移100%,迁移状态为“迁移中”。此时迁移任务正在进行步骤(3)中的对象的迁移。此时,请勿手动结束任务,否则会造成迁移数据丢失。

迁移任务配置

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

RDS实例数据库创建

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

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

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

迁移帐号创建

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

如果本地SQLServer实例迁移账号尚未创建,那么您可以参考SQLServer User创建,创建满足权限要求的迁移账号。

如果目标RDS实例迁移账号创建,那么您可以参考 RDS账号创建流程,创建对待迁移数据库有读写权限的迁移账号。

其他准备工作

如果您需要进行不停机迁移,那么还需要设置本地SQLServer日志格式为full。

如果本地SQLServer数据库的日志格式不为full,那么需要通过下面两个步骤设置:

  1. 在源数据库执行: alter database database_name set recovery_model_desc=’full’, 其中database_name为需要迁移的数据库名。
  2. 为了保证开启完整日志生效,需要在源数据库进行一次日志备份,在源数据库执行:BACKUP LOG database_name to DISK=backup_place WITH init , 其中 database_name 为待迁移的数据库名,backup_place为备份文件存储的地址。

迁移任务配置

当数据库、迁移账号都创建完成后,就可以开始配置迁移任务了。下面详细介绍下具体的配置步骤。

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

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

    • 任务名称

      默认情况下,DTS为每个任务自动生成一个任务名称。任务名称没有唯一性要求,您可以修改这个名称,为任务配置一个具有业务意义的名称,便于后续的任务识别。

    • 源实例连接信息

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

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

    • 迁移类型

      DTS支持 结构迁移、全量数据迁移、增量数据迁移。

      如果需要进行不停机迁移,那么需要选择:结构迁移+全量数据迁移+增量数据迁移。

      如果只进行全量迁移,那么需要选择:结构迁移+全量数据迁移。

    • 迁移对象

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

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

  4. 预检查。

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

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

    预检查失败

  5. 启动迁移任务。

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

    增量数据迁移是个动态同步的过程,所以建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证,如果验证成功,那么可以停掉迁移任务,然后将业务切换到目标数据库。

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

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