实例管理
更新时间:2026-08-06
实例管理
云数据库 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 //vpcId,必选
23 request.setVpcId("vpc-it3v6qt3jhvj");
24 //vpc内,每个可用区的subnetId;如果不是默认vpc则必须指定 subnetId,必选
25 RdsSubnet subnet = new RdsSubnet();
26 subnet.setSubnetId("sbn-na4tmg4v11hs");
27 //zoneName命名规范是小写的“国家-region-可用区序列",例如北京可用区A为"cn-bj-a",建议与主实例的可用区保持一致
28 subnet.setZoneName("cn-bj-d");
29 List<RdsSubnet> rdsSubnets = new ArrayList<RdsSubnet>();
30 rdsSubnets.add(subnet);
31 request.setSubnets(rdsSubnets);
32 request.setDiskIoType("normal_io");
33 //是否进行直接支付,默认false,设置为直接支付的变配订单会直接扣款,不需要再走支付逻辑,可选
34 request.setIsDirectPay(true);
35 RdsCreateInstanceResponse instanceResponse = rdsClient.createInstance(request);
36 print("createInstance", instanceResponse);
37 }
注意:
- 套餐详见
- 创建计费方式为后付费的实例需要账户现金余额+通用代金券大于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实例扩缩容操作。
Plain Text
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,多个实例需保证在同一地域。
发起主备切换
使用以下代码可以对实例发起主备切换。
Plain Text
1 public void switchMasterBackup() {
2 RdsSwitchMasterBackupRequest request = new RdsSwitchMasterBackupRequest();
3 request.setInstanceId("rds-b5GOdF2A");
4 request.setExchangeType(1);
5 request.setEffectiveTime("immediate");
6 AbstractBceResponse response = rdsClient.switchMasterBackup(request);
7 print("switchMasterBackup", response);
8 }
注意:
- 切换生效时间,默认值:immediate。immediate:立即生效;timewindow:在时间窗口内进行切换或者重启等短暂影响业务的动作。
重启实例
使用以下代码可以重启实例,支持时间窗口操作。
Plain Text
1 public void rdsRestart() {
2 RdsRestartRequest request = new RdsRestartRequest();
3 request.setInstanceId("rds-6QCusckC");
4 request.seteffectiveTime("immediate");
5 AbstractBceResponse response = rdsClient.rdsRestart(request);
6 print("rdsRestart", response);
7 }
注意:
- 可以传入多个实例id。
- 操作执行方式,有两种取值:timewindow、immediate。其中timewindow表示在时间窗口内执行,immediate表示立即执行。默认为immediate。实例默认的时间窗口为05:00~06:00
手动续费实例
使用以下代码可以续费实例,用于对已有的预付费实例进行续费。
Plain Text
1 public void rdsRenewal() {
2 RdsRenewalRequest request = new RdsRenewalRequest();
3 request.setDuration("1");
4 List<String> id = new ArrayList<>();
5 id.add("rds-6f17R5R3");
6 request.setInstanceIds(id);
7 RdsRenewalResponse response = rdsClient.rdsRenewal(request);
8 print("rdsRenewal", response);
9 }
注意:
- 可以传入多个实例id。
- 如果预付费实例在回收站中,续费后会从回收站中恢复。
- 续费时长不能小于1个月
修改实例名称
使用以下代码可以修改实例名称
Plain Text
1 public void updateRdsName() {
2 RdsUpdateNameRequest request = new RdsUpdateNameRequest();
3 request.setInstanceId("rds-17JzX6Wm");
4 request.setInstanceName("updateName");
5 AbstractBceResponse response = rdsClient.updateRdsName(request);
6 print("updateRdsName", response);
7 }
注意:
- 实例名称支持大小写字母、数字以及-_ /.等特殊字符,必须以字母开头,长度1-64。
修改实例连接信息(域名前缀)
使用以下代码可以修改实例连接信息
Plain Text
1 public void updateRdsConnectionInformation() {
2 RdsConnInformationRequest request = new RdsConnInformationRequest();
3 request.setInstanceId("rds-6f17R5R3");
4 request.setAddress("newAddr");
5 AbstractBceResponse response = rdsClient.updateRdsConnectionInformation(request);
6 print("updateRdsConnectionInformation", response);
7 }
注意:
- 实例状态必须是可用或磁盘超限
- 域名前缀由小写字母和数字组成,以小写字母开头,长度在3-30之间
开启/关闭公网访问
使用以下代码可以开启/关闭公网访问
Plain Text
1 public void updateRdsPublicNetworkAccessStatus() {
2 RdsNetworkStatusRequest request = new RdsNetworkStatusRequest();
3 request.setInstanceId("rds-17JzX6Wm");
4 request.setPublicAccess(false);
5 AbstractBceResponse response = rdsClient.updateRdsPublicNetworkAccessStatus(request);
6 print("updateRdsPublicNetworkAccessStatus", response);
7 }
注意:
- true:开启公网访问 false:关闭公网访问
修改同步模式
使用以下代码可以修改同步模式
Plain Text
1 public void updateRdsSyncMode() {
2 RdsSyncModeRequest request = new RdsSyncModeRequest();
3 request.setSyncMode("async");
4 request.setInstanceId("rds-17JzX6Wm");
5 AbstractBceResponse response = rdsClient.updateRdsSyncMode(request);
6 print("updateRdsSyncMode", response);
7 }
注意:
- 实例状态必须是 运行中、备份中或域名修改中
- 同步模式(异步复制:Async,半同步复制:Semi_sync)
修改维护时间窗口
使用以下代码可以修改维护时间窗口
Plain Text
1 public void rdsUpdateTimeWindow() {
2 RdsUpdateTimeWindowRequest request = new rdsUpdateTimeWindow();
3 request.setInstanceId("rds-7xabvFUH");
4 request.setMaintainDuration(1);
5 request.setMaintainStartTime("01:00:00");
6 AbstractBceResponse response = rdsClient.rdsUpdateTimeWindow(request);
7 print("rdsUpdateTimeWindow", response);
8 }
注意:
- 实例维护时间窗口的持续时间,单位是小时,如:1;每1个小时为一个时间段,开始时间+持续时间不可跨天
- 实例维护时间窗口的开始时间,local时间,如17:00:00
设置存储自动扩容配置
使用以下代码可以设置存储自动扩容配置
Plain Text
1 public void updateRdsStorageAutoExpansionConfig() {
2 RdsUpdateStorageAutoExpansionConfigRequest request = new RdsUpdateStorageAutoExpansionConfigRequest();
3 request.setInstanceId("rds-lZIdjcC3");
4 request.setAction("close");
5 request.setFreeSpaceThreshold(10);
6 request.setDiskMaxLimit(100);
7 RdsUpdateStorageAutoExpansionConfigResPonse response = rdsClient.updateRdsStorageAutoExpansionConfig(request);
8 print("updateRdsStorageAutoExpansionConfig", response);
9 }
注意:
- open,表示开启存储自动扩容;stop,表示关闭存储自动扩容;update,表示实例在开启存储自动扩容的状态下,修改可用空间阈值或者磁盘上限
- 可用空间阈值, 单位%。当action为open时,为必传参数,仅允许实例在启用存储自动扩容时修改
- 自动扩容磁盘的上限,单位GB。当action为open时,为必传参数,仅允许实例在启用存储自动扩容时修改。参数校验:必须为5的整倍数,必须大于实例当前磁盘quto,必须小于等于该实例变配时的磁盘上限
查询指定实例存储自动扩容配置
使用以下代码可以查询指定实例存储自动扩容配置
Plain Text
1 public void getAutoConfigForSpecified() {
2 RdsGetAutoConfigForSpecifiedRequest request = new RdsGetAutoConfigForSpecifiedRequest();
3 request.setInstanceId("rds-7xabvFUH");
4 RdsGetAutoConfigForSpecifiedResponse response = rdsClient.getAutoConfigForSpecified(request);
5 print("testGetAutoConfigForSpecified", response);
6 }
查询实例是否支持存储自动扩容
使用以下代码可以查询实例是否支持存储自动扩容
Plain Text
1 public void supportEnableAutoExpansion() {
2 RdsSupportEnableAutoExpansionRequest request = new RdsSupportEnableAutoExpansionRequest();
3 request.setInstanceId("rds-k1dffnQn");
4 RdsSupportEnableAutoExpansionResponse response = rdsClient.supportEnableAutoExpansion(request);
5 print("supportEnableAutoExpansion", response);
6 }
检查实例是否支持热变配
使用以下代码可以检查实例是否支持热变配
Plain Text
1 public void supportHotSwapping() {
2 RdsSupportHotSwappingRequest request = new RdsSupportHotSwappingRequest();
3 request.setInstanceId("rds-6QCusckC");
4 request.setBackupAzone("cn-bj-d");
5 request.setAllocatedMemoryInMB(1024);
6 request.setAllocatedStorageInGB(50);
7 request.setCpuCount(1);
8 request.setMasterAzone("cn-bj-d");
9 request.setSubnetId("sbn-dqafncqsy3y4");
10 RdsSupportHotSwappingResponse response = rdsClient.supportHotSwapping(request);
11 print("supportHotSwapping", response);
12 }
评价此篇文章
