73889fae创建于 2024年7月12日历史提交
文件最后提交记录最后更新时间
2 年前
2 年前
2 年前
2 年前
README

1、介绍

云数据库 GaussDB NoSQL是一款基于计算存储分离架构的分布式多模NoSQL数据库服务,在云计算平台高性能、高可用、高可靠、高安全、可弹性伸缩的基础上,提供了一键部署、备份恢复、监控报警等服务能力。云数据库 GaussDB NoSQL目前包含GaussDB(for Cassandra)、GaussDB(for Mongo)、GaussDB(for Influx)和GaussDB(for Redis)四款产品,分别兼容Cassandra、MongoDB、InfluxDB和Redis主流NoSQL接口,并提供高读写性能,具有高性价比,适用于IoT、气象、互联网、游戏等领域。此示例展示如何创建手动备份,并通过备份id查询备份列表详情。

2、流程图

image

3、前置条件

1.已 注册 华为云,并完成 实名认证

2.获取华为云开发工具包(SDK)。

3.已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。具体请参见 访问密钥

4.已具备开发环境 ,支持Python3及其以上版本。

4、SDK获取和安装

具体的SDK版本号请参见 SDK开发中心

pip install huaweicloudsdkcore
pip install huaweicloudsdkgaussdbfornosql

5、关键代码片段

以下代码展示如何通过GaussDB NoSQL SDK创建手动备份:

import os

from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkcore.exceptions.exceptions import ConnectionException
from huaweicloudsdkcore.exceptions.exceptions import RequestTimeoutException
from huaweicloudsdkcore.exceptions.exceptions import ServiceResponseException
from huaweicloudsdkcore.http.http_config import HttpConfig
from huaweicloudsdkcore.region.region import Region
from huaweicloudsdkgaussdbfornosql.v3.gaussdbfornosql_client import GaussDBforNoSQLClient
from huaweicloudsdkgaussdbfornosql.v3.model.create_back_request import CreateBackRequest
from huaweicloudsdkgaussdbfornosql.v3.model.create_back_response import CreateBackResponse
from huaweicloudsdkgaussdbfornosql.v3.model.no_sql_create_backup_request_body import NoSqlCreateBackupRequestBody
from huaweicloudsdkgaussdbfornosql.v3.model.show_all_instances_backups_new_request import ShowAllInstancesBackupsNewRequest


class NosqlCreateBackupDemo:

    def __init__(self):
        pass

    @staticmethod
    def main(args):
        iam_endpoint = "<YOUR IAM_END_POINT>"
        endpoint = "<YOUR END_POINT>"
        # 认证用的ak和sk直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;
        # 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
        ak = os.environ["HUAWEICLOUD_SDK_AK"]
        sk = os.environ["HUAWEICLOUD_SDK_SK"]
        instance_id = "<YOUR INSTANCE_ID>"
        region_id = "<YOUR REGION_ID>"
        name = "<YOUR BACKUP_NAME>"
        description = "<YOUR BACKUP_DESCRIPTION>"
        auth = BasicCredentials(ak, sk) \
            .with_iam_endpoint(iam_endpoint)
        # 根据需要配置是否跳过SSL证书验证
        http_config = HttpConfig.get_default_config()
        http_config.ignore_ssl_verification = True
        http_config.proxy_protocol = "http"
        client = GaussDBforNoSQLClient.new_builder() \
            .with_credentials(auth) \
            .with_region(Region(region_id, endpoint)) \
            .with_http_config(http_config) \
            .build()
        backup_id = NosqlCreateBackupDemo.__create_nosql_backup(client, instance_id, name, description)
        NosqlCreateBackupDemo.__show_all_instances_backups(client, backup_id)

    @staticmethod
    def __create_nosql_backup(client, instance_id, name, description):
        request = CreateBackRequest()
        # 设置实例id,备份名称,备份描述
        request.instance_id = instance_id
        body = NoSqlCreateBackupRequestBody()
        body.name = name
        body.description = description
        request.body = body
        # 获取手动备份id
        response = CreateBackResponse()
        try:
            response = client.create_back(request)
            print(response)
        except ConnectionException:
            print("ConnectionException")
        except RequestTimeoutException:
            print("RequestTimeoutException")
        except ServiceResponseException as e:
            print("httpStatusCode: {}, errorCode: {}, errorMsg: {}", e.status_code, e.error_code, e.error_msg)
        return response.backup_id

    @staticmethod
    def __show_all_instances_backups(client, backup_id):
        request = ShowAllInstancesBackupsNewRequest()
        request.backup_id = backup_id
        # 查询备份列表 展示备份详情
        try:
            response = client.show_all_instances_backups_new(request)
            print(response)
        except ConnectionException:
            print("ConnectionException")
        except RequestTimeoutException:
            print("RequestTimeoutException")
        except ServiceResponseException as e:
            print("httpStatusCode: {}, errorCode: {}, errorMsg: {}", e.status_code, e.error_code, e.error_msg)


if __name__ == "__main__":
    NosqlCreateBackupDemo().main(any)

6、返回结果示例

  • 创建手动备份(CreateBack)接口返回值:
{
  job_id: fbdac261-1edc-4598-b5c9-77fea181a1e7
  backup_id: 8cf8cc8b9b9146998dab8b943fe0c38bbr06
}
  • 查询备份列表(ShowAllInstancesBackups)接口返回值:
{
    totalCount: 1
    backups: [{
        id: 8cf8cc8b9b9146998dab8b943fe0c38bbr06
        description: description_123
        instanceId: fa2e6aa4412842a7bba6d3be813ae119in06
        instanceName: nosql-8299
        datastore: {
            type: cassandra
            version: 3.11.3.230430
        }
        name: name_123
        type: Manual
        size: 0.0
        status: BUILDING
        beginTime: 2023-07-31T08:42:05+0000
        endTime: 2023-07-31T08:42:05+0000
        databaseTables: []
    }]
}

7、参考链接

8、修订记录

发布日期 文档版本 修订说明
2023-10-11 1.0 文档首次发布