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