ALIYUN::DTS::MigrationJob类型用于购买一个数据库迁移实例,同时可以配置数据迁移任务。

语法

{
  "Type": "ALIYUN::DTS::MigrationJob",
  "Properties": {
    "MigrationJobClass": String,
    "SourceEndpoint": Map,
    "MigrationJobName": String,
    "MigrationMode": Map,
    "DestinationEndpoint": Map,
    "MigrationObject": List
  }
}

属性

属性名称 类型 必须 允许更新 描述 约束
MigrationJobClass String 迁移实例规格 取值:
  • small
  • medium
  • large

各个规格的测试性能请参见数据迁移链路规格说明

SourceEndpoint Map 源实例
MigrationJobName String 迁移任务名称
MigrationMode Map 迁移任务模式
DestinationEndpoint Map 目标实例
MigrationObject List 需要迁移的对象

SourceEndpoint语法

"SourceEndpoint": {
  "UserName": String,
  "OracleSID": String,
  "InstanceID": String,
  "IP": String,
  "Region": String,
  "InstanceType": String,
  "Role": String,
  "DatabaseName": String,
  "OwnerID": String,
  "EngineName": String,
  "Password": String,
  "Port": String
}

SourceEndpoint属性

属性名称 类型 必须 允许更新 描述 约束
UserName String 源实例的访问账号
OracleSID String 当源实例数据库类型为Oracle时,该参数为Oracle SID。
InstanceID String 目标实例ID 根据InstanceType指定相应的实例ID
IP String 目标实例连接地址 当目标实例为本地自建数据库时,该参数必须指定。
Region String 目标实例所在地域
InstanceType String 迁移源实例的实例类型 取值:
  • RDS:阿里云RDS实例
  • ECS:ECS上的自建数据库
  • LocalInstance:有公网IP的自建数据库
  • Express:通过专线接入的自建数据库
  • MongoDB:阿里云MongoDB实例
  • POLARDB:阿里云POLARDB MySQL 集群
Role String 当源实例为RDS实例且与目标实例所属的阿里云账号不同时,该参数为源实例所属云账号中已授权的角色名称。 执行跨阿里云账号的数据迁移时须指定该参数,该角色所需的权限及授权方式请参见跨阿里云账号数据迁移或同步时如何配置RAM授权
DatabaseName String 数据库名称 当源实例数据库类型为PostgreSQL或MongoDB时,该参数为创建连接时使用的数据库名称。
OwnerID String 当源实例为RDS实例且与目标实例所属阿里云账号不同时,该参数为源实例所属阿里云账号的UID。
EngineName String 源实例的数据库类型 取值:
  • MySQL
  • SQLServer
  • PostgreSQL
  • Oracle
  • MongoDB
  • Redis
当InstanceType不为RDS时,该参数必须指定。
Password String 源实例的访问密码
Port String 源实例的监听端口 当源实例为自建数据库时,该参数必须指定。

MigrationMode语法

"MigrationMode": {
  "DataIntialization": Boolean,
  "StructureIntialization": Boolean,
  "DataSynchronization": Boolean
}

MigrationMode属性

属性名称 类型 必须 允许更新 描述 约束
DataIntialization Boolean 迁移任务是否进行全量数据迁移 取值:
  • true
  • false
StructureIntialization Boolean 迁移任务是否进行结构迁移 取值:
  • true
  • false
DataSynchronization Boolean 迁移任务是否进行增量数据同步 取值:
  • true
  • false

DestinationEndpoint语法

"DestinationEndpoint": {
  "UserName": String,
  "InstanceID": String,
  "IP": String,
  "Region": String,
  "Port": String,
  "Role": String,
  "DatabaseName": String,
  "EngineName": String,
  "Password": String,
  "InstanceType": String
}

DestinationEndpoint属性

属性名称 类型 必须 允许更新 描述 约束
UserName String 目标实例的访问账号
InstanceID String 目标实例ID
IP String 目标实例连接地址 当目标实例为本地自建数据库时,该参数必须指定。
Region String 目标实例所在区域 如果是自建数据库,可以选择离自建IDC物理距离最近的地域。
Port String 目标实例监听端口 当目标实例为自建数据库时,该参数必须指定。
DatabaseName String 目标实例的连接数据库名 目标实例的数据库类型为PostgreSQL、PPAS或MongoDB时,该参数必须指定。
EngineName String 目标库的数据库类型 当InstanceType为RDS、ECS、LocalInstance或Express时,该参数才可用且必须指定。
Password String 目标实例的访问密码 取值:
  • MySQL
  • SQLServer
  • PostgreSQL
  • PPAS
  • MongoDB或Redis
InstanceType String 目标实例的实例类型 该参数与SourceEndpoint.InstanceType相同
Role String 当源实例为RDS实例且与目标实例所属的阿里云账号不同时,该参数为源实例所属云账号中已授权的角色名称。

MigrationObject语法

"MigrationObject": [
  {
    "TableExcludes": List,
    "NewSchemaName": String,
    "NewDBName": String,
    "TableIncludes": List,
    "SchemaName": String,
    "DBName": String
  }
]

MigrationObject属性

属性名称 类型 必须 允许更新 描述 约束
TableExcludes List 待迁移库中不需要迁移的表 示例值:[{"TableName": "a"}, {"TableName": "b"}, ...]
NewSchemaName String 待迁移Schema在目标实例中映射的Schema名称 适用于SQLServer
NewDBName String 待迁移数据库在目标实例中映射的库名称 不适用于SQLServer
TableIncludes List 待迁移库中需要迁移的表
SchemaName String 待迁移Schema名称 适用于SQLServer
DBName String 待迁移库名称 不适用于SQLServer。
  • 只配置DBName,没有配置其他对象的规则时,表示迁移这个数据库下面的所有对象。
  • 同时配置DBName和部分对象的规则时,不配置的对象默认不迁移。

TableIncludes语法

"TableIncludes": [
  {
    "ColumnExcludes": List,
    "FilterCondition": String,
    "NewTableName": String,
    "TableName": String,
    "ColumnIncludes": List
  }
]

TableIncludes属性

属性名称 类型 必须 允许更新 描述 约束
ColumnExcludes List 待迁移库中不需要迁移的列 示例值:[{"ColumnName": "a"}, {"ColumnName": "b"}, ...]shou'xia
FilterCondition String 过滤条件
NewTableName String 待迁移表在目标实例映射的表名称
TableName String 待迁移表表名称
ColumnIncludes List 待迁移表中需迁移的列

ColumnIncludes语法

"ColumnIncludes": [
  {
    "ColumnName": String,
    "NewColumnName": String
  }
]

ColumnIncludes属性

属性名称 类型 必须 允许更新 描述 约束
ColumnName String 待迁移表中需迁移列名称
NewColumnName String 待迁移列在目标实例中映射的列名称

返回值

Fn::GetAtt

MigrationJobId:迁移任务ID。

示例

JSON格式

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Resources": {
    "MigrationJob": {
      "Type": "ALIYUN::DTS::MigrationJob",
      "Properties": {
        "MigrationJobClass": {
          "Ref": "MigrationJobClass"
        },
        "SourceEndpoint": {
          "Ref": "SourceEndpoint"
        },
        "MigrationJobName": {
          "Ref": "MigrationJobName"
        },
        "MigrationMode": {
          "Ref": "MigrationMode"
        },
        "DestinationEndpoint": {
          "Ref": "DestinationEndpoint"
        },
        "MigrationObject": {
          "Ref": "MigrationObject"
        }
      }
    }
  },
  "Parameters": {
    "MigrationJobClass": {
      "Type": "String",
      "Description": "Migrating instance specifications, which can be:small, medium, large. Various specifications of the reference data migration test performance specifications",
      "AllowedValues": [
        "small",
        "medium",
        "large"
      ]
    },
    "SourceEndpoint": {
      "Type": "Json",
      "Description": "Migration source configuration"
    },
    "MigrationJobName": {
      "Type": "String",
      "Description": "Migrating job name"
    },
    "MigrationMode": {
      "Type": "Json",
      "Description": "Migration mode"
    },
    "DestinationEndpoint": {
      "Type": "Json",
      "Description": "Migration target configuration"
    },
    "MigrationObject": {
      "Type": "Json",
      "Description": "Objects that need to be migrated"
    }
  },
  "Outputs": {
    "MigrationJobId": {
      "Description": "Migration tasks task ID",
      "Value": {
        "Fn::GetAtt": [
          "MigrationJob",
          "MigrationJobId"
        ]
      }
    }
  }
}

YAML格式

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  MigrationJob:
    Type: ALIYUN::DTS::MigrationJob
    Properties:
      MigrationJobClass:
        Ref: MigrationJobClass
      SourceEndpoint:
        Ref: SourceEndpoint
      MigrationJobName:
        Ref: MigrationJobName
      MigrationMode:
        Ref: MigrationMode
      DestinationEndpoint:
        Ref: DestinationEndpoint
      MigrationObject:
        Ref: MigrationObject
Parameters:
  MigrationJobClass:
    Type: String
    Description: Migrating instance specifications, which can be:small, medium, large.
      Various specifications of the reference data migration test performance specifications
    AllowedValues:
    - small
    - medium
    - large
  SourceEndpoint:
    Type: Json
    Description: Migration source configuration
  MigrationJobName:
    Type: String
    Description: Migrating job name
  MigrationMode:
    Type: Json
    Description: Migration mode
  DestinationEndpoint:
    Type: Json
    Description: Migration target configuration
  MigrationObject:
    Type: Json
    Description: Objects that need to be migrated
Outputs:
  MigrationJobId:
    Description: Migration tasks task ID
    Value:
      Fn::GetAtt:
      - MigrationJob
      - MigrationJobId