实例管理
更新时间:2024-05-14
实例管理
用户可以参考以下代码,进行MongoDB数据库实例的管理。各字段含义,请参考API参考-实例相关接口。
实例列表
执行以下函数,列出账号下的实例:
func function(client *mongodb.Client) {
args := &mongodb.ListMongodbArgs{
DbInstanceType: "replica",
// DbInstanceType: "sharding",
MaxKeys: 10,
}
result, err := client.ListMongodb(args)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(result.DbInstances)
}
注意:
- 需要使用DbInstanceType指定副本集(replica,默认)或分片集(sharding),两类实例不会同时列出。
查询指定MongoDB实例详情
执行以下函数,查询指定MongoDB实例详情:
func function(client *mongodb.Client) {
INSTANCEID := "m-oHGYu8"
detail, err := client.GetInstanceDetail(INSTANCEID)
if err != nil {
fmt.Println(err)
return
}
fmt.Print(detail)
}
创建副本集实例
执行以下函数,创建一个副本集实例:
func function(client *mongodb.Client) {
vpcId := "vpc-e5kk1bvt1t11"
subnetId := "sbn-urdqd0y5sf11"
zoneName := "cn-gz-f"
resGroupId := "RESG-XiqksQtNE11"
args := &mongodb.CreateReplicaArgs{
StorageEngine: "WiredTiger",
DbInstanceType: "replica",
DbInstanceCpuCount: 1,
DbInstanceMemoryCapacity: 2,
ReadonlyNodeNum: 0,
DbInstanceStorage: 5,
VotingMemberNum: 1,
EngineVersion: "3.6",
DbInstanceName: "test_name",
ResGroupId: resGroupId,
VpcId: vpcId,
Subnets: []mongodb.SubnetMap{
{
ZoneName: zoneName,
SubnetId: subnetId,
},
},
Billing: mongodb.BillingModel{
Reservation: mongodb.Reservation{
ReservationLength: 0,
ReservationTimeUnit: "Month",
},
PaymentTiming: "Postpaid",
},
Tags: []mongodb.TagModel{
{
TagKey: "123",
TagValue: "13",
},
{
TagKey: "test",
TagValue: "test",
},
},
}
result, err := client.CreateReplica(args)
if err != nil {
fmt.Println(err)
return
}
fmt.Print(result)
}
注意:
- CreateReplicaArgs中,AccountPassword为空表示使用随机密码,须在购买成功后重置密码。如果需要设置自定义的管理员密码,须将AccountPassword设置为加密前的密码(程序将进行加密操作)。
创建分片集实例
执行以下函数,创建一个分片集实例:
func function(client *mongodb.Client) {
vpcId := "vpc-e5kk1bvt1t11"
subnetId := "sbn-urdqd0y5sf11"
zoneName := "cn-gz-f"
resGroupId := "RESG-XiqksQtNE11"
args := &mongodb.CreateShardingArgs{
StorageEngine: "WiredTiger",
DbInstanceType: "sharding",
MongosCpuCount: 1,
MongosMemoryCapacity: 2,
ShardCpuCount: 1,
ShardMemoryCapacity: 2,
ShardStorage: 5,
EngineVersion: "3.6",
DbInstanceName: "shard_test_name",
ResGroupId: resGroupId,
VpcId: vpcId,
Subnets: []mongodb.SubnetMap{
{
ZoneName: zoneName,
SubnetId: subnetId,
},
},
Billing: mongodb.BillingModel{
Reservation: mongodb.Reservation{
ReservationLength: 0,
ReservationTimeUnit: "Month",
},
PaymentTiming: "Postpaid",
},
Tags: []mongodb.TagModel{
{
TagKey: "123",
TagValue: "13",
},
{
TagKey: "test",
TagValue: "test",
},
},
}
result, err := client.CreateSharding(args)
if err != nil {
fmt.Println(err)
return
}
fmt.Print(result)
}
注意:
- CreateShardingArgs中,AccountPassword为空表示使用随机密码,须在购买成功后重置密码。如果需要设置自定义的管理员密码,须将AccountPassword设置为加密前的密码(程序将进行加密操作)。
释放单个MongoDB实例
执行以下函数,释放指定MongoDB实例(即放入回收站):
func function(client *mongodb.Client) {
instanceId := "m-ZRsw4t"
err := client.ReleaseMongodb(instanceId)
if err != nil {
fmt.Println(err)
return
}
}
释放多个MongoDB实例
执行以下函数,释放指定MongoDB实例(即放入回收站):
func function(client *mongodb.Client) {
instanceIds := []string{"m-jb4GIm", "m-cvbCWv"}
err := client.ReleaseMongodbs(instanceIds)
if err != nil {
fmt.Println(err)
return
}
}
恢复MongoDB实例
执行以下函数,恢复指定MongoDB实例:
func function(client *mongodb.Client) {
instanceIds := []string{"m-ZRsw4t"}
err := client.RecoverMongodbs(instanceIds)
if err != nil {
fmt.Println(err)
return
}
}
注意:
- 仅能对回收站中的实例使用。操作后,实例恢复为运行中状态。
删除单个MongoDB实例
执行以下函数,删除指定MongoDB实例(从回收站删除):
func function(client *mongodb.Client) {
instanceId := "m-ZRsw4t"
err := client.DeleteMongodb(instanceId)
if err != nil {
fmt.Println(err)
return
}
}
注意:
- 仅能对回收站中的实例使用。操作后,实例将被永久删除,相关数据全部丢失且不可恢复。
删除多个MongoDB实例
执行以下函数,删除指定MongoDB实例(从回收站删除):
func function(client *mongodb.Client) {
instanceIds := []string{"m-jb4GIm", "m-cvbCWv"}
err := client.DeleteMongodbs(instanceIds)
if err != nil {
fmt.Println(err)
return
}
}
注意:
- 仅能对回收站中的实例使用。操作后,实例将被永久删除,相关数据全部丢失且不可恢复。
重启单个实例
执行以下函数,重启指定实例:
func function(client *mongodb.Client) {
instanceId := "m-oHGYu8"
err := client.RestartMongodb(instanceId)
if err != nil {
fmt.Println(err)
return
}
}
重启多个实例
执行以下函数,重启指定实例:
func function(client *mongodb.Client) {
instanceIds := []string{"m-LzQnz3", "m-oHGYu8"}
err := client.RestartMongodbs(instanceIds)
if err != nil {
fmt.Println(err)
return
}
}
更改实例名称
执行以下函数,更改指定实例名称:
func function(client *mongodb.Client) {
instanceId := "m-oHGYu8"
args := mongodb.UpdateInstanceNameArgs{
DbInstanceName: "Test",
}
err := client.UpdateInstanceName(instanceId, &args)
if err != nil {
fmt.Println(err)
return
}
}
修改账号密码
执行以下函数,修改实例的账号密码:
func function(client *mongodb.Client) {
instanceId := "m-oHGYu8"
args := mongodb.UpdatePasswordArgs{
AccountPassword: "LegalPassword", // LegalPassword
}
err := client.UpdateAccountPassword(instanceId, &args)
if err != nil {
fmt.Println(err)
return
}
}
注意:
- UpdatePasswordArgs中,AccountPassword是加密前的密码(程序将进行加密操作)。
副本集实例改配
执行以下函数,执行副本集实例改配:
func function(client *mongodb.Client) {
instanceId := "m-oHGYu8"
args := mongodb.ReplicaResizeArgs{
DbInstanceStorage: 10,
DbInstanceCpuCount: 2,
DbInstanceMemoryCapacity: 4,
}
err := client.ReplicaResize(instanceId, &args)
if err != nil {
fmt.Println(err)
return
}
}
副本集实例主从切换
执行以下函数,执行副本集实例主从切换:
func function(client *mongodb.Client) {
instanceId := "m-LzQnz3"
err := client.ReplicaSwitch(instanceId)
if err != nil {
fmt.Println(err)
return
}
}
副本集获取只读节点列表
执行以下函数,获取副本集只读节点列表:
func function(client *mongodb.Client) {
instanceId := "m-LzQnz3"
result, err := client.GetReadonlyNodes(instanceId)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
副本集实例添加只读节点
执行以下函数,为副本集实例添加只读节点:
func function(client *mongodb.Client) {
instanceId := "m-LzQnz3"
increment := 1
subnetId := "sbn-urdqd0y5sf11"
zoneName := "cn-gz-f"
args := mongodb.ReplicaAddReadonlyNodesArgs{
ReadonlyNodeNum: increment,
Subnet: mongodb.SubnetMap{
ZoneName: zoneName,
SubnetId: subnetId,
},
}
result, err := client.ReplicaAddReadonlyNodes(instanceId, &args)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
分片集实例重启组件
执行以下函数,为分片集实例重启组件:
func function(client *mongodb.Client) {
instanceId := "m-2ke5iF"
nodeId := "shd-dc2N9I"
err := client.RestartShardingComponent(instanceId, nodeId)
if err != nil {
fmt.Println(err)
return
}
}
分片集实例更改组件名称
执行以下函数,为分片集实例更改组件名称:
func function(client *mongodb.Client) {
instanceId := "m-2ke5iF"
nodeId := "shd-dc2N9I"
args := mongodb.UpdateComponentNameArgs{
NodeName: "test_name",
}
err := client.UpdateShardingComponentName(instanceId, nodeId, &args)
if err != nil {
fmt.Println(err)
return
}
}
分片集实例组件主从切换
执行以下函数,为分片集实例组件进行主从切换:
func function(client *mongodb.Client) {
instanceId := "m-2ke5iF"
nodeId := "shd-dc2N9I"
err := client.ShardingComponentSwitch(instanceId, nodeId)
if err != nil {
fmt.Println(err)
return
}
}
分片集实例新增组件
执行以下函数,为分片集实例组件新增组件:
func function(client *mongodb.Client) {
instanceId := "m-2ke5iF"
args := mongodb.ShardingAddComponentArgs{
NodeCpuCount: 1,
NodeMemoryCapacity: 2,
NodeStorage: 10,
NodeType: "mongos",
}
result, err := client.ShardingAddComponent(instanceId, &args)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(result)
}
分片集实例组件改配
执行以下函数,为分片集实例组件改配:
func function(client *mongodb.Client) {
instanceId := "m-2ke5iF"
nodeId := "shd-dc2N9I"
args := mongodb.ShardingComponentResizeArgs{
NodeCpuCount: 1,
NodeMemoryCapacity: 2,
NodeStorage: 10,
}
err := client.ShardingComponentResize(instanceId, nodeId, &args)
if err != nil {
fmt.Println(err)
return
}
}
迁移可用区
执行以下函数,进行迁移可用区操作:
func function(client *mongodb.Client) {
instanceId := "m-LzQnz3"
subnetId := "sbn-jxm38c1hjk11"
zoneName := "cn-gz-a"
args := mongodb.MigrateAzoneArgs{
Subnets: []mongodb.SubnetMap{
{
SubnetId: subnetId,
ZoneName: zoneName,
},
},
Members: []mongodb.MemberRoleModel{
{
SubnetId: subnetId,
Role: "primary",
},
{
SubnetId: subnetId,
Role: "secondary",
},
{
SubnetId: subnetId,
Role: "hidden",
},
{
SubnetId: subnetId,
Role: "readonly",
},
},
}
err := client.MigrateAzone(instanceId, &args)
if err != nil {
fmt.Println(err)
return
}
}
预付费实例退订
执行以下函数,为预付费实例退订:
func function(client *mongodb.Client) {
instanceId := "m-pqhsST"
args := mongodb.RefundModel{
RefundReason: "Test",
RefundType: "ALL",
}
fmt.Println("args ", args)
result, err := client.RefundInstance(instanceId, &args)
if err != nil {
fmt.Println("err: ", err)
return
}
fmt.Println("result: ", result)
}
- RefundType用于指定退款类型,必填(非空),取值范围:["ALL"]。"ALL"表示资源全生命周期退订。
- RefundReason用于说明退款原因,必填(非空),最大字符数4096。