# huaweicloud-batchStartJobs-Java **Repository Path**: HuaweiCloudDeveloper/huaweicloud-batch-start-jobs-java ## Basic Information - **Project Name**: huaweicloud-batchStartJobs-Java - **Description**: 通过Java版SDK创建对比任务并查询对比结果。 - **Primary Language**: Unknown - **License**: Not specified - **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创建对比任务并查询对比结果。 ## 2.流程图 先创建对比任务,待任务状态为增量中时调用,再根据返回的对比任务ID查询对比结果。 ![创建对比任务流程图](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、创建并启动DRS任务,待任务状态为增量中时调用。 ## 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) { // 认证用的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(); CreateCompareTaskRequest createCompareTaskRequest = new CreateCompareTaskRequest(); // 查询任务状态 String status = getStatus(client); // 增量中才能进行对比 if (QueryJobsReq.StatusEnum.INCRE_TRANSFER_STARTED.getValue().equals(status)) { CreateCompareTaskReq createCompareTaskReq = new CreateCompareTaskReq(); createCompareTaskReq.withJobId(""); // 创建对象对比 createCompareTaskReq.withObjectLevelCompareType(CreateCompareTaskReq.ObjectLevelCompareTypeEnum.OBJECTS); createCompareTaskRequest.setBody(createCompareTaskReq); CreateCompareTaskResponse compareTask = client.createCompareTask(createCompareTaskRequest); logger.info(compareTask.toString()); // 创建成功后获取对比任务ID,调用查询对比结果接口 getCompareResult(client, compareTask); } } ``` ## 6.返回结果示例 ```java 创建对比任务: class CreateCompareTaskResponse { jobId: 6916b750-f0fd-4b21-9712-f097a64jb101 objectLevelCompareCreateResult: class CreateCompareTaskResult { compareTaskId: 12d4a219-3ded-487b-8762-7888e8d94fa5 errorCode: null errorMsg: null } dataLevelCompareCreateResult: null errorCode: null errorMsg: null } 查询对比结果: class ListCompareResultResponse { jobId: 6916b750-f0fd-4b21-9712-f097a64jb101 objectLevelCompareResults: class ObjectCompareResult { compareTaskId: e4c67213-df06-46bd-8360-3d69820a1fed objectCompareOverview: [class ObjectCompareResultOverview { objectType: DB objectCompareResult: CONSISTENT targetCount: 1 sourceCount: 1 diffCount: 0 }, class ObjectCompareResultOverview { objectType: TABLE objectCompareResult: CONSISTENT targetCount: 1 sourceCount: 1 diffCount: 0 }, class ObjectCompareResultOverview { objectType: TABLE_COLLATION objectCompareResult: CONSISTENT targetCount: 1 sourceCount: 1 diffCount: 0 }] objectCompareDetails: {TABLE=[class ObjectCompareResultDetails { sourceDbName: test_1 targetDbName: test_1 sourceDbValue: test1 targetDbValue: test1 errorMessage: null }], TABLE_COLLATION=[class ObjectCompareResultDetails { sourceDbName: test_1 targetDbName: test_1 sourceDbValue: 'test1'.'utf8mb4_general_ci' targetDbValue: 'test1'.'utf8mb4_general_ci' errorMessage: null }], DB=[class ObjectCompareResultDetails { sourceDbName: test_1 targetDbName: test_1 sourceDbValue: test_1 targetDbValue: test_1 errorMessage: null }]} errorCode: null errorMsg: null } lineCompareResults: class LineCompareResult { compareTaskId: null lineCompareOverview: null lineCompareOverviewCount: null lineCompareDetails: null errorCode: null errorMsg: null } contentCompareResults: class ContentCompareResult { compareTaskId: null contentCompareOverview: null contentCompareOverviewCount: null contentCompareDetails: null contentCompareDiffs: null errorCode: null errorMsg: null } compareTaskListResults: class CompareTaskListResult { compareTaskList: null compareTaskListCount: 1 errorMsg: null errorCode: null } errorCode: null errorMsg: null } ``` ## 7.参考链接 更多详细信息请参考: - [创建对比任务](https://support.huaweicloud.com/api-drs/drs_03_0136.html) - [查询对比结果](https://support.huaweicloud.com/api-drs/drs_03_0137.html) ## 8.修订记录 | 发布日期 | 文档版本 | 修订说明 | | :--------: | :------: | :----------: | | 2022-09-19 | 1.0 | 文档首次发布 |