Amazon web services AWS Aurora:如何通过AWS cli恢复db群集快照?
通过控制台很容易,但我需要从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操作时发生客户端错误(
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中工作正常。