# huaweicloud-showJobList-Java **Repository Path**: HuaweiCloudDeveloper/huaweicloud-show-job-list-java ## Basic Information - **Project Name**: huaweicloud-showJobList-Java - **Description**: 迁移时不可避免业务高峰期的情况下,如果流速模式仍不能满足需要,DRS提供对迁移中的任务进行暂停/续传功能。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master-dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-09-16 - **Last Updated**: 2023-11-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 1.介绍 数据复制服务(Data Replication Service,简称DRS)是一种易用、稳定、高效、用于数据库实时迁移和数据库实时同步的云服务。 数据复制服务围绕云数据库,降低了数据库之间数据流通的复杂性,有效地帮助您减少数据传输的成本。 您可通过数据复制服务快速解决多场景下,数据库之间的数据流通问题,以满足数据传输业务需求。 数据复制服务提供了实时迁移、备份迁移、实时同步、数据订阅和实时灾备等多种功能。该示例展示了如何通过Java版SDK暂停DRS任务、续传DRS任务。 ## 2.流程图 迁移时不可避免业务高峰期的情况下,如果流速模式仍不能满足需要,DRS提供对迁移中的任务进行暂停功能。 ![暂停/续传流程图](assets/img.png) ## 3.前置条件 - 1、获取华为云开发工具包(SDK),您也可以查看安装JAVA SDK。 - 2、要使用华为云 Java SDK,您需要拥有华为云账号以及该账号对应的 Access Key(AK)和 Secret Access Key(SK)。具体请参见:[访问秘钥](https://support.huaweicloud.com/usermanual-ca/zh-cn_topic_0046606340.html) - 3、华为云 Java SDK 支持 **Java JDK 1.8** 及其以上版本。 - 4、限速只对全量迁移阶段生效,增量迁移阶段不生效。 ## 4.SDK获取和安装 您可以通过Maven配置所依赖的SDK,具体的SDK版本号请参见 [SDK开发中心](https://sdkcenter.developer.huaweicloud.com/) 。 ```xml com.huaweicloud.sdk huaweicloud-sdk-drs 3.0.95 ``` ## 5.关键代码片段 ```java public static void main(String[] args) throws InterruptedException { // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); ICredential auth = new BasicCredentials().withAk(ak).withSk(sk); // 配置客户端属性 HttpConfig config = HttpConfig.getDefaultHttpConfig(); config.withIgnoreSSLVerification(true); // 创建DrsClient实例 DrsClient client = DrsClient.newBuilder().withCredential(auth).withHttpConfig(config) .withRegion(DrsRegion.CN_NORTH_4).build(); // 查询租户任务列表 List jobInfos = showJobList(client); if (jobInfos == null || jobInfos.size() == 0) { return; } // 批量查询任务详情 List queryJobRespList = batchListJobDetails(client); if (queryJobRespList == null || queryJobRespList.size() == 0) { return; } // 暂停任务 if (pauseJobFail(client)) { return; } String status = getStatus(client); // 任务状态为暂停中时,后续可根据需要续传 retryJob(client, status); // 批量查询任务进度 batchListProgresses(client); } ``` ## 6.返回结果示例 ```java 查询租户任务列表: class ShowJobListResponse { jobs: [class JobInfo { id: ff40564f-3f31-4ecd-8a17-f49ad5cjb101 name: DRS-1431 status: RELEASE_RESOURCE_COMPLETE description: createTime: 2023-05-19 11:12:58 engineType: mysql netType: eip billingTag: false jobDirection: non-dbs dbUseType: migration taskType: FULL_INCR_TRANS nodeNewFramework: false }] totalRecord: 1 } 批量查询任务详情: class BatchListJobDetailsResponse { results: [class QueryJobResp { id: ff40564f-3f31-4ecd-8a17-f49ad5cjb101 name: DRS-1431 status: RELEASE_RESOURCE_COMPLETE description: tags: [] createTime: 1684465978112 taskType: FULL_INCR_TRANS sourceEndpoint: class Endpoint { dbType: mysql sslLink: false } targetEndpoint: class Endpoint { dbType: mysql sslLink: false vpcId: 7ec0db32-704d-470a-bd50-76ec1b730f1d subnetId: e94d65da-bb73-483b-a98f-3f813bd57762 securityGroupId: f35c6481-ab65-4d7d-9b4a-69d77e5ef5bc } instInfo: class InstInfo { instType: high engineType: mysql startTime: 0 } updateTime: 1684470000243 jobDirection: non-dbs dbUseType: migration needRestart: false schemaType: Tungsten objectSwitch: false syncDatabase: false schemaType: false azCode: cn-north-7c multiWrite: false supportIpV6: false }] count: 1 } 暂停任务: class BatchStopJobsResponse { results: [class PauseJobResp { id: 6916b750-f0fd-4b21-9712-f097a64jb101 status: success errorCode: null errorMsg: null }] count: 1 } 续传任务: class BatchRestoreTaskResponse { results: [class RetryTaskResp { id: 6916b750-f0fd-4b21-9712-f097a64jb101 status: success errorCode: null errorMsg: null }] count: 1 } 批量查询任务进度: class BatchListProgressesResponse { results: [class QueryProgressResp { progress: 100 jobId: bff77e9b-03ad-447c-9a82-590e324jb20h increTransDelay: 0 taskMode: FULL_INCR_TRANS transferStatus: INCRE_TRANSFER_STARTED processTime: 1689922427000 remainingTime: 0 }] count: 1 } ``` ## 7.参考链接 更多详细信息请参考: - [查询租户任务列表](https://support.huaweicloud.com/api-drs/drs_03_0138.html) - [批量查询任务详情](https://support.huaweicloud.com/api-drs/drs_api_0151.html) - [批量暂停任务](https://support.huaweicloud.com/api-drs/drs_03_0133.html) - [批量续传/重试](https://support.huaweicloud.com/api-drs/drs_03_0132.html) - [批量查询任务进度](https://support.huaweicloud.com/api-drs/drs_03_0114.html) ## 8.修订记录 | 发布日期 | 文档版本 | 修订说明 | |:----------:| :------: |:--------------------------------:| | 2022-09-19 | 1.0 | 文档首次发布 | | 2023-07-21 | 1.0 | 新增查询租户任务列表、批量查询任务详情、批量查询任务进度接口示例 |