# huaweicloud-v2createcluster-java
**Repository Path**: HuaweiCloudDeveloper/huaweicloud-v2createcluster-java
## Basic Information
- **Project Name**: huaweicloud-v2createcluster-java
- **Description**: 通过该示例可指导用户使用OpenAPI V2接口创建GaussDB(DWS)集群
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master-dev
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-06-09
- **Last Updated**: 2025-06-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 1. 介绍
### DWS概述
数据仓库服务GaussDB(DWS) 是一种基于华为云基础架构和平台的在线数据处理数据库,提供即开即用、可扩展且完全托管的分析型数据库服务。GaussDB(DWS)是基于华为融合数据仓库GaussDB产品的云原生服务 ,兼容标准ANSI SQL 99和SQL 2003,同时兼容PostgreSQL/Oracle数据库生态,为各行业PB级海量大数据分析提供有竞争力的解决方案。详细信息请参见[产品介绍](https://support.huaweicloud.com/productdesc-dws/dws_01_0002.html)。
### 您将学到什么
通过该示例可指导用户使用V2创建集群接口创建GaussDB(DWS)集群。该接口为异步接口,创建集群需要10~15分钟。V2创建集群接口提供更多操作,如使用优化后的规格、支持创建加密集群和支持3AZ创建集群等,更多信息请参见接口详情[API说明](https://support.huaweicloud.com/api-dws/dws_02_0719.html)。
使用V1创建集群接口创建 GaussDB(DWS) 集群请参考[创建集群](https://codelabs.developer.huaweicloud.com/codelabs/samples/88898fac84de469c8601c79f924d034b)。
## 2. 前置条件
- 已注册华为云,并完成实名认证。
- 已获取服务对应区域终端节点地址,具体请参考 [地区和终端节点](https://developer.huaweicloud.com/endpoint?DWS) 。
- 已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。具体请参见 [访问密钥](https://support.huaweicloud.com/usermanual-ca/zh-cn_topic_0046606340.html) 。
- 已获取对应区域的项目ID,请在华为云控制台“我的凭证 > API凭证”页面上查看项目ID。具体请参见 [API凭证](https://support.huaweicloud.com/usermanual-ca/ca_01_0002.html) 。
- 已创建VPC并获取子网ID,具体参考[虚拟私有云VPC](https://support.huaweicloud.com/productdesc-vpc/zh-cn_topic_0013748729.html)。
- 已具备开发环境 ,支持Java JDK 1.8及其以上版本。
## 3. 安装SDK
您可以通过Maven方式获取和安装SDK,首先需要在您的操作系统中下载并安装Maven ,安装完成后您只需要在Java项目的pom.xml文件中加入相应的依赖项即可。
使用服务端SDK前,您需要安装“huaweicloud-sdk-core”和“huaweicloud-sdk-dws”,具体的SDK版本号请参见 [SDK开发中心](https://sdkcenter.developer.huaweicloud.com?language=java),推荐使用最新SDK 。
```xml
com.huaweicloud.sdk
huaweicloud-sdk-core
3.1.19
com.huaweicloud.sdk
huaweicloud-sdk-dws
3.1.42
```
## 4. 关键代码片段
以下代码展示如何使用SDK的V2接口创建GuassDB(DWS)集群和查询集群创建结果
### 4.1 导入依赖模块
```java
// 用户身份认证
import com.huaweicloud.sdk.core.auth.BasicCredentials;
// 导入dws的客户端
import com.huaweicloud.sdk.dws.v2.DwsClient;
// 导入配置集群参数和创建集群的请求响应类
import com.huaweicloud.sdk.dws.v2.model.CreateClusterV2Request;
import com.huaweicloud.sdk.dws.v2.model.ListClusterDetailsRequest;
import com.huaweicloud.sdk.dws.v2.model.ListClusterDetailsResponse;
import com.huaweicloud.sdk.dws.v2.model.PublicIp;
import com.huaweicloud.sdk.dws.v2.model.V2CreateCluster;
import com.huaweicloud.sdk.dws.v2.model.Volume;
import com.huaweicloud.sdk.dws.v2.model.V2CreateClusterReq;
import com.huaweicloud.sdk.dws.v2.model.CreateClusterV2Response;
import com.huaweicloud.sdk.dws.v2.region.DwsRegion;
// 日志打印
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
// 基础集合类
import java.util.ArrayList;
import java.util.List;
```
### 4.2 初始化认证
```java
BasicCredentials credentials = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);
```
### 4.3 初始化DwsClient
```java
DwsClient client = DwsClient.newBuilder()
.withCredential(credentials)
.withRegion(DwsRegion.valueOf(regionId))
.build();
```
### 4.4 配置创建集群相关参数,构建请求体
```java
/*
* V2创建集群相关参数说明如下所示:
* - name:集群名称,要求唯一性,必须以字母开头并只包含字母、数字、中划线或下划线,长度为4~64个字符。
* - flavor:集群规格名称。节点规格详情请参见数据仓库规格。
* - num_cn:集群CN数量,取值范围为2~集群节点数,最大值为20,默认值为3。
* - num_node:集群节点数量,集群模式取值范围为3~256,实时数仓(单机模式)取值为1。
* - db_name:管理员用户名称。用户命名要求如下:
* 只能由小写字母、数字或下划线组成。
* 必须由小写字母或下划线开头。
* 长度为6~64个字符。
* 用户名不能为DWS数据库的关键字。
* - db_password:管理员用户密码。
* 8~32个字符
* 至少包含以下字符中的3种:大写字母、小写字母、数字和特殊字符(~!?,.:;-_(){}[]/<>@#%^&*+|\=)。
* 不能与用户名或倒序的用户名相同。
* - db_port:集群数据库端口,取值范围为8000~30000,默认值:8000。
* - availability_zones:可用区列表。集群可用区选择详情请参见地区和终端节点
* - vpc_id:指定虚拟私有云ID,用于集群网络配置。
* - subnet_id:指定子网ID,用于集群网络配置。
* - security_group_id: 指定安全组ID,用于集群网络配置。非必选。
* - publicBindType:弹性IP绑定类型,取值如下:auto_assign:自动绑定 not_use:暂未使用 bind_existing :使用已有。
* - eipId:弹性IP的id。非必选。
* - datastore_version:集群版本。
* - volume:磁盘名称,取值范围为 :SSD(超高IO) 高IO(SAS) 普通IO(SATA)。非必选。
* - capacity: 磁盘容量。非必选。
* - enterpriseProjectId:企业项目ID,对集群指定企业项目,如果未指定,则使用默认企业项目“default”的ID,即0,非必选。
*/
String name = "";
String flavor = "";
Integer numCn = 3;
Integer numNode = 3;
String dbName = "";
String dbPassword = "";
Integer dbPort = 8000;
List availabilityZones = new ArrayList<>();
availabilityZones.add("");
String vpcId = "";
String subNetId = "";
String securityGroupId = "";
String publicBindType = "";
String eipId = "";
String datastoreVersion = "";
String volume = "";
Integer capacity = 100;
String enterpriseProjectId = "0";
CreateClusterV2Request request = new CreateClusterV2Request();
// 配置创建集群相关参数
V2CreateCluster v2ClusterInfo = new V2CreateCluster()
.withName(name)
.withFlavor(flavor)
.withNumCn(numCn)
.withNumNode(numNode)
.withDbName(dbName)
.withDbPassword(dbPassword)
.withDbPort(dbPort)
.withAvailabilityZones(availabilityZones)
.withVpcId(vpcId)
.withSubnetId(subNetId)
.withSecurityGroupId(securityGroupId)
.withPublicIp(new PublicIp().withPublicBindType(publicBindType).withEipId(eipId))
.withDatastoreVersion(datastoreVersion)
.withVolume(new Volume().withVolume(volume).withCapacity(capacity))
.withEnterpriseProjectId(enterpriseProjectId);
// 构建请求体
V2CreateClusterReq requestBody = new V2CreateClusterReq().withCluster(v2ClusterInfo);
request.setBody(requestBody);
```
### 4.5 接收创建集群响应参数
```java
CreateClusterV2Response response = client.createClusterV2(request);
logger.info(response.toString());
```
### 4.6 查询集群详情
```java
// 查询集群创建结果。创建集群需要10~15分钟,可等待查询创建结果
String clusterId = response.getCluster().getId();
ListClusterDetailsRequest detailsRequest = new ListClusterDetailsRequest().withClusterId(clusterId);
ListClusterDetailsResponse detailsResponse = client.listClusterDetails(detailsRequest);
logger.info(detailsResponse.toString());
```
## 5. 运行结果
创建集群成功返回集群ID
```json
{
"cluster" : {
"id" : "bfb25264-ca99-4cda-bf89-258052383ae7"
}
}
```
根据集群ID查询集群详情,接口详情参见[API说明](https://support.huaweicloud.com/api-dws/dws_02_0019.html)。
```json
{
"cluster":{
"id":"bfb25264-ca99-4cda-bf89-258052383ae7",
"name":"dws1",
"status":"AVAILABLE",
"version":"9.0.0",
"updated":"2023-06-08T02:33:16Z",
"created":"2023-06-08T02:33:16Z",
"port":8000,
"endpoints":[
{
"connect_info":"dws1.dws.myhuaweicloud.com",
"jdbc_url":"jdbc:postgresql://dws1.dws.myhuaweicloud.com:8000/gaussdb"
}
],
"nodes":[
{
"id":"0bacfe03-47c5-4a63-b5df-7a29792514e2",
"name":"dws1-dws-cn-cn-3-1",
"status":"200"
},
{
"id":"4cf7c610-8b14-49ea-a4fb-dd708a90abbc",
"name":"dws1-dws-cn-cn-2-1",
"status":"200"
},
{
"id":"80d578b6-00f4-42b4-98a8-bf350ddf617b",
"name":"dws1-dws-cn-cn-1-1",
"status":"200"
}
],
"elb":null,
"tags":null,
"user_name":"dbadmin",
"number_of_node":3,
"number_of_free_node":0,
"cluster_description_info":null,
"recent_event":6,
"availability_zone":"cn-north-7c",
"enterprise_project_id":"0",
"node_type":"dwsx3.4U16G.4DPU",
"vpc_id":"050e154d-9954-4929-b6d3-12af7c9213ac",
"subnet_id":"8329139c-6a7a-4812-8c61-59ee3cfe41f5",
"public_ip":{
"status":"FAIL",
"public_bind_type":"bind_existing",
"eip_id":"cb1e0084-88c0-49b5-a579-c1db64bcafda",
"eip_address":"xxxxxx",
"error_message":"弹性IP已经绑定其他虚拟机"
},
"public_endpoints":[
{
"public_connect_info":"xxxxxx:8000",
"jdbc_url":"jdbc:postgresql://xxxxxx:8000/gaussdb"
}
],
"action_progress":{
},
"sub_status":"NORMAL",
"task_status":null,
"logical_cluster_mode":true,
"use_logical_cluster":true,
"logical_cluster_initialed":true,
"guest_agent_version":"8.2.1.1",
"spec_version":"v3.0",
"datastore_type":"dws3.0",
"plugins":[
{
"id":"9c078a19-5b93-4820-a157-090e195a74ce",
"type":"inspect",
"version":"8.2.1.1",
"aarchType":"all",
"autoInstall":"install|upgrade",
"datastoreVersion":"9.0.0",
"datastoreType":"dws3.0",
"packageName":"8.2.1.1-inspect-8f06a22-20230516123248.tar.gz",
"status":"0",
"updateTime":1684324244000
},
{
"id":"c814d1d3-dac0-4fae-a68d-b6c609931f49",
"type":"dmsAgent",
"version":"8.2.1.10",
"aarchType":"all",
"autoInstall":"install|upgrade",
"datastoreVersion":"9.0.0",
"datastoreType":"dws3.0",
"packageName":"8.2.1.1-dmsAgent-20230516123314.tar.gz",
"status":"0",
"updateTime":1685429654000
},
{
"id":"8e5d71fa-1e34-4018-9e71-de961c167c3d",
"type":"aggregation",
"version":"8.2.1.1",
"aarchType":"all",
"autoInstall":"install|upgrade",
"datastoreVersion":"9.0.0",
"datastoreType":"dws3.0",
"packageName":"8.2.1.1-aggregation-20230516123248.tar.gz",
"status":"0",
"updateTime":1684324244000
},
{
"id":"8a448030-25ca-42dd-8512-719381962c1b",
"type":"vmtools",
"version":"8.2.1.1",
"aarchType":"all",
"autoInstall":"install",
"datastoreVersion":"9.0.0",
"datastoreType":"dws3.0",
"packageName":"8.2.1.1-vmtools-20230513103322.tar.gz",
"status":"0",
"updateTime":1683970334000
}
],
"obs_tbs_used":"0 GB",
"package_info":"{\"guestAgent\":\"8.2.1.1-guestAgent-0ff1ee8c-3d064e9f-20230519203128.tar.gz\",\"kernel\":\"9.0.0-dws3.0-x86_64-95806-f95b6bd1-2da3d5a5-20230602102307.tar.gz\"}",
"order_id":null,
"is_frozen":0,
"frozen_time":"2023-06-08T02:16:47Z",
"manage_ip":null,
"network_type":null,
"parameter_group":{
"id":"cb81796f-d6e0-43a0-96a8-447bbb07c638",
"name":"parameterGroupFor_bf* Connection #1 to host 127.0.0.1 left intact
b25264-ca99-4cda-bf89-258052383ae7",
"status":"In-Sync"
},
"node_type_id":"cdc2182e-4610-4e93-be02-3a951ef42280",
"security_group_id":"9fe9ab77-efab-4236-a773-77445238f3c0",
"private_ip":[
"192.168.1.185",
"192.168.1.36",
"192.168.1.64"
],
"maintain_window":{
"day":"Thu",
"start_time":"22:00",
"end_time":"02:00"
},
"has_logical_cluster_action":false
}
}
```
## 6. 参考
更多信息请参考 [数据仓库服务文档](https://support.huaweicloud.com/dws/index.html)
## 7. 修订记录
| 发布日期 | 文档版本 | 修订说明 |
| :--------: | :------: | :----------: |
| 2023-6-30 | 1.0 | 文档首次发布 |