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、流程图

3、前置条件
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、参考链接
- API参考 请见 创建手动备份 您可以在 API Explorer 中直接运行调试该接口。
8、修订记录
| 发布日期 | 文档版本 | 修订说明 |
|---|---|---|
| 2023-10-11 | 1.0 | 文档首次发布 |