Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS Aurora:如何通过AWS cli恢复db群集快照?_Amazon Web Services_Aws Rds - Fatal编程技术网

Amazon web services AWS Aurora:如何通过AWS cli恢复db群集快照?

Amazon web services AWS Aurora:如何通过AWS cli恢复db群集快照?,amazon-web-services,aws-rds,Amazon Web Services,Aws Rds,通过控制台很容易,但我需要从CLI执行同样的操作 首先,我创建了一个db快照: aws rds create-db-cluster-snapshot \ --db-cluster-snapshot-identifier $SNAPSHOT_ID \ --db-cluster-identifier $CLUSTER \ 集群只包含一个writer实例 我没有使用createdb snapshot方法,因为它出现了一个错误 调用CreateDBSnapshot操作时发生客户端错误(

通过控制台很容易,但我需要从CLI执行同样的操作

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

aws rds create-db-cluster-snapshot \
    --db-cluster-snapshot-identifier $SNAPSHOT_ID \
    --db-cluster-identifier $CLUSTER \
集群只包含一个writer实例

我没有使用
createdb snapshot
方法,因为它出现了一个错误

调用CreateDBSnapshot操作时发生客户端错误(InvalidParameterValue):指定的实例是群集的成员,无法直接创建快照。请改用CreateDBClusterSnapshot API

它的工作原理是:

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群集,然后我尝试:

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
因此,我尝试用以下方法恢复:

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 \
它是有效的

{
    "DBCluster": {
        ...
        "EngineVersion": "5.6.10a", 
        "DBClusterIdentifier": "from-snap2", 
...
        "DBClusterMembers": [], 
...
}
但是为什么集群不包含任何Aurora实例呢


错误在哪里?

如果使用
aws rds create db cluster snapshot
创建,则无法使用
aws rds restore db实例从db snapshot
进行还原。第一个创建DB快照,第二个恢复不同类型的群集快照


从您的问题来看,您的恢复似乎是正确的,可能需要指定
--数据库名称
。此外,您还可以仅使用所需的参数来尝试恢复,即没有vpc sg或DB子网。

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

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

<DBClusterMembers/>

因此,您似乎创建了一个集群,就像您所做的那样,然后您显然在集群中创建了实例,如AWS论坛帖子中所述:

aws rds创建db实例--db实例标识符我的实例--db实例类db.r3.large--engine aurora--db子网组名称default-vpc-xxxxxx--db集群标识符我的实例集群


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

来自AWS支持的响应:

这是使用API调用时的一个已知问题,我们的工程师正在对此进行研究。即使集群在通过CLI创建后在AWS控制台上可见,它也不会在Aurora集群中自动创建任何实例。在这种情况下,您需要创建一个db实例,并将其与新恢复的集群相关联。在AWS控制台上执行此操作时,会自动为群集创建一个新实例,但CLI的操作使用单独的API调用

以下文档提供了有关如何创建DB实例的详细信息:

您可以使用AWS控制台或CLI描述集群:

下面是一个命令行示例,用于创建实例并将其与虚构集群关联: aws rds创建数据库实例--引擎aurora--数据库群集标识符YourAurorClusterIdentifier--数据库实例类db.t2.medium--数据库实例标识符yourinstanceidentifier


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

这是正确的-对于类型为DbSnapshot的资源,AWS将使用
预期的ARN失败,但获得了ClusterSnapshot
-但是使用ClusterSnapshot恢复db实例在AWS web UI中工作正常。