huaweicloud-showJobList-Java:华为云DRS任务管理Java示例:暂停与续传

迁移时不可避免业务高峰期的情况下,如果流速模式仍不能满足需要,DRS提供对迁移中的任务进行暂停/续传功能。

分支3Tags0
文件最后提交记录最后更新时间
2 年前
3 年前
2 年前
2 年前
2 年前
2 年前
2 年前

1.介绍

数据复制服务(Data Replication Service,简称DRS)是一种易用、稳定、高效、用于数据库实时迁移和数据库实时同步的云服务。 数据复制服务围绕云数据库,降低了数据库之间数据流通的复杂性,有效地帮助您减少数据传输的成本。 您可通过数据复制服务快速解决多场景下,数据库之间的数据流通问题,以满足数据传输业务需求。 数据复制服务提供了实时迁移、备份迁移、实时同步、数据订阅和实时灾备等多种功能。该示例展示了如何通过Java版SDK暂停DRS任务、续传DRS任务。

2.流程图

迁移时不可避免业务高峰期的情况下,如果流速模式仍不能满足需要,DRS提供对迁移中的任务进行暂停功能。
暂停/续传流程图

3.前置条件

  • 1、获取华为云开发工具包(SDK),您也可以查看安装JAVA SDK。
  • 2、要使用华为云 Java SDK,您需要拥有华为云账号以及该账号对应的 Access Key(AK)和 Secret Access Key(SK)。具体请参见:访问秘钥
  • 3、华为云 Java SDK 支持 Java JDK 1.8 及其以上版本。
  • 4、限速只对全量迁移阶段生效,增量迁移阶段不生效。

4.SDK获取和安装

您可以通过Maven配置所依赖的SDK,具体的SDK版本号请参见 SDK开发中心

<dependency>
    <groupId>com.huaweicloud.sdk</groupId>
    <artifactId>huaweicloud-sdk-drs</artifactId>
    <version>3.0.95</version>
</dependency>

5.关键代码片段

    public static void main(String[] args) throws InterruptedException {
        // 创建认证
        String ak = "<YOUR AK>";
        String sk = "<YOUR 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<JobInfo> jobInfos = showJobList(client);
        if (jobInfos == null || jobInfos.size() == 0) {
        return;
        }
        // 批量查询任务详情
        List<QueryJobResp> queryJobRespList = batchListJobDetails(client);
        if (queryJobRespList == null || queryJobRespList.size() == 0) {
        return;
        }
        // 暂停任务
        if (pauseJobFail(client)) {
        return;
        }
        String status = getStatus(client);
        // 任务状态为暂停中时,后续可根据需要续传
        retryJob(client, status);
        // 批量查询任务进度
        batchListProgresses(client);
        }

6.返回结果示例

查询租户任务列表:
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.参考链接

更多详细信息请参考:

8.修订记录

发布日期 文档版本 修订说明
2022-09-19 1.0 文档首次发布
2023-07-21 1.0 新增查询租户任务列表、批量查询任务详情、批量查询任务进度接口示例

项目介绍

迁移时不可避免业务高峰期的情况下,如果流速模式仍不能满足需要,DRS提供对迁移中的任务进行暂停/续传功能。

定制我的领域