ALIYUN::REDIS::Instance类型用于创建Redis。
语法
{
"Type": "ALIYUN::REDIS::Instance",
"Properties": {
"VpcId": String,
"EvictionPolicy": String,
"BackupPolicy": Map,
"ZoneId": String,
"InstanceClass": String,
"InstanceMaintainTime": Map,
"Tags": List,
"VpcPasswordFree": Boolean,
"VSwitchId": String,
"SecurityGroupId": String,
"EngineVersion": String,
"SSLEnabled": String,
"Password": String,
"InstanceName": String,
"DeletionForce": Boolean,
"Connections": Map,
"ChargeType": String,
"Period": Integer,
"AutoRenewDuration": Integer,
"ProductType": String,
"SubscriptionDeletionForce": Boolean,
"SecondaryZoneId": String,
"ResourceGroupId": String,
"PeriodUnit": String,
"TairConfig": Map,
"ShardCount": Integer,
"NodeType": String,
"DeletionProtection": Boolean,
"ReadOnlyCount": Integer
}
}属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
EngineVersion | String | 否 | 是 | 数据库版本。 | 取值:
|
InstanceClass | String | 否 | 是 | 实例规格。 | 更多信息,请参见实例规格。 |
InstanceMaintainTime | Map | 否 | 是 | 实例的可维护时间段。 | 无 |
Tags | List | 否 | 是 | 标签。 | 每个实例最多可以绑定20个标签。 更多信息,请参见Tags属性。 |
VpcPasswordFree | Boolean | 否 | 否 | 是否启用免密码访问专有网络中的实例。 | 取值:
|
VpcId | String | 否 | 否 | 专有网络ID。 | 无 |
EvictionPolicy | String | 否 | 否 | 数据逐出策略。 | 取值:
|
ZoneId | String | 否 | 否 | 可用区ID。 | 当创建的实例属于专有网络时,该参数必须指定。 创建多可用区实例时,您可以调用DescribeZones - 查询支持的可用区接口查询支持的多可用区ID。 |
VSwitchId | String | 否 | 否 | 专有网络下的交换机ID。 | 无 |
SecurityGroupId | String | 否 | 是 | 安全组ID。 | 最多支持设置10个ID,ID之间用半角逗号(,)分隔。 |
Password | String | 否 | 是 | 密码。 | 长度为8~30个字符,必须同时包含大写英文字母、小写英文字母和数字。 |
SSLEnabled | String | 否 | 是 | SSL状态。 | 取值:
|
InstanceName | String | 否 | 是 | 实例名称。 | 长度为2~128个字符。必须以英文字母或汉字开头,可包含英文字母、数字、汉字、下划线(_)、短划线(-)和半角句号(.)。 |
DeletionForce | Boolean | 否 | 是 | 是否在回收时删除实例。 | 取值:
|
SubscriptionDeletionForce | Boolean | 否 | 否 | 该选项仅适用于包年包月实例。对于包年包月实例,如果此选项为 true,则在删除之前会将实例转换为按量付费实例;如果为 false,则不会执行强制删除。此操作会产生额外费用,请谨慎选择。 | 无 |
Connections | Map | 否 | 是 | 连接地址。 | 更多信息,请参见Connections属性。 |
BackupPolicy | Map | 否 | 是 | 备份策略。 | 更多信息,请参见BackupPolicy属性。 |
ChargeType | String | 否 | 是 | 实例付费类型。 | 取值:
|
Period | Integer | 否 | 是 | 付费周期。 | 取值:1~9、12、24、36、60。 单位:月。 |
AutoRenewDuration | Integer | 否 | 是 | 自动续费时长。 | 取值范围:1~12。 单位:月。 当实例即将到期时,将根据该参数指定的时长自动续费。 说明 当ChargeType取值为 PrePaid时该参数有效。 |
ProductType | String | 否 | 否 | 产品类型。 | 取值:
说明 建议设置 ProductType 属性,能加快参数查询的速度。 |
SecondaryZoneId | String | 否 | 是 | 备可用区ID。 | 可调用DescribeZones - 查询支持的可用区接口查询。 说明 传入本参数可以实现主备数据节点分布在不同的可用区,实现跨可用区容灾,能够承受机房级别的故障。 |
ResourceGroupId | String | 否 | 是 | 资源组ID。 | 无 |
PeriodUnit | String | 否 | 是 | 时长单位。 | 取值:
|
TairConfig | Map | 否 | 否 | Tair配置。 | 更多信息,请参见TairConfig属性。 |
ReadOnlyCount | Integer | 否 | 否 | 主可用区的只读节点数。 | 说明 ReadOnlyCount 参数仅适用于云原生版、开启读写分离的实例。如果实例为集群架构,则上述参数分别表示单分片的(主、备可用区)只读节点数量。 |
ShardCount | Integer | 否 | 否 | 分片数。 | 本参数仅适用于创建云盘版集群架构实例,您可以通过该参数实现自定义分片数量。 |
NodeType | String | 否 | 否 | 节点类型。 | 取值:
说明 云原生版实例请选择MASTER_SLAVE或STAND_ALONE,经典版实例请选择double或single。 |
DeletionProtection | Boolean | 否 | 是 | 是否已开启释放保护功能。 | 取值:
|
BackupPolicy语法
"BackupPolicy": {
"PreferredBackupPeriod": "String",
"PreferredBackupTime": "String",
"EnableBackupLog": "Integer"
}BackupPolicy属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
PreferredBackupPeriod | String | 是 | 是 | 备份周期。 | 取值:
|
PreferredBackupTime | String | 是 | 是 | 备份时间。 | 格式: |
EnableBackupLog | Integer | 否 | 是 | 开启或关闭增量备份。 | 取值:
|
InstanceMaintainTime语法
"InstanceMaintainTime": {
"MaintainStartTime": "String",
"MaintainEndTime": "String"
}InstanceMaintainTime属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
MaintainStartTime | String | 否 | 否 | 可维护时间段的开始时间。 | 格式: |
MaintainEndTime | String | 否 | 否 | 可维护时间段的结束时间。 | 格式: 说明 开始时间和结束时间的间隔应为1小时,例如:MaintainStartTime为 |
Tags语法
"Tags": [
{
"Key": String,
"Value": String
}
] Tags属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Key | String | 是 | 否 | 标签键。 | 同账号同地域下标签键唯一。 |
Value | String | 否 | 否 | 标签值。 | 无 |
Connections语法
"Connections": {
"VpcPrivateConnection": "Map",
"ClassicInnerConnection": "Map",
"DirectConnection": "Map",
"PublicConnection": "Map"
}Connections属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
VpcPrivateConnection | Map | 否 | 是 | VPC内网地址。 | 更多信息,请参见VpcPrivateConnection属性。 |
ClassicInnerConnection | Map | 否 | 是 | 经典内网地址。 | 更多信息,请参见ClassicInnerConnection属性。 |
DirectConnection | Map | 否 | 是 | 直接连接地址。该实例是一个集群实例。您可以根据需要申请直接连接端点。 | 更多信息,请参见DirectConnection属性。 |
PublicConnection | Map | 否 | 是 | 公共地址。 | 更多信息,请参见PublicConnection属性。 |
VpcPrivateConnection语法
"VpcPrivateConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}VpcPrivateConnection属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
ConnectionPort | Integer | 是 | 是 | 实例的ApsaraDB服务端口号。 | 取值范围:1024~65535。 |
ConnectionString | String | 是 | 是 | 公共端点的前缀。 | 长度为8~64个字符,必须以小写英文字母开头。可包含小写英文字母和数字。 |
PublicConnection语法
"PublicConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}PublicConnection属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
ConnectionPort | Integer | 是 | 是 | 实例的ApsaraDB服务端口号。 | 取值范围:1024~65535。 |
ConnectionString | String | 是 | 是 | 公共端点的前缀。 | 长度为8~64个字符,必须以小写英文字母开头。可包含小写英文字母和数字。 |
DirectConnection语法
"DirectConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}DirectConnection属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
ConnectionPort | Integer | 是 | 是 | 实例的ApsaraDB服务端口号。 | 取值范围:1024~65535。 |
ConnectionString | String | 是 | 是 | 公共端点的前缀。 | 长度为8~64个字符,必须以小写英文字母开头。可包含小写英文字母和数字。 |
ClassicInnerConnection语法
"ClassicInnerConnection": {
"ConnectionPort": Integer,
"ConnectionString": String
}ClassicInnerConnection属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
ConnectionPort | Integer | 是 | 是 | 实例的ApsaraDB服务端口号。 | 取值范围:1024~65535。 |
ConnectionString | String | 是 | 是 | 公共端点的前缀。 | 长度为8~64个字符,必须以小写英文字母开头。可包含小写英文字母和数字。 |
TairConfig语法
"TairConfig": {
"Storage": "Integer",
"StorageType": "String",
"ShardCount": "Integer"
}TairConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Storage | Integer | 否 | 否 | 云盘的存储空间。 | 不同的规格取值范围有所区别。更多信息,请参见磁盘型实例规格。 |
StorageType | String | 否 | 否 | 存储类型。 | 取值:
|
ShardCount | Integer | 否 | 否 | 实例中的数据节点个数。 | 取值:
|
返回值
Fn::GetAtt
InstanceId:实例ID。
OrderId:实例订单ID。
ConnectionDomain:实例的私网连接地址。
Port:Redis服务端口。
InstanceName:实例名称。
InstanceClass:实例规格。
VpcId:专有网络ID。
Capacity:实例的存储容量。
InstanceType:实例的引擎版本。
ChargeType:实例的计费方式。
PackageType:计划类型。
Connections:实例支持的最大连接数。
ArchitectureType:架构类型。
NodeType:节点类型。
HasRenewChangeOrder:阿里云账号是否有待续订或扩容订单。
ResourceGroupId:资源组ID。
QPS:每秒访问次数,取值为当前规格实例的理论值。
ZoneId:实例所属的可用区ID。
Bandwidth:实例带宽。单位:Mbps。
EngineVersion:版本类型。
NetworkType:网络类型。
VSwitchId:交换机ID。
PrivateIp:实例的私网IP地址。
PublicConnectionString:实例的公共连接字符串。
VpcPrivateConnectionPort:VPC私有连接端口。
ClassicInnerConnectionString:实例的经典内部连接字符串。
VpcPrivateConnectionString:实例的VPC私有连接字符串。
PublicConnectionPort:实例的公共连接端口。
DirectConnectionString:实例的直接连接字符串。
DirectConnectionPort:实例的直接连接端口。
ClassicInnerConnectionPort:实例的经典内连接端口。
示例
场景 1 :创建Redis。
ROSTemplateFormatVersion: '2015-09-01'
Description: {}
Parameters:
VpcId:
Type: String
AssociationProperty: ALIYUN::ECS::VPC::VPCId
ZoneId:
Type: String
Description:
zh-cn: 创建实例前,请确认可用区是否支持Redis资源的规格。
en: Before you create an instance, confirm that the Availability Zone supports the specifications of Redis resources.
AssociationProperty: ALIYUN::ECS::Instance:ZoneId
Label:
en: Zone ID
zh-cn: 可用区
VSwitchId:
Type: String
AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
AssociationPropertyMetadata:
VpcId: ${VpcId}
ZoneId: ${ZoneId}
Resources:
RedisInstance:
Type: ALIYUN::REDIS::Instance
Properties:
VpcId:
Ref: VpcId
VSwitchId:
Ref: VSwitchId
InstanceClass: redis.master.small.default
EvictionPolicy: noeviction
ZoneId:
Ref: ZoneId
InstanceName: DefaultRedis
Password: Admin@123!
Outputs:
InstanceId:
Value:
Fn::GetAtt:
- RedisInstance
- InstanceId {
"ROSTemplateFormatVersion": "2015-09-01",
"Description": {
},
"Parameters": {
"VpcId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::VPC::VPCId"
},
"ZoneId": {
"Type": "String",
"Description": {
"zh-cn": "创建实例前,请确认可用区是否支持Redis资源的规格。",
"en": "Before you create an instance, confirm that the Availability Zone supports the specifications of Redis resources."
},
"AssociationProperty": "ALIYUN::ECS::Instance:ZoneId",
"Label": {
"en": "Zone ID",
"zh-cn": "可用区"
}
},
"VSwitchId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
"AssociationPropertyMetadata": {
"VpcId": "${VpcId}",
"ZoneId": "${ZoneId}"
}
}
},
"Resources": {
"RedisInstance": {
"Type": "ALIYUN::REDIS::Instance",
"Properties": {
"VpcId": {
"Ref": "VpcId"
},
"VSwitchId": {
"Ref": "VSwitchId"
},
"InstanceClass": "redis.master.small.default",
"EvictionPolicy": "noeviction",
"ZoneId": {
"Ref": "ZoneId"
},
"InstanceName": "DefaultRedis",
"Password": "Admin@123!"
}
}
},
"Outputs": {
"InstanceId": {
"Value": {
"Fn::GetAtt": [
"RedisInstance",
"InstanceId"
]
}
}
}
}场景 2 :创建Redis,并添加 IP白名单。
ROSTemplateFormatVersion: '2015-09-01'
Description: {}
Parameters:
VpcId:
Type: String
AssociationProperty: ALIYUN::ECS::VPC::VPCId
ZoneId:
Type: String
Description:
zh-cn: 创建实例前,请确认可用区是否支持Redis资源的规格。
en: Before you create an instance, confirm that the Availability Zone supports the specifications of Redis resources.
AssociationProperty: ALIYUN::ECS::Instance:ZoneId
Label:
en: Zone ID
zh-cn: 可用区
VSwitchId:
Type: String
AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
AssociationPropertyMetadata:
VpcId: ${VpcId}
ZoneId: ${ZoneId}
Resources:
RedisInstance:
Type: ALIYUN::REDIS::Instance
Properties:
VpcId:
Ref: VpcId
VSwitchId:
Ref: VSwitchId
InstanceClass: redis.master.small.default
EvictionPolicy: noeviction
ZoneId:
Ref: ZoneId
InstanceName: DefaultRedis
Password: Admin@123!
REDISWhitelist:
Type: ALIYUN::REDIS::Whitelist
Properties:
InstanceId:
Ref: RedisInstance
SecurityIps: 192.168.0.0/16
Outputs:
InstanceId:
Value:
Fn::GetAtt:
- RedisInstance
- InstanceId {
"ROSTemplateFormatVersion": "2015-09-01",
"Description": {},
"Parameters": {
"VpcId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::VPC::VPCId"
},
"ZoneId": {
"Type": "String",
"Description": {
"zh-cn": "创建实例前,请确认可用区是否支持Redis资源的规格。",
"en": "Before you create an instance, confirm that the Availability Zone supports the specifications of Redis resources."
},
"AssociationProperty": "ALIYUN::ECS::Instance:ZoneId",
"Label": {
"en": "Zone ID",
"zh-cn": "可用区"
}
},
"VSwitchId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::VSwitch::VSwitchId",
"AssociationPropertyMetadata": {
"VpcId": "${VpcId}",
"ZoneId": "${ZoneId}"
}
}
},
"Resources": {
"RedisInstance": {
"Type": "ALIYUN::REDIS::Instance",
"Properties": {
"VpcId": {
"Ref": "VpcId"
},
"VSwitchId": {
"Ref": "VSwitchId"
},
"InstanceClass": "redis.master.small.default",
"EvictionPolicy": "noeviction",
"ZoneId": {
"Ref": "ZoneId"
},
"InstanceName": "DefaultRedis",
"Password": "Admin@123!"
}
},
"REDISWhitelist": {
"Type": "ALIYUN::REDIS::Whitelist",
"Properties": {
"InstanceId": {
"Ref": "RedisInstance"
},
"SecurityIps": "192.168.0.0/16"
}
}
},
"Outputs": {
"InstanceId": {
"Value": {
"Fn::GetAtt": [
"RedisInstance",
"InstanceId"
]
}
}
}
}场景 3 :通过DTS实现MySQL与Redis的缓存同步。
ROSTemplateFormatVersion: '2015-09-01'
Description:
zh-cn: 该模板通过DTS实现MySQL与Redis的缓存同步,包括VPC、ECS、RDS、Redis实例创建及安全配置,同时设置消费组确保数据一致性。
en: This template achieves cache synchronization between MySQL and Redis via DTS,
encompassing the creation and security configuration of VPC, ECS, RDS, and Redis
instances, alongside the establishment of consumer groups to ensure data consistency.
Parameters:
ZoneId:
Type: String
Label:
en: VSwitch Availability Zone
zh-cn: 交换机可用区
AssociationProperty: ALIYUN::ECS::Instance::ZoneId
RDSDBUser:
Type: String
Label:
en: RDS DB Username
zh-cn: RDS数据库账号
Description:
en: Username of database.
zh-cn: RDS数据库账号。
ConstraintDescription:
en: Consist of 2 to 16 characters of lowercase letters, underline. Must begin
with a letter and be end with an alphanumeric character.
zh-cn: 由 2 到 16 个小写字母组成,下划线。必须以字母开头,以字母数字字符结尾。
Default: demouser123
MinLength: 2
MaxLength: 16
DbName:
Type: String
Label:
en: RDS DB Name
zh-cn: RDS数据库名称
ConstraintDescription:
en: Consist of 2 to 16 characters of lowercase letters, underline. Must begin with a letter and be end with an alphanumeric character.
zh-cn: 由 2 到 16 个小写字母组成,下划线。必须以字母开头,以字母数字字符结尾。
Default: demodb
Required: true
MinLength: 2
MaxLength: 16
RDSDBPassword:
Type: String
Label:
en: RDS DB Password
zh-cn: RDS数据库密码
Description:
en: RDS database password, consisting of letters, numbers, and underline(_),
is 8 to 32 characters long,Must contain three different types of characters.
zh-cn: RDS数据库密码,由字母、数字、下划线(_)组成,长度为8~32个字符,必须包含3种不同类型的字符。
ConstraintDescription:
en: Consisting of letters, numbers, and underline(_),
is 8 to 32 characters long.
zh-cn: 由字母、数字、下划线(_)组成,长度为8~32个字符。
AssociationProperty: ALIYUN::RDS::Instance::AccountPassword
MinLength: 8
MaxLength: 32
NoEcho: true
DBInstanceClass:
Type: String
Label:
en: Instance Class
zh-cn: 实例规格
AssociationProperty: ALIYUN::RDS::Instance::InstanceType
AssociationPropertyMetadata:
ZoneId: ${ZoneId}
EngineVersion: "8.0"
Engine: MySQL
Category: HighAvailability
DBInstanceStorageType: cloud_essd
CommodityCode: bards
Default: mysql.x4.medium.2c
DtsJobName:
Type: String
Label:
en: Dts Job Name
zh-cn: 同步任务名称
Description:
en: You are advised to configure a name with service significance (without unique requirement) for easy identification.
zh-cn: 建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
Default: mysql2redis_dts
RedisInstanceClass:
Type: String
Label:
en: Tair Specifications
zh-cn: Tair 规格
Description:
en: <font color='blue'><b>Before selecting a model, please confirm whether the model is in stock in the current availability zone. To save testing costs, it is recommended to use a model with 2G memory, for example:tair.rdb.2g</b></font>, see detail:<a href='https://help.aliyun.com/zh/redis/product-overview/enhanced-performance' target='_blank'><b><font color='red'>Specification inquiry</font></b></a>.
zh-cn: <font color='blue'><b>选择机型前请先确认当前可用区下该机型是否有库存,为节省测试成本,推荐使用2GB的规格,例如:tair.rdb.2g</b></font>,<a href='https://help.aliyun.com/zh/redis/product-overview/enhanced-performance' target='_blank'><b><font color='red'>规格查询</font></b></a>。
AssociationProperty: ALIYUN::REDIS::Instance::InstanceClass
AssociationPropertyMetadata:
Engine: Redis
ProductType: Tair_rdb
InstanceChargeType: PostPaid
ZoneId: ${ZoneId1}
OrderType: BUY
Default: tair.rdb.2g
RedisPassword:
Type: String
Label:
en: Instance Password
zh-cn: 实例密码
Description:
en: 'Length 8-32 characters, can contain size letters, Numbers and special symbols,
including:! @ # $ % ^ & * ( ) _ + - ='
zh-cn: 长度8-32个字符,可包含大小字母、数字及特殊符号(包含:!@#$%^&*()_+-=)
ConstraintDescription:
en: '8-32 characters, can contain size letters, Numbers and special symbols,
including:! @ # $ % ^ & * ( ) _ + - ='
zh-cn: 8-32个字符,可包含大小字母、数字及特殊符号(包含:!@#$%^&*()_+-=)
MinLength: '8'
MaxLength: '32'
NoEcho: true
Resources:
Vpc:
Type: ALIYUN::ECS::VPC
Properties:
CidrBlock: 192.168.0.0/16
VSwitch:
Type: ALIYUN::ECS::VSwitch
Properties:
ZoneId:
Ref: ZoneId
VpcId:
Ref: Vpc
VSwitchName:
Fn::Join:
- '-'
- - VSwitch
- StackId
- Ref: ALIYUN::StackId
CidrBlock: 192.168.0.0/24
RdsDBInstance:
Type: ALIYUN::RDS::DBInstance
Properties:
ZoneId:
Ref: ZoneId
VpcId:
Ref: Vpc
VSwitchId:
Ref: VSwitch
DBInstanceClass:
Ref: DBInstanceClass
DBInstanceStorage: 100
Engine: MySQL
EngineVersion: "8.0"
MasterUserPassword:
Ref: RDSDBPassword
MasterUserType: Super
MasterUsername:
Ref: RDSDBUser
DBMappings:
- CharacterSetName: utf8mb4
DBName:
Ref: DbName
Category: HighAvailability
DBInstanceStorageType: cloud_essd
SecurityIPList: 192.168.0.0/16
SlaveZoneIds:
- Ref: ZoneId
RedisInstance:
Type: ALIYUN::REDIS::Instance
Properties:
ZoneId:
Ref: ZoneId
VpcId:
Ref: Vpc
VSwitchId:
Ref: VSwitch
InstanceClass:
Ref: RedisInstanceClass
InstanceName: rds_mysql2redis_redis
EvictionPolicy: noeviction
EngineVersion: '6.0'
Password:
Ref: RedisPassword
Whitelist:
Type: ALIYUN::REDIS::Whitelist
Properties:
InstanceId:
Ref: RedisInstance
SecurityIps: 192.168.0.0/16
MigrationJob:
Type: ALIYUN::DTS::SynchronizationJob2
Properties:
DtsJobName:
Ref: DtsJobName
SourceEndpoint:
InstanceType: RDS
InstanceID:
Ref: RdsDBInstance
EngineName: MYSQL
Region:
Ref: ALIYUN::Region
UserName:
Ref: RDSDBUser
Password:
Ref: RDSDBPassword
DestinationEndpoint:
InstanceType: Redis
InstanceID:
Ref: RedisInstance
EngineName: Redis
Region:
Ref: ALIYUN::Region
Password:
Ref: RedisPassword
StructureInitialization: false
DelayNotice: true
ErrorNotice: true
DelayRuleTime: 60
DataInitialization: true
DataSynchronization: true
DbList:
Fn::GetJsonValue:
- DbList
- Fn::Sub: '{ "DbList": { "${DbName}": { "name": "0", "all": true, "customAttachedColumn": { "__DTS_TP_TO_REDIS_KEY__": { "name": "__DTS_TP_TO_REDIS_KEY__", "syntacticType": "ADD", "value": "__DB__+''.''+__TB__+''.''+pk_str_with_name_value(''.'',''.'')", "type": "STRING", "length": "" }, "__DTS_TP_TO_REDIS_VALUE__": { "name": "__DTS_TP_TO_REDIS_VALUE__", "syntacticType": "ADD", "value": "tp2redis_json_value()", "type": "STRING", "length": "" } } }}}'
DtsInstance:
Type: ALIYUN::DTS::Instance
Properties:
JobId:
Fn::GetAtt:
- MigrationJob
- DtsJobId
InstanceClass: small
PayType: PostPaid
AutoStart: true
Type: SYNC
SourceRegion:
Ref: ALIYUN::Region
DestinationRegion:
Ref: ALIYUN::Region
SourceEndpointEngineName: MySQL
DestinationEndpointEngineName: Redis
Outputs:
RdsInstanceAddress:
Description:
en: RDS Instance Address.
zh-cn: RDS实例地址。
Value:
'Fn::Sub':
- 'https://rdsnext.console.aliyun.com/detail/${InstanceID}/basicInfo?region=${Region}'
- InstanceID:
Ref: RdsDBInstance
Region:
Ref: ALIYUN::Region
TairInstanceAddress:
Description:
en: Tair Instance Address.
zh-cn: Tair实例地址。
Value:
'Fn::Sub':
- 'https://kvstore.console.aliyun.com/Redis/instance/${Region}/${InstanceID}'
- InstanceID:
Ref: RedisInstance
Region:
Ref: ALIYUN::Region
Metadata:
ALIYUN::ROS::Interface:
ParameterGroups:
- Parameters:
- ZoneId
Label:
default:
en: Infrastructure Configuration
zh-cn: 基础资源配置(必填)
- Parameters:
- DBInstanceClass
- DbName
- RDSDBUser
- RDSDBPassword
Label:
default: RDS
- Parameters:
- RedisInstanceClass
- RedisPassword
Label:
default: Tair
- Parameters:
- DtsJobName
Label:
default: DTS
TemplateTags:
- acs:technical-solution:database:实时同步RDS与Redis构建缓存一致性-tech_solu_21
{
"ROSTemplateFormatVersion": "2015-09-01",
"Description": {
"zh-cn": "该模板通过DTS实现MySQL与Redis的缓存同步,包括VPC、ECS、RDS、Redis实例创建及安全配置,同时设置消费组确保数据一致性。",
"en": "This template achieves cache synchronization between MySQL and Redis via DTS, encompassing the creation and security configuration of VPC, ECS, RDS, and Redis instances, alongside the establishment of consumer groups to ensure data consistency."
},
"Parameters": {
"ZoneId": {
"Type": "String",
"Label": {
"en": "VSwitch Availability Zone",
"zh-cn": "交换机可用区"
},
"AssociationProperty": "ALIYUN::ECS::Instance::ZoneId"
},
"RDSDBUser": {
"Type": "String",
"Label": {
"en": "RDS DB Username",
"zh-cn": "RDS数据库账号"
},
"Description": {
"en": "Username of database.",
"zh-cn": "RDS数据库账号。"
},
"ConstraintDescription": {
"en": "Consist of 2 to 16 characters of lowercase letters, underline. Must begin with a letter and be end with an alphanumeric character.",
"zh-cn": "由 2 到 16 个小写字母组成,下划线。必须以字母开头,以字母数字字符结尾。"
},
"Default": "demouser123",
"MinLength": 2,
"MaxLength": 16
},
"DbName": {
"Type": "String",
"Label": {
"en": "RDS DB Name",
"zh-cn": "RDS数据库名称"
},
"ConstraintDescription": {
"en": "Consist of 2 to 16 characters of lowercase letters, underline. Must begin with a letter and be end with an alphanumeric character.",
"zh-cn": "由 2 到 16 个小写字母组成,下划线。必须以字母开头,以字母数字字符结尾。"
},
"Default": "demodb",
"Required": true,
"MinLength": 2,
"MaxLength": 16
},
"RDSDBPassword": {
"Type": "String",
"Label": {
"en": "RDS DB Password",
"zh-cn": "RDS数据库密码"
},
"Description": {
"en": "RDS database password, consisting of letters, numbers, and underline(_), is 8 to 32 characters long,Must contain three different types of characters.",
"zh-cn": "RDS数据库密码,由字母、数字、下划线(_)组成,长度为8~32个字符,必须包含3种不同类型的字符。"
},
"ConstraintDescription": {
"en": "Consisting of letters, numbers, and underline(_), is 8 to 32 characters long.",
"zh-cn": "由字母、数字、下划线(_)组成,长度为8~32个字符。"
},
"AssociationProperty": "ALIYUN::RDS::Instance::AccountPassword",
"MinLength": 8,
"MaxLength": 32,
"NoEcho": true
},
"DBInstanceClass": {
"Type": "String",
"Label": {
"en": "Instance Class",
"zh-cn": "实例规格"
},
"AssociationProperty": "ALIYUN::RDS::Instance::InstanceType",
"AssociationPropertyMetadata": {
"ZoneId": "${ZoneId}",
"EngineVersion": "8.0",
"Engine": "MySQL",
"Category": "HighAvailability",
"DBInstanceStorageType": "cloud_essd",
"CommodityCode": "bards"
},
"Default": "mysql.x4.medium.2c"
},
"DtsJobName": {
"Type": "String",
"Label": {
"en": "Dts Job Name",
"zh-cn": "同步任务名称"
},
"Description": {
"en": "You are advised to configure a name with service significance (without unique requirement) for easy identification.",
"zh-cn": "建议配置具有业务意义的名称(无唯一性要求),便于后续识别。"
},
"Default": "mysql2redis_dts"
},
"RedisInstanceClass": {
"Type": "String",
"Label": {
"en": "Tair Specifications",
"zh-cn": "Tair 规格"
},
"Description": {
"en": "<font color='blue'><b>Before selecting a model, please confirm whether the model is in stock in the current availability zone. To save testing costs, it is recommended to use a model with 2G memory, for example:tair.rdb.2g</b></font>, see detail:<a href='https://help.aliyun.com/zh/redis/product-overview/enhanced-performance' target='_blank'><b><font color='red'>Specification inquiry</font></b></a>.",
"zh-cn": "<font color='blue'><b>选择机型前请先确认当前可用区下该机型是否有库存,为节省测试成本,推荐使用2GB的规格,例如:tair.rdb.2g</b></font>,<a href='https://help.aliyun.com/zh/redis/product-overview/enhanced-performance' target='_blank'><b><font color='red'>规格查询</font></b></a>。"
},
"AssociationProperty": "ALIYUN::REDIS::Instance::InstanceClass",
"AssociationPropertyMetadata": {
"Engine": "Redis",
"ProductType": "Tair_rdb",
"InstanceChargeType": "PostPaid",
"ZoneId": "${ZoneId1}",
"OrderType": "BUY"
},
"Default": "tair.rdb.2g"
},
"RedisPassword": {
"Type": "String",
"Label": {
"en": "Instance Password",
"zh-cn": "实例密码"
},
"Description": {
"en": "Length 8-32 characters, can contain size letters, Numbers and special symbols, including:! @ # $ % ^ & * ( ) _ + - =",
"zh-cn": "长度8-32个字符,可包含大小字母、数字及特殊符号(包含:!@#$%^&*()_+-=)"
},
"ConstraintDescription": {
"en": "8-32 characters, can contain size letters, Numbers and special symbols, including:! @ # $ % ^ & * ( ) _ + - =",
"zh-cn": "8-32个字符,可包含大小字母、数字及特殊符号(包含:!@#$%^&*()_+-=)"
},
"MinLength": "8",
"MaxLength": "32",
"NoEcho": true
}
},
"Resources": {
"Vpc": {
"Type": "ALIYUN::ECS::VPC",
"Properties": {
"CidrBlock": "192.168.0.0/16"
}
},
"VSwitch": {
"Type": "ALIYUN::ECS::VSwitch",
"Properties": {
"ZoneId": {
"Ref": "ZoneId"
},
"VpcId": {
"Ref": "Vpc"
},
"VSwitchName": {
"Fn::Join": [
"-",
[
"VSwitch",
"StackId",
{
"Ref": "ALIYUN::StackId"
}
]
]
},
"CidrBlock": "192.168.0.0/24"
}
},
"RdsDBInstance": {
"Type": "ALIYUN::RDS::DBInstance",
"Properties": {
"ZoneId": {
"Ref": "ZoneId"
},
"VpcId": {
"Ref": "Vpc"
},
"VSwitchId": {
"Ref": "VSwitch"
},
"DBInstanceClass": {
"Ref": "DBInstanceClass"
},
"DBInstanceStorage": 100,
"Engine": "MySQL",
"EngineVersion": "8.0",
"MasterUserPassword": {
"Ref": "RDSDBPassword"
},
"MasterUserType": "Super",
"MasterUsername": {
"Ref": "RDSDBUser"
},
"DBMappings": [
{
"CharacterSetName": "utf8mb4",
"DBName": {
"Ref": "DbName"
}
}
],
"Category": "HighAvailability",
"DBInstanceStorageType": "cloud_essd",
"SecurityIPList": "192.168.0.0/16",
"SlaveZoneIds": [
{
"Ref": "ZoneId"
}
]
}
},
"RedisInstance": {
"Type": "ALIYUN::REDIS::Instance",
"Properties": {
"ZoneId": {
"Ref": "ZoneId"
},
"VpcId": {
"Ref": "Vpc"
},
"VSwitchId": {
"Ref": "VSwitch"
},
"InstanceClass": {
"Ref": "RedisInstanceClass"
},
"InstanceName": "rds_mysql2redis_redis",
"EvictionPolicy": "noeviction",
"EngineVersion": "6.0",
"Password": {
"Ref": "RedisPassword"
}
}
},
"Whitelist": {
"Type": "ALIYUN::REDIS::Whitelist",
"Properties": {
"InstanceId": {
"Ref": "RedisInstance"
},
"SecurityIps": "192.168.0.0/16"
}
},
"MigrationJob": {
"Type": "ALIYUN::DTS::SynchronizationJob2",
"Properties": {
"DtsJobName": {
"Ref": "DtsJobName"
},
"SourceEndpoint": {
"InstanceType": "RDS",
"InstanceID": {
"Ref": "RdsDBInstance"
},
"EngineName": "MYSQL",
"Region": {
"Ref": "ALIYUN::Region"
},
"UserName": {
"Ref": "RDSDBUser"
},
"Password": {
"Ref": "RDSDBPassword"
}
},
"DestinationEndpoint": {
"InstanceType": "Redis",
"InstanceID": {
"Ref": "RedisInstance"
},
"EngineName": "Redis",
"Region": {
"Ref": "ALIYUN::Region"
},
"Password": {
"Ref": "RedisPassword"
}
},
"StructureInitialization": false,
"DelayNotice": true,
"ErrorNotice": true,
"DelayRuleTime": 60,
"DataInitialization": true,
"DataSynchronization": true,
"DbList": {
"Fn::GetJsonValue": [
"DbList",
{
"Fn::Sub": "{ \"DbList\": { \"${DbName}\": { \"name\": \"0\", \"all\": true, \"customAttachedColumn\": { \"__DTS_TP_TO_REDIS_KEY__\": { \"name\": \"__DTS_TP_TO_REDIS_KEY__\", \"syntacticType\": \"ADD\", \"value\": \"__DB__+'.'+__TB__+'.'+pk_str_with_name_value('.','.')\", \"type\": \"STRING\", \"length\": \"\" }, \"__DTS_TP_TO_REDIS_VALUE__\": { \"name\": \"__DTS_TP_TO_REDIS_VALUE__\", \"syntacticType\": \"ADD\", \"value\": \"tp2redis_json_value()\", \"type\": \"STRING\", \"length\": \"\" } } }}}"
}
]
}
}
},
"DtsInstance": {
"Type": "ALIYUN::DTS::Instance",
"Properties": {
"JobId": {
"Fn::GetAtt": [
"MigrationJob",
"DtsJobId"
]
},
"InstanceClass": "small",
"PayType": "PostPaid",
"AutoStart": true,
"Type": "SYNC",
"SourceRegion": {
"Ref": "ALIYUN::Region"
},
"DestinationRegion": {
"Ref": "ALIYUN::Region"
},
"SourceEndpointEngineName": "MySQL",
"DestinationEndpointEngineName": "Redis"
}
}
},
"Outputs": {
"RdsInstanceAddress": {
"Description": {
"en": "RDS Instance Address.",
"zh-cn": "RDS实例地址。"
},
"Value": {
"Fn::Sub": [
"https://rdsnext.console.aliyun.com/detail/${InstanceID}/basicInfo?region=${Region}",
{
"InstanceID": {
"Ref": "RdsDBInstance"
},
"Region": {
"Ref": "ALIYUN::Region"
}
}
]
}
},
"TairInstanceAddress": {
"Description": {
"en": "Tair Instance Address.",
"zh-cn": "Tair实例地址。"
},
"Value": {
"Fn::Sub": [
"https://kvstore.console.aliyun.com/Redis/instance/${Region}/${InstanceID}",
{
"InstanceID": {
"Ref": "RedisInstance"
},
"Region": {
"Ref": "ALIYUN::Region"
}
}
]
}
}
},
"Metadata": {
"ALIYUN::ROS::Interface": {
"ParameterGroups": [
{
"Parameters": [
"ZoneId"
],
"Label": {
"default": {
"en": "Infrastructure Configuration",
"zh-cn": "基础资源配置(必填)"
}
}
},
{
"Parameters": [
"DBInstanceClass",
"DbName",
"RDSDBUser",
"RDSDBPassword"
],
"Label": {
"default": "RDS"
}
},
{
"Parameters": [
"RedisInstanceClass",
"RedisPassword"
],
"Label": {
"default": "Tair"
}
},
{
"Parameters": [
"DtsJobName"
],
"Label": {
"default": "DTS"
}
}
],
"TemplateTags": [
"acs:technical-solution:database:实时同步RDS与Redis构建缓存一致性-tech_solu_21"
]
}
}
}