文档首页/ 云数据库 GeminiDB/ GeminiDB Redis接口/ 开发参考/ 通过openAPI实现自定义周期备份
更新时间:2024-10-29 GMT+08:00
分享

通过openAPI实现自定义周期备份

游戏业务经常选用GeminiDB Redis存储玩家数据,兼顾低时延和数据持久化特性。本文介绍通过openAPI编写手动备份脚本,实现自定义备份周期(例如每2小时或4小时备份一次)。

GeminiDB Redis备份时仅需在存储层打秒级快照并上传OBS保存,因此速度极快,且对业务影响小(优于自建开源Redis的全量dump方案)。

注意事项

  • 触发备份时,可能会产生轻微的瞬时抖动。
  • 备份上传时,需占用一定CPU和带宽资源。
  • 手动备份默认永久保存,控制台支持批量删除不需要的备份。

操作步骤

  1. pom文件导入样例,详情请参考SDK官方文档

    <dependency>
        <groupId>com.huaweicloud.sdk</groupId>
        <artifactId>huaweicloud-sdk-gaussdbfornosql</artifactId>
        <version>3.1.92</version>
    </dependency>
    认证信息配置auth:
    // 配置认证信息
            // 可通过环境变量等方式配置认证信息。
            ICredential auth = new BasicCredentials()
                    .withAk(System.getenv("HUAWEICLOUD_SDK_AK"))
                    .withSk(System.getenv("HUAWEICLOUD_SDK_SK"));

    withAk、withSk是使用账号下的AK、SK,获取方式可以参考获取AK/SK

  2. 获取GeminiDB服务客户端:

    // 创建服务客户端
            VpcClient client = VpcClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(VpcRegion.valueOf("cn-north-4"))
                    .build();

    此示例是以Vpc服务为参考,需要将VpcClient 修改为:GaussDBforNoSQLClient。

    • withCredential:认证信息,传入第1步中构造的信息auth即可。
    • withRegion:将VpcRegion替换成GaussDBforNoSQLRegion即可,Region信息可以在APIE上查看获取。

  3. 构造请求:

    // 创建请求 
     ListVpcsRequest request = new ListVpcsRequest();

    将ListVpcsRequest修改为CreateBackRequest,其中CreateBackRequest需要设置如下两个值,具体方法请参考创建手动备份

    • request.setInstanceId("instanceId"); // 需要创建备份的实例ID。
    • request.setBody(backupRequestBody); // 备份信息:备份名称和备份描述。

  4. 调用API:

    ListVpcsResponse response = client.listVpcs(request);
    System.out.println(response.toString());

    使用2获取的服务客户端调用创建备份接口:

    CreateBackResponse backResponse = client.createBack(request);

  5. 加入定时触发逻辑(也可以自己选择其他类似方式实现)。

    需用户编写一个定时任务方法,将14的代码放入该方法中。在方法上使用@Scheduled(cron = "0 0/1 * * * ?")进行配置调度时间策略,如下为具体参考配置示例:

    Cron表达式:[秒] [分] [小时] [日] [月] [周] [年]。

    • *表示所有值。在分钟里表示每一分钟触发,在小时、日期、月份等里面表示每一小时、每一日、每一月。
    • ?表示不指定值。表示不关心当前位置设置的值,比如不关心是周几,则周的位置填写?。
    • -表示区间。小时设置为10-12,表示10点、11点、12点均会触发。
    • ,表示多个值。 小时设置成10,12,表示10点和12点会触发。
    • /表示递增触发。 5/15表示从第5秒开始,每隔15秒触发。
    • L表示最后,只能出现在日和周两个域。L前加数据,表示在该数据的最后一个触发,如6L表示在最后一个星期五触发。
    • W表示离指定日期最近的工作日触发。15W表示离该月15号最近的工作日触发。
    • #表示每月的第几个周几。6#3表示该月的第三个周五触发。

    配置方式举例:

    • "0 15 10 ? * *"表示每天上午10:15触发。
    • "0 15 10 * * ? 2024"表示2024年的每天上午10:15触发。
    • "0 0/5 14 * * ?"表示在每天下午2点到下午2:55期间的每5分钟触发。
    • "0 0/5 14,18 * * ?"表示在每天下午2点到下午2:55期间和下午6点到下午6:55期间的每5分钟触发。
    • "0 0 */6 * * *"表示每6个小时触发。

相关文档