全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
专有网络 VPC

云数据库RDS版网络切换

更新时间:2017-10-11 11:59:07

本文档介绍了如何通过控制台和API将云数据库RDS版的网络类型切换至专有网络,同时保留经典网络的访问地址。关于RSD平滑迁移网络的原理介绍,请参见经典网络平滑迁移到VPC的混访方案

注意

  • 经典网络的访问地址有保留时间限制,您可以根据需要指定保留期限。到期后,经典网络地址会自动被系统删除。在正式删除前,您会收到短信提醒。

  • 如果要切换的RDS实例是DRDS实例的一个分库,当RDS切换了网络类型后,DRDS与RDS之间的网络连通性会被破坏,需要手动修复。详情参考修复数据库分库链接

前提条件

  • 实例的访问模式为高安全模式,关于切换访问模式的步骤,请参见设置访问模式。MySQL 5.7、SQL Server 2012和SQL Server 2016版本仅支持标准模式,在此访问模式下仍支持混访迁移网络类型的操作。

  • 实例的网络类型是经典网络。

  • 实例所在可用区已有可用的VPC和交换机。关于创建VPC的步骤,请参见创建VPC。关于创建交换机的步骤,请参见创建交换机

通过控制台切换网络类型

  1. 登录RDS管理控制台

  2. 选择目标实例所在地域。

  3. 单击目标实例的ID,进入基本信息页面。

  4. 在左侧导航栏中选择数据库连接,进入数据库连接页面。

  5. 实例连接标签页中,单击切换为专有网络

  6. 切换为专有网络确认页面,选择要切换到的VPC及虚拟交换机。

  7. 勾选保留原经典网络,并选择原经典网络内网地址的过期时间,如下图所示。

    说明

    • 从要删除原经典网络地址前的第7天开始,系统会每天给您账号绑定的手机发送提示短信。

    • 原经典网络内网地址的保留时间到期后,内网地址会被自动释放,您将无法通过经典网络的内网地址访问数据库。为避免业务中断,请根据实际需求设置保留时间。混访设置成功后,您可以修改过期时间。

  8. 单击确定,控制台会增加保留的经典网络地址,详情如下图所示。

    混访期控制台页面

通过控制台修改经典网络内网地址使用期限

设置经典网络访问地址的保留时间后,您可以在过期前通过控制台延长其保留时间。

在混访期间,您可以根据需求随时调整保留原经典网络的时间,过期时间会从变更日期重新开始计时。例如,原经典网络的内网地址会在2017年8月18日过期,但您在2017年8月15日将过期时间变更为“14天后”,则原经典网络的内网地址将会在2017年8月29日被释放。

  1. 登录RDS管理控制台

  2. 选择目标实例所在地域。

  3. 单击目标实例的ID,进入基本信息页面。

  4. 在左侧导航栏中选择数据库连接,进入数据库连接页面。

  5. 实例连接标签页中,单击修改过期时间

    修改过期时间

  6. 修改过期时间的确认页面,选择过期时间,然后单击确定

通过Open API切换网络类型

  1. 单击SDK链接下载相关SDK。

  2. 调用ModifyDBInstanceNetworkType接口进行网络切换。

    请求参数说明

    名称类型是否必须说明
    ActionString

    系统规定参数,取值:ModifyDBInstanceNetworkType。

    DBInstanceIdString实例ID。
    InstanceNetworkTypeString

    VPC:专有网络类型的实例。

    Classic:经典网络类型的实例。

    VPCIdString专有网络的ID
    VSwitchIdString

    交换机的ID,如果指定了VPC ID,则该参数也必须指定。

    PrivateIpAddressString

    输入交换机网段内的一个IP地址。如果不输入,系统根据VPC ID和交换机ID自动分配一个私网IP地址。

    RetainClassicString

    是否保留经典网络地址,默认False。

    True:保留;False:不保留。

    ClassicExpiredDaysString

    经典网络地址保留的天数,最短1天,最长180天,默认7天。

    若选择保留经典网络地址,则该参数必传。

    返回参数说明

    名称类型说明
    RequestIdString每次接口调用请求,无论成功与否,系统都会返回一个唯一识别码。
    TaskIdString任务ID。

    参考代码

    注意:当要选择保留经典网络地址时:

    • 配置RetainClassic参数,设置为True,保留经典网络地址。

    • 配置ClassicExpiredDays参数,设置保留时间。到期后将删除经典网络地址。

    1. import com.aliyuncs.DefaultAcsClient;
    2. import com.aliyuncs.IAcsClient;
    3. import com.aliyuncs.exceptions.ClientException;
    4. import com.aliyuncs.exceptions.ServerException;
    5. import com.aliyuncs.profile.DefaultProfile;
    6. import com.aliyuncs.profile.IClientProfile;
    7. import com.aliyuncs.rds.model.v20140815.ModifyDBInstanceNetworkTypeRequest;
    8. import com.aliyuncs.rds.model.v20140815.ModifyDBInstanceNetworkTypeResponse;
    9. import org.junit.Test;
    10. public class ModifyDBInstanceNetworkTypeTest {
    11. @Test
    12. public void switchNetwork_success() {
    13. ModifyDBInstanceNetworkTypeRequest request=new ModifyDBInstanceNetworkTypeRequest ();
    14. request.setInstanceId("<您的实例ID>");
    15. request.setInstanceNetworkType ("VPC");
    16. request. setVPCId("<VpcId:当TargetNetworkType为VPC时必填>");
    17. request.setVSwitchId("<VSwitchId:当TargetNetworkType时VPC时必填>");
    18. request.setRetainClassic("<是否保留CLASSIC的网络链接:True保留,False不保留>");
    19. request.setClassicExpiredDays("保留CLASSIC的网络链接的天数");
    20. IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<您的AK>",
    21. "<您的Security>");
    22. IAcsClient client = new DefaultAcsClient(profile);
    23. try {
    24. ModifyDBInstanceNetworkTypeResponse response
    25. = client.getAcsResponse(request);
    26. System.out.println(response.getRequestId());
    27. }catch (ServerException e) {
    28. e.printStackTrace();
    29. }
    30. catch (ClientException e) {
    31. e.printStackTrace();
    32. }
    33. }
    34. }
  3. 调用DescribeDBInstanceNetInfo接口查看经典网络和专有网络的访问地址。

    请求参数

    名称类型是否必须说明
    ActionString

    系统规定参数,取值:DescribeDBInstanceNetInfo。

    DBInstanceIdString实例ID。

    返回参数

    名称类型说明
    DBInstanceNetInfosList实例的连接信息。
    InstanceNetworkTypeString

    VPC:VPC类型的实例。

    Classic:经典网络类型的实例。

    DBInstanceNetInfo数据结构

    名称类型说明
    ConnectionStringStringDNS连接串。
    IPAddressStringIP地址。
    IPTypeString

    经典网络类型的实例的IP类型有:Inner、Public。

    VPC类型的实例的IP类型有:Private、Public。

    PortString端口信息。
    VPCIdStringVPC ID。
    VSwitchIdString交换机ID。
    ExpiredTimeString过期时间。

    错误描述

    名称错误码说明
    Forbidden.InstanceNotFound404The specified instance is not found.

    参考代码

    1. import com.aliyuncs.DefaultAcsClient;
    2. import com.aliyuncs.IAcsClient;
    3. import com.aliyuncs.exceptions.ClientException;
    4. import com.aliyuncs.exceptions.ServerException;
    5. import com.aliyuncs.profile.DefaultProfile;
    6. import com.aliyuncs.profile.IClientProfile;
    7. import com.aliyuncs.rds.model.v20140815.DescribeDBInstanceNetInfoRequest;
    8. import import com.aliyuncs.rds.model.v20140815.DescribeDBInstanceNetInfoResponse;
    9. import org.junit.Test;
    10. public class DescribeDBInstanceNetInfoTest {
    11. @Test
    12. public void describeDBInstanceNetInfo_success() {
    13. DescribeDBInstanceNetInfoRequest request=new DescribeDBInstanceNetInfoRequest();
    14. request.setInstanceId("<您的实例ID>");
    15. IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<您的AK>",
    16. "<您的Security>");
    17. IAcsClient client = new DefaultAcsClient(profile);
    18. try {
    19. DescribeDBInstanceNetInfoResponse response
    20. = client.getAcsResponse(request);
    21. System.out.println(response.getRequestId());
    22. }catch (ServerException e) {
    23. e.printStackTrace();
    24. }
    25. catch (ClientException e) {
    26. e.printStackTrace();
    27. }
    28. }
    29. }

通过Open API修改经典网络内网地址使用期限

  1. 单击SDK链接下载相关SDK。

  2. 调用ModifyDBInstanceNetworkExpireTime接口修改经典网络使用期限。

    请求参数说明

    名称类型是否必须说明
    ActionString

    系统规定参数,取值:ModifyDBInstanceNetworkExpireTime。

    DBInstanceIdString实例ID。
    ConnectionStringString要延期的经典网络连接串,经典网络字符串有两种:当前实例的经典网络字符串,读写分离的经典网络字符串。
    ClassicExpiredDaysInteger经典网络字符串保留天数[1-120]。

    返回参数

    名称类型说明
    <公共返回参数>详见公共参数

    参考代码

    1. public static void main(String[] args) {
    2. ModifyDBInstanceNetExpireTimeRequest request = new ModifyDBInstanceNetExpireTimeRequest();
    3. request.setClassicExpiredDays(3);
    4. request.setConnectionString("<链接字符串>");
    5. request.setDBInstanceId("<实例Id>");
    6. IClientProfile profile
    7. = DefaultProfile.getProfile("cn-qingdao", "<你的ak>",
    8. "<你的sk>");
    9. IAcsClient client = new DefaultAcsClient(profile);
    10. try {
    11. ModifyDBInstanceNetExpireTimeResponse response
    12. = client.getAcsResponse(request);
    13. System.out.println(response.getRequestId());
    14. }catch (ServerException e) {
    15. e.printStackTrace();
    16. }
    17. catch (ClientException e) {
    18. e.printStackTrace();
    19. }
    20. }
本文导读目录