实例管理
更新时间:2022-08-02
实例管理
云数据库 RDS (Relational Database Service)是专业、高性能、高可靠的云数据库服务。云数据库 RDS 提供 Web 界面进行配置、操作数据库实例,还为您提供可靠的数据备份和恢复、完备的安全管理、完善的监控、轻松扩展等功能支持。相对于自建数据库,云数据库 RDS 具有更经济、更专业、更高效、更可靠、简单易用等特点,使您能更专注于核心业务。
创建RDS主实例
使用以下代码可以创建一个RDS主实例
public void createInstance(RdsClient RdsClient) {
RdsCreateInstanceRequest request = new RdsCreateInstanceRequest();
// 计费相关参数,PaymentTiming取值为 预付费:Prepaid,后付费:Postpaid;Reservation:支付方式为后支付时不需要设置,预支付时必须设置;必选
RdsBilling rdsBilling = new RdsBilling();
// RdsReservation rdsReservation = new RdsReservation();
// rdsReservation.setReservationLength(1);
// rdsReservation.setReservationTimeUnit("Month");
rdsBilling.setPaymentTiming(RdsPaymentTiming.Postpaid);
// rdsBilling.setReservation(rdsReservation);
request.setBilling(rdsBilling);
// 指定rds的数据库引擎,取值mysql,sqlserver,postgresql,必选
request.setEngine(mysql);
// 指定rds的数据库版本,必选
request.setEngineVersion("5.7");
// CPU核数,必选
request.setCpuCount(1);
//套餐内存大小,单位GB,必选
request.setMemoryCapacity(1);
//套餐磁盘大小,单位GB,每5G递增,必选
request.setVolumeCapacity(5);
//磁盘类型, normal_io:本地盘ssd磁盘, cloud_high:高性能云磁盘, cloud_nor:通用型SSD, cloud_enha:增强型SSD, 必选
request.setDiskIoType("normal_io");
//是否进行直接支付,默认false,设置为直接支付的变配订单会直接扣款,不需要再走支付逻辑,可选
request.setIsDirectPay(true);
RdsCreateInstanceResponse instanceResponse = rdsClient.createInstance(request);
print("createInstance", instanceResponse);
}
注意:
- 套餐详见
- 创建计费方式为后付费的实例需要账户现金余额+通用代金券大于100;预付费方式的实例则需要账户现金余额大于等于实例费用。
- 支持批量创建,且如果创建过程中有一个实例创建失败,所有实例将全部回滚,均创建失败。
- 创建接口为异步创建,可通过查询指定实例详情接口查询实例状态。
创建RDS只读实例
使用以下代码可以创建一个RDS只读实例
public void createReadableInstance(RdsClient RdsClient) {
RdsCreateReadableInstance createReadableInstance = new RdsCreateReadableInstance();
//实例名称,允许小写字母、数字,长度限制为1~32,默认命名规则:{engine} + {engineVersion},可选
createReadableInstance.setInstanceName("sdk_created_readable");
// 主实例ID,必选
createReadableInstance.setSourceInstanceId("rds-KUJ8rhNc");
// CPU核数,必选
createReadableInstance.setCpuCount(1);
//套餐内存大小,单位GB,必选
createReadableInstance.setMemoryCapacity(1);
//套餐磁盘大小,单位GB,每5G递增,必选
createReadableInstance.setVolumeCapacity(5);
//与主实例 vpcId 相同,必选
createReadableInstance.setVpcId("vpc-it3v6qt3jhvj");
//vpc内,每个可用区的subnetId;如果不是默认vpc则必须指定 subnetId,必选
RdsSubnet subnet = new RdsSubnet();
subnet.setSubnetId("sbn-na4tmg4v11hs");
subnet.setZoneName("cn-bj-d");
List<RdsSubnet> rdsSubnets = new ArrayList<RdsSubnet>();
rdsSubnets.add(subnet);
createReadableInstance.setSubnets(rdsSubnets);
//是否进行直接支付,默认false,设置为直接支付的变配订单会直接扣款,不需要再走支付逻辑,可选
createReadableInstance.setIsDirectPay(true);
RdsCreateInstanceResponse response =
rdsClient.createInstanceReadableReplica(createReadableInstance);
print("createReadableInstance", response);
}
注意:
- 需要在云数据库 RDS 主实例的基础上进行创建
- 套餐详见
- 仅数据库类型为 MySQL 的主实例支持创建只读实例
- 只读实例的数据库引擎和数据库版本与主实例相同,无需设置,主实例版本最低是 MySQL 5.6
- 只读实例的磁盘容量不能小于主实例的磁盘容量
- 只读实例的 vpcId 需跟主实例一致
- 一个云数据库 RDS 实例,最多只能有 5 个只读实例,且一次只能创建一个
- 只读实例只支持后付费方式购买
创建RDS代理实例
使用以下代码可以创建一个RDS代理实例
public void createProxyInstance(RdsClient RdsClient) {
RdsCreateProxyInstance proxyInstance = new RdsCreateProxyInstance();
//实例名称,允许小写字母、数字,长度限制为1~32,默认命名规则:{engine} + {engineVersion},可选
proxyInstance.setInstanceName("sdk_created_proxy");
//主实例ID,必选
proxyInstance.setSourceInstanceId("rds-KUJ8rhNc");
// 代理实例节点数。取值范围2,4,6,8,16,必选
proxyInstance.setNodeAmount(2);
//与主实例 vpcId 相同,必选
proxyInstance.setVpcId("vpc-it3v6qt3jhvj");
//vpc内,每个可用区的subnetId;如果不是默认vpc则必须指定 subnetId,必选
RdsSubnet subnet = new RdsSubnet();
subnet.setSubnetId("sbn-na4tmg4v11hs");
//zoneName命名规范是小写的“国家-region-可用区序列",例如北京可用区A为"cn-bj-a",建议与主实例的可用区保持一致
subnet.setZoneName("cn-bj-d");
List<RdsSubnet> rdsSubnets = new ArrayList<RdsSubnet>();
rdsSubnets.add(subnet);
proxyInstance.setSubnets(rdsSubnets);
RdsCreateInstanceResponse response = rdsClient.createInstanceProxy(proxyInstance);
print("createProxyInstance", response);
}
注意:
- 需要在云数据库 RDS 主实例的基础上进行创建
- 仅数据库类型为 MySQL 的主实例支持创建只读实例
- 代理实例套餐和主实例套餐绑定,主实例版本最低是MySQL 5.6
- 每个主实例最多可以创建1个代理实例
- 需与主实例在同一vpc中
- 代理实例只支持后付费方式购买
查询RDS列表
使用以下代码可以查询RDS列表。
public void getInstanceList(RdsClient RdsClient) {
RdsInstanceListRequest request = new RdsInstanceListRequest();
// 批量获取列表的查询的起始位置,是一个由系统生成的字符串,可选
request.setMarker("marker");
// 指定每页包含的最大数量(主实例),最大数量不超过1000,缺省值为1000,可选
request.setMaxKeys(1);
RdsInstanceListResponse rdsInstanceList = rdsClient.getRdsInstanceList(request);
print("getInstanceList", rdsInstanceList);
}
注意:
- 只能查看属于自己账号的实例列表。
- 接口将每个主实例和其只读、代理实例分成一组,参数maxKeys代表分组数,也就是主实例的个数.
查询指定RDS实例信息
使用以下代码可以查询指定RDS实例信息。
public void getInstanceDetail(RdsClient RdsClient) {
RdsInstanceDetailRequest detailRequest = new RdsInstanceDetailRequest();
detailRequest.setInstanceId(rdsConfig.getInstanceId());
RdsInstanceDetailResponse detailResponse = rdsClient.getRdsInstanceDetail(detailRequest);
print("getInstanceDetail", detailResponse);
}
删除RDS实例
使用以下代码可以删除RDS实例。
public void releaseInstance(RdsClient RdsClient) {
RdsReleaseInstanceRequest request = new RdsReleaseInstanceRequest();
// 最多可输入10个
List<String> list = new ArrayList<String>();
list.add("rds-GpKWTnFJ");
request.setInstanceIds(list);
RdsReleaseInstanceResponse response = rdsClient.releaseInstance(request);
print("releaseInstance", response);
}
注意:
- 只有付费类型为Postpaid或者付费类型为Prepaid且已过期的实例才可以释放。
- 如果主实例被释放,那么和主实例关联的只读实例和代理实例也会被释放。
RDS实例扩缩容
使用以下代码可以对RDS实例扩缩容操作。
public void resizeInstance(RdsClient RdsClient) {
RdsInstanceResizeRequest resizeRequest = new RdsInstanceResizeRequest();
resizeRequest.setInstanceId("rds-eI0QnwMi");
// 磁盘大小,单位GB,每5G递增
resizeRequest.setVolumeCapacity(10);
// cpu核数
resizeRequest.setCpuCount(1);
// 内存大小,单位GB
resizeRequest.setMemoryCapacity(1);
// 代理实例节点数,代理实例变配时此项必填
// resizeRequest.setNodeAmount(2);
// 是否进行直接支付,默认false,设置为直接支付的变配订单会直接扣款,不需要再走支付逻辑,可选
resizeRequest.setIsDirectPay(true);
AbstractBceResponse resizeResponse = rdsClient.resizeInstance(resizeRequest);
print("resizeInstance", resizeResponse);
}
注意:
- 套餐详见
- 主实例或只读实例变配时至少填写cpuCount、memoryCapacity、volumeCapacity其中的一个。
- 实例计费方式采用后付费时,可弹性扩缩容;采用预付费方式,不能进行缩容操作。
- 只有实例available状态时才可以进行扩缩容操作。
- 实例扩缩容之后会重启一次。
- 为异步接口,可通过查询实例详情接口查看instanceStatus是否恢复。
开启自动续费
使用以下代码可以为已创建的预付费实例开启自动续费
public void autoRenew(RdsClient RdsClient) {
RdsAutoRenewRequest autoRenewRequest = new RdsAutoRenewRequest();
// 自动续费时长(续费单位为year 不大于3,续费单位为month 不大于9)可选
autoRenewRequest.setAutoRenewTime(1);
// 自动续费单位("year";"month")必选
autoRenewRequest.setAutoRenewTimeUnit(RdsRenewTimeUnit.MONTH);
autoRenewRequest.addInstanceId("rds-UMJQB2XD");
AbstractBceResponse response = rdsClient.autoRenew(autoRenewRequest);
print("autoRenew", response);
}
注意:
- 用于已创建的实例开启自动续费。
- 可以传入多个实例id,多个实例需保证在同一地域。