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