ALIYUN::DTS::MigrationJob类型用于购买一个数据库迁移实例,同时可以配置数据迁移任务。
语法
{
"Type": "ALIYUN::DTS::MigrationJob",
"Properties": {
"MigrationJobClass": String,
"SourceEndpoint": Map,
"MigrationJobName": String,
"MigrationMode": Map,
"DestinationEndpoint": Map,
"MigrationObject": List
}
}
属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
MigrationJobClass |
String |
是 |
否 |
迁移实例规格 |
取值:
各个规格的测试性能请参见数据迁移链路规格说明。 |
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 |
否 |
是 |
迁移任务是否进行全量数据迁移。 |
取值:
|
StructureIntialization |
Boolean |
否 |
是 |
迁移任务是否进行结构迁移。 |
取值:
|
DataSynchronization |
Boolean |
否 |
是 |
迁移任务是否进行增量数据同步。 |
取值:
|
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 |
否 |
否 |
待迁移列在目标实例中映射的列名称。 |
无 |
ColumnExcludes语法
"ColumnExcludes": [
{
"ColumnName": String
}
]
ColumnExcludes属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
ColumnName |
String |
否 |
否 |
待迁移表中不迁移列名。 |
无 |
TableExcludes语法
"TableExcludes": [
{
"TableName": String
}
]
TableExcludes属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
TableName |
String |
否 |
否 |
待迁移库名不需要迁移表的表名。 |
无 |
返回值
Fn::GetAtt
MigrationJobId:迁移任务ID。
示例
YAML
格式
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
RdsInstanceId:
Type: String
AssociationProperty: ALIYUN::RDS::Instance::InstanceId
Resources:
MigrationJob:
Type: ALIYUN::DTS::MigrationJob
Properties:
MigrationJobClass: small
MigrationJobName:
Ref: ALIYUN::StackName
MigrationMode:
StructureIntialization: true
DataSynchronization: true
DataIntialization: true
SourceEndpoint:
UserName: admin
InstanceID:
Ref: RdsInstanceId
Region:
Ref: ALIYUN::Region
InstanceType: RDS
Password: Admin@123
Port: '3306'
DestinationEndpoint:
EngineName: MySQL
Port: '3306'
Region:
Ref: ALIYUN::Region
InstanceID:
Ref: RdsInstanceId
Password: Admin@123
UserName: admin
InstanceType: RDS
MigrationObject:
- DBName: MySQLDataBase
Outputs:
MigrationJobId:
Description: Migration tasks task ID
Value:
Fn::GetAtt:
- MigrationJob
- MigrationJobId
JSON
格式
{
"ROSTemplateFormatVersion": "2015-09-01",
"Parameters": {
"RdsInstanceId": {
"Type": "String",
"AssociationProperty": "ALIYUN::RDS::Instance::InstanceId"
}
},
"Resources": {
"MigrationJob": {
"Type": "ALIYUN::DTS::MigrationJob",
"Properties": {
"MigrationJobClass": "small",
"MigrationJobName": {
"Ref": "ALIYUN::StackName"
},
"MigrationMode": {
"StructureIntialization": true,
"DataSynchronization": true,
"DataIntialization": true
},
"SourceEndpoint": {
"UserName": "admin",
"InstanceID": {
"Ref": "RdsInstanceId"
},
"Region": {
"Ref": "ALIYUN::Region"
},
"InstanceType": "RDS",
"Password": "Admin@123",
"Port": "3306"
},
"DestinationEndpoint": {
"EngineName": "MySQL",
"Port": "3306",
"Region": {
"Ref": "ALIYUN::Region"
},
"InstanceID": {
"Ref": "RdsInstanceId"
},
"Password": "Admin@123",
"UserName": "admin",
"InstanceType": "RDS"
},
"MigrationObject": [
{
"DBName": "MySQLDataBase"
}
]
}
}
},
"Outputs": {
"MigrationJobId": {
"Description": "Migration tasks task ID",
"Value": {
"Fn::GetAtt": [
"MigrationJob",
"MigrationJobId"
]
}
}
}
}