您可以通過控制台和API將雲資料庫RDS版的網路類型切換至專用網路,同時保留傳統網路的訪問地址。

關於RSD平滑遷移網路的原理介紹,請參見傳統網路平滑遷移到VPC的混訪方案

说明
  • 傳統網路的訪問地址有保留時間限制,您可以根據需要指定保留期限。到期後,傳統網路地址會自動被系統刪除。在正式刪除前,您會收到簡訊提醒。

  • 如果要切換的RDS執行個體是DRDS執行個體的一個分庫,當RDS切換了網路類型後,DRDS與RDS之間的網路連通性會被破壞,需要手動修複。

前提條件

  • 執行個體的網路類型是傳統網路。

  • 執行個體所在可用性區域已有可用的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. 選擇到期時間,然後單擊確定

通過API切換網路類型

  1. 單擊SDK連結下載相關SDK。
  2. 調用ModifyDBInstanceNetworkType介面進行網路切換。
    請求參數說明
    名稱 類型 是否必須 說明
    Action String 系統規定參數,取值:

    ModifyDBInstanceNetworkType

    DBInstanceId String 執行個體ID。
    InstanceNetworkType String 執行個體的網路類型:
    • VPC:VPC類型的執行個體。

    • Classic:傳統網路類型的執行個體。

    VPCId String 專用網路的ID
    VSwitchId String 交換器的ID,如果指定了VPC ID,則該參數也必須指定。
    PrivateIpAddress String 輸入交換器網段內的一個IP地址。如果不輸入,系統根據VPC ID和交換器ID自動分配一個私網IP地址。
    RetainClassic String
    是否保留傳統網路地址,預設False
    • True:保留
    • False:不保留
    ClassicExpiredDays String

    傳統網路位址保留區的天數,最短1天,最長180天,預設7天。

    若選擇保留傳統網路地址,則該參數必傳。

    返回參數說明
    參數 類型 說明
    RequestId String 請求ID。
    TaskId String 任務ID。

    參考代碼

    當要選擇保留傳統網路地址時:
    • 配置RetainClassic參數,設定為True,保留傳統網路地址。

    • 配置ClassicExpiredDays參數,設定保留時間。到期後將刪除傳統網路地址。

    import com.aliyuncs.DefaultAcsClient;
     import com.aliyuncs.IAcsClient;
     import com.aliyuncs.exceptions.ClientException;
     import com.aliyuncs.exceptions.ServerException;
     import com.aliyuncs.profile.DefaultProfile;
     import com.aliyuncs.profile.IClientProfile;
     import com.aliyuncs.rds.model.v20140815.ModifyDBInstanceNetworkTypeRequest;
     import com.aliyuncs.rds.model.v20140815.ModifyDBInstanceNetworkTypeResponse;
     import org.junit.Test;
     public class ModifyDBInstanceNetworkTypeTest {
         @Test
         public  void switchNetwork_success() {
         ModifyDBInstanceNetworkTypeRequest request=new ModifyDBInstanceNetworkTypeRequest ();
             request.setInstanceId("<您的執行個體ID>");
             request.setInstanceNetworkType ("VPC");
             request. setVPCId("<VpcId:當TargetNetworkType為VPC時必填>");
             request.setVSwitchId("<VSwitchId:當TargetNetworkType時VPC時必填>");
             request.setRetainClassic("<是否保留CLASSIC的網路連結:True保留,False不保留>");
             request.setClassicExpiredDays("保留CLASSIC的網路連結的天數");
             IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<您的AK>",
                 "<您的Security>");
             IAcsClient client = new DefaultAcsClient(profile);
         try {
                 ModifyDBInstanceNetworkTypeResponse response
                     = client.getAcsResponse(request);
                 System.out.println(response.getRequestId());
         }catch (ServerException e) {
                 e.printStackTrace();
         }
             catch (ClientException e) {
                 e.printStackTrace();
             }
         }
     }
  3. 調用DescribeDBInstanceNetInfo介面查看傳統網路和專用網路的訪問地址。

    請求參數

    名稱 類型 是否必須 說明
    Action String 系統規定參數,取值:

    DescribeDBInstanceNetInfo

    DBInstanceId String 執行個體ID。
    返回參數
    參數 類型 說明
    DBInstanceNetInfos List 執行個體的串連資訊。
    InstanceNetworkType String 執行個體的網路類型:
    • VPC:VPC類型的執行個體。

    • Classic:傳統網路類型的執行個體。

    DBInstanceNetInfo資料結構
    參數 類型 說明
    ConnectionString String DNS串連串。
    IPAddress String IP地址。
    IPType String

    傳統網路類型的執行個體的IP類型有:Inner | Public

    VPC類型的執行個體的IP類型有:Private | Public

    Port String 連接埠資訊。
    VPCId String VPC ID。
    VSwitchId String 交換器ID。
    ExpiredTime String 到期時間。
    參考代碼
    import com.aliyuncs.IAcsClient;
     import com.aliyuncs.exceptions.ClientException;
     import com.aliyuncs.exceptions.ServerException;
     import com.aliyuncs.profile.DefaultProfile;
     import com.aliyuncs.profile.IClientProfile;
     import com.aliyuncs.rds.model.v20140815.DescribeDBInstanceNetInfoRequest;
     import import com.aliyuncs.rds.model.v20140815.DescribeDBInstanceNetInfoResponse;
     import org.junit.Test;
     public class DescribeDBInstanceNetInfoTest {
         @Test
         public  void describeDBInstanceNetInfo_success() {
             DescribeDBInstanceNetInfoRequest request=new DescribeDBInstanceNetInfoRequest();
             request.setInstanceId("<您的執行個體ID>");
             IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<您的AK>",
                 "<您的Security>");
             IAcsClient client = new DefaultAcsClient(profile);
             try {
                 DescribeDBInstanceNetInfoResponse response
                     = client.getAcsResponse(request);
                 System.out.println(response.getRequestId());
         }catch (ServerException e) {
                 e.printStackTrace();
         }
             catch (ClientException e) {
                 e.printStackTrace();
             }
         }
     }

通過API修改傳統網路內網地址使用到期日

  1. 單擊SDK連結下載相關SDK。
  2. 調用ModifyDBInstanceNetworkExpireTime介面修改傳統網路使用到期日。
    請求參數說明
    名稱 類型 是否必須 說明
    Action String 系統規定參數,取值:

    ModifyDBInstanceNetworkExpireTime

    DBInstanceId String 執行個體ID。
    ConnectionString String 要延期的傳統網路串連串,傳統網路字串有兩種:當前執行個體的傳統網路字串,讀寫分離的傳統網路字串。
    ClassicExpiredDays Integer 傳統網路字串保留天數[1-120]。
    返回參數
    參數 類型 說明
    RequestId String 請求ID。

    參考代碼

    public static void main(String[] args) {
         ModifyDBInstanceNetExpireTimeRequest request = new ModifyDBInstanceNetExpireTimeRequest();
         request.setClassicExpiredDays(3);
         request.setConnectionString("<連結字串>");
         request.setDBInstanceId("<執行個體Id>");
         IClientProfile profile
                 = DefaultProfile.getProfile("cn-qingdao", "<你的ak>",
                 "<你的sk>");
         IAcsClient client = new DefaultAcsClient(profile);
         try {
             ModifyDBInstanceNetExpireTimeResponse response
                     = client.getAcsResponse(request);
             System.out.println(response.getRequestId());
         }catch (ServerException e) {
             e.printStackTrace();
         }
         catch (ClientException e) {
             e.printStackTrace();
         }
     }