# huaweicloud-ddm-parameters-java **Repository Path**: HuaweiCloudDeveloper/huaweicloud-ddm-parameters-java ## Basic Information - **Project Name**: huaweicloud-ddm-parameters-java - **Description**: 分布式数据库中间件(Distributed Database Middleware,简称DDM),解决单机关系型数据库对硬件依赖性强、数据量增大后扩容困难、数据库响应变慢等难题。突破了传统数据库的容量和性能瓶颈,实现海量数据高并发访问。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master-dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-10-27 - **Last Updated**: 2023-11-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 0. 版本说明 本示例配套的SDK版本为:3.1.2 ## 1. 简介 DDM是由华为云自主研发的云原生分布式数据库中间件,采用存算分离架构,提供分库分表、读写分离、弹性扩容等能力,具有稳定可靠、高度可扩展、持续可运维的特点。服务器集群管理对用户完全透明,用户通过DDM管理控制台进行数据库运维与数据读写,提供类似传统单机数据库的使用体验。本示例展示如何通过java版本的SDK方式修改DDM实例参数。 ## 2. 前置条件 1.已 [注册](https://reg.huaweicloud.com/registerui/cn/register.html?locale=zh-cn#/register) 华为云,并完成 [实名认证](https://account.huaweicloud.com/usercenter/?region=cn-north-4#/accountindex/realNameAuth) 。 2.获取华为云开发工具包(SDK),您也可以查看安装JAVA SDK。 3.已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。具体请参见 [访问密钥](https://support.huaweicloud.com/usermanual-ca/zh-cn_topic_0046606340.html) 。 4.已具备开发环境 ,支持Java JDK 1.8及其以上版本。 ## 3. 安装SDK 您可以通过Maven方式获取和安装SDK,首先需要在您的操作系统中下载并安装Maven ,安装完成后您只需要在Java项目的pom.xml文件中加入相应的依赖项即可。 具体的SDK版本号请参见 [SDK开发中心](https://sdkcenter.developer.huaweicloud.com?language=java) 。 ```xml com.huaweicloud.sdk huaweicloud-sdk-ddm 3.1.2 ``` ## 4.代码示例 以下代码展示如何使用SDK修改DDM实例参数: ```java package com.huawei.demo; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.ddm.v1.DdmClient; import com.huaweicloud.sdk.ddm.v1.model.ShowInstanceParamRequest; import com.huaweicloud.sdk.ddm.v1.model.ShowInstanceParamResponse; import com.huaweicloud.sdk.ddm.v1.model.UpdateInstanceParamRequest; import com.huaweicloud.sdk.ddm.v1.model.UpdateInstanceParamResponse; import com.huaweicloud.sdk.ddm.v1.model.UpdateParametersReq; import com.huaweicloud.sdk.ddm.v1.model.UpdateParametersReqValues; import com.huaweicloud.sdk.ddm.v1.region.DdmRegion; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.function.Consumer; public class ModifyParamDemo { private static final Logger LOGGER = LoggerFactory.getLogger(ModifyParamDemo.class.getName()); /** * 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; * 本示例以ak和sk保存在环境变量中为例,运行本实例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK * args[0] = <> * args[1] = <> **/ public static void main(String[] args) { if (args.length != 4) { LOGGER.error("The expected number of parameters is 4"); return; } String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); String instanceId = args[0]; String regionId = args[1]; ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); DdmClient client = DdmClient.newBuilder() .withCredential(auth) .withRegion(DdmRegion.valueOf(regionId)) .build(); // 查询DDM实例的参数详情 showInstanceParam(client, instanceId); // 修改DDM实例参数 // 修改 慢查询耗时阈值为1s,SQL执行超时阈值为30s UpdateParametersReqValues values = new UpdateParametersReqValues() .withLongQueryTime("1") .withSqlExecuteTimeout("120"); modifyInstanceParam(client, instanceId, values); // 查询DDM实例的参数详情 showInstanceParam(client, instanceId); } private static void showInstanceParam(DdmClient client, String instanceId) { ShowInstanceParamRequest request = new ShowInstanceParamRequest().withInstanceId(instanceId); Consumer consumer = (req) -> { ShowInstanceParamResponse response = client.showInstanceParam(req); LOGGER.info(response.toString()); }; executeRequest(consumer, request); } private static void modifyInstanceParam(DdmClient client, String instanceId, UpdateParametersReqValues values) { UpdateInstanceParamRequest request = new UpdateInstanceParamRequest() .withInstanceId(instanceId) .withBody(new UpdateParametersReq().withValues(values)); Consumer consumer = (req) -> { UpdateInstanceParamResponse response = client.updateInstanceParam(req); LOGGER.info(response.toString()); }; executeRequest(consumer, request); } private static void executeRequest(Consumer consumer, T request) { try { consumer.accept(request); } catch (ConnectionException e) { LOGGER.error("ConnectionException", e); } catch (RequestTimeoutException e) { LOGGER.error("RequestTimeoutException ", e); } catch (ServiceResponseException e) { LOGGER.error("httpStatusCode: {}, errorCode: {}, errorMsg: {}", e.getHttpStatusCode(), e.getErrorCode(), e.getErrorMsg()); } catch (Exception e) { LOGGER.error("Unexpected error occurred: ", e); } } } ``` ## 5.接口及参数说明 请见 [查询DDM指定实例的参数详情API](https://support.huaweicloud.com/api-ddm/ddm_api_01_0084.html) 您可以在 [API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=DDM&api=ShowInstanceParam) 中直接运行调试该接口。 请见 [修改DDM实例参数API](https://support.huaweicloud.com/api-ddm/ddm_api_01_0085.html) 您可以在 [API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=DDM&api=UpdateInstanceParam) 中直接运行调试该接口。 ## 修订记录 | 发布日期 | 文档版本 | 修订说明 | |:----------:| :------: | :----------: | | 2022-10-31 | 1.0 | 文档首次发布 |