3

我正在尝试使用 python (boto3) 测试从快照中恢复 Neptune 实例。长话短说,我们希望每天使用自动化来启动和删除 Dev 实例。

还原时,我的还原似乎只创建集群而不创建附加实例。一旦集群启动并添加到集群,我也尝试过创建一个实例,但这也不起作用。(参考:client.create_db_instance)

我的代码如下,获取最新的快照。使用该变量创建集群,以便最新数据存在。

import boto3

client = boto3.client('neptune')

response = client.describe_db_cluster_snapshots(
    DBClusterIdentifier='neptune',
    MaxRecords=100,
    IncludeShared=False,
    IncludePublic=False
)

snaps = response['DBClusterSnapshots']
snaps.sort(key=lambda c: c['SnapshotCreateTime'], reverse=True)

latest_snapshot = snaps[0]
snapshot_ID = latest_snapshot['DBClusterSnapshotIdentifier']

print("Latest snapshot: " + snapshot_ID)

db_response = client.restore_db_cluster_from_snapshot(
    AvailabilityZones=['us-east-1c'],
    DBClusterIdentifier='neptune-test',
    SnapshotIdentifier=snapshot_ID,
    Engine='neptune',
    Port=8182,
    VpcSecurityGroupIds=['sg-randomString'],
    DBSubnetGroupName='default-vpc-groupID'
)

time.sleep(60)

db_instance_response = client.create_db_instance(
    DBName='neptune',
    DBInstanceIdentifier='brillium-neptune',
    DBInstanceClass='db.r4.large',
    Engine='neptune',
    DBSecurityGroups=[
        'sg-string',
    ],
    AvailabilityZone='us-east-1c',
    DBSubnetGroupName='default-vpc-string',
    BackupRetentionPeriod=7,
    Port=8182,
    MultiAZ=False,
    AutoMinorVersionUpgrade=True,
    PubliclyAccessible=False,
    DBClusterIdentifier='neptune-test',
    StorageEncrypted=True
)

该文档根本没有多大帮助。它非常擅长提供基本创建所需的变量,但不能提供实际实例。如果我尝试使用相同的集群名称创建一个实例,它要么会出错,要么会创建一个具有相同名称并附加“-1”的新集群。

4

1 回答 1

0

如果您想以编程方式从快照进行还原,那么您需要:

  1. 使用创建集群快照create-db-cluster-snapshot
  2. 使用从快照恢复集群restore-db-cluster-from-snapshot
  3. 使用在新集群中创建一个实例create-db-instance

你提到你最后确实做了一个create-db-instance电话,但你的示例片段没有它。如果该调用确实成功,那么您应该会看到在该集群中配置的实例。

当您使用 Neptune 控制台从快照还原时,它会为您执行第 2 步和第 3 步。

您似乎执行了以下操作:

  1. 通过 CLI 创建快照
  2. 通过 CLI 创建集群
  3. 通过控制台在集群中创建实例

今天,我们建议完全通过控制台或完全使用 CLI 来恢复快照。

于 2018-10-18T19:08:40.960 回答