首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS Aurora:如何通过aws cli恢复db集群快照?

AWS Aurora:如何通过aws cli恢复db集群快照?
EN

Stack Overflow用户
提问于 2016-12-08 12:38:03
回答 3查看 8.1K关注 0票数 10

通过控制台是非常容易的,但是我需要从CLI中做同样的事情。

首先我创建了一个db快照:

代码语言:javascript
复制
aws rds create-db-cluster-snapshot \
    --db-cluster-snapshot-identifier $SNAPSHOT_ID \
    --db-cluster-identifier $CLUSTER \

群集只包含一个写入器实例。

我没有使用create-db-snapshot方法,因为它抛出了一个错误 调用InvalidParameterValue操作时发生客户端错误( CreateDBSnapshot ):指定的实例是群集的成员,不能直接创建快照。请使用CreateDBClusterSnapshot API代替。

它的作用是:

代码语言:javascript
复制
aws rds create-db-cluster-snapshot \
  --db-cluster-snapshot-identifier $SNAPSHOT_ID \
  --db-cluster-identifier $CLUSTER \
{
    "DBClusterSnapshot": {
        "Engine": "aurora", 
        "SnapshotCreateTime": "2016-12-08T11:48:07.534Z", 
    ....
}

因此,我想从快照恢复一个新的Aurora集群,然后尝试:

代码语言:javascript
复制
aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier from-snap2 \
    --db-snapshot-identifier snap2 \

 A client error (DBSnapshotNotFound) occurred when calling the RestoreDBInstanceFromDBSnapshot operation: DBSnapshot not found: snap2

所以我试着用:

代码语言:javascript
复制
aws rds restore-db-cluster-from-snapshot \
    --db-cluster-identifier from-snap2 \
    --snapshot-identifier snap2 \
    --engine aurora \
    --vpc-security-group-ids $PREPROD_SG \
    --db-subnet-group-name my-db-subnet-group \

起作用了..。

代码语言:javascript
复制
{
    "DBCluster": {
        ...
        "EngineVersion": "5.6.10a", 
        "DBClusterIdentifier": "from-snap2", 
...
        "DBClusterMembers": [], 
...
}

但是为什么集群不包含任何Aurora实例呢?

哪里出错了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-09 02:25:33

这很违反直觉。如果从快照还原群集,但集群中没有成员实例,那么实际成功的操作是什么?似乎所有这些都是创建某种逻辑实体,可能是备份存储,但没有实例。

真奇怪。但是,API文档确实在示例响应中将集群成员显示为空集。

代码语言:javascript
复制
<DBClusterMembers/>

因此,您似乎创建了一个集群,就像您所做的那样,然后在集群中创建实例,正如AWS论坛文章中所解释的那样:

aws rds create-db-instance --db-instance-identifier my-instance --db-instance-class db.r3.large --engine aurora --db-subnet-group-name default-vpc-xxxxxx --db-cluster-identifier my-instance-cluster https://forums.aws.amazon.com/thread.jspa?messageID=688727

显然,控制台在同一个操作后面封装了多个API请求。

票数 6
EN

Stack Overflow用户

发布于 2016-12-09 09:45:09

AWS支助部门的答复:

在使用API调用时,这是一个已知的问题,我们的工程师正在对此进行研究。即使在通过CLI创建之后,在AWS控制台上可以看到集群,它也不会在Aurora集群中自动创建任何实例。在这种情况下,您将需要创建一个db实例,并将其与新还原的集群相关联。在AWS控制台上执行此操作时,会自动为集群创建一个新实例,但是来自CLI的操作使用分离的API调用。 以下文档提供了有关如何创建DB实例的详细信息:http://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html 您可以使用AWS控制台或使用CLI:http://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html来描述集群。 下面是一个命令行示例,它创建实例并将其关联到虚构的集群: aws rds create-db-实例-引擎极光--db-集群-标识符yourauroracluster标识符--db-实例-class db.t2.media-db-实例-标识符

在我的例子中,--db-cluster-identifier是从集群快照创建的集群。

票数 5
EN

Stack Overflow用户

发布于 2016-12-08 13:58:38

如果使用aws rds create-db-cluster-snapshot创建,那么就无法使用aws rds restore-db-instance-from-db-snapshot进行还原。第一个创建DB快照,第二个还原不同类型的群集快照。

从您的问题来看,您的还原似乎是正确的,也许您需要指定--database-name。此外,您还可以尝试只使用所需的参数进行恢复,即不使用vpc或DB子网。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41039717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档