[英]How do you switch between standard and serverless configurations in Amazon Aurora
[英]How do you remove/undo/delete a pending modification on Amazon Aurora RDS?
我正在确定我的 Aurora RDS 实例上允许的 90 个连接总数,现在我拥有比以前更多的重型站点。 我决定升级实例并且我这样做了,但是将升级挂起直到下一次维护 window,而不考虑将只读副本添加到集群中。 我已经添加了副本,一切都很好。 我想取消从 db.t2.medium Aurora 到 db.r3.large Aurora 实例的挂起升级。 我找不到清除待定修改队列的方法。
我安装并配置了 AWS CLI。 我只是找不到有关清除待定修改队列的文档。 提前感谢大家。
正如@gileri 所描述的,现在有一种方法可以撤消挂起的修改。
我使用 RDS/Aurora 实例对其进行了多次测试,即使没有--apply-immediately
参数(至少对于实例类修改而言),它也能按预期工作。
让我们将名为database-2-instance-1
的 Aurora 实例的实例类从db.t3.medium
为db.r4.large
,然后再次撤消它。 这些命令都不会影响数据库的可用性。
注意:这里使用jq
只输出重要的部分。
$ aws rds describe-db-instances --db-instance-identifier database-2-instance-1 | jq '.DBInstances[].DBInstanceClass'
"db.t3.medium"
$ aws rds describe-db-instances --db-instance-identifier database-2-instance-1 | jq '.DBInstances[].PendingModifiedValues'
{}
此修改将导致在下一个维护窗口中更改实例类。
$ aws rds modify-db-instance --db-instance-identifier database-2-instance-1 --db-instance-class db.r4.large | jq '.DBInstance.PendingModifiedValues'
{
"DBInstanceClass": "db.r4.large"
}
为确定起见,请检查一切是否符合预期。
$ aws rds describe-db-instances --db-instance-identifier database-2-instance-1 | jq '.DBInstances[].PendingModifiedValues'
{
"DBInstanceClass": "db.r4.large"
}
这是将实例类修改回旧值的重要部分。 该文档描述了--apply-immediately
是必需的,但事实证明并非如此。 至少在这个例子中。
$ aws rds modify-db-instance --db-instance-identifier database-2-instance-1 --db-instance-class db.t3.medium | jq '.DBInstance.PendingModifiedValues'
{}
$ aws rds describe-db-instances --db-instance-identifier database-2-instance-1 | jq '.DBInstances[].PendingModifiedValues'
{}
此时挂起的修改消失了。
没有记录的方法可以取消挂起的修改。
但请注意,在 Aurora 集群上,主节点并没有您想象的那么重要。 它与其他设置不同,因为您的数据实际上并不存在于主实例上——它存在于 Aurora 集群卷上,它不属于任何实例——并且副本与物理数据存储的关系不同于传统的复制。
创建 Amazon Aurora 实例时,您创建了一个数据库集群。 一个数据库集群由一个或多个数据库实例和一个管理这些实例数据的集群卷组成。 Aurora 集群卷是跨越多个可用区的虚拟数据库存储卷,每个可用区都有一个数据库集群数据的副本。
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Overview.html
因此,节点不保存数据——它是独立的,这是 Aurora 内部的强大功能之一。 事实上,Aurora 副本没有自己的数据副本,因此在某些严格/文字/迂腐的意义上,它们在技术上甚至不是正确的“副本” (尽管该术语仍在使用)——它们只是被读取- 只有集群中的节点。
因此,您可能只需使用故障转移进行重新启动,这会将另一个实例(您的新副本)切换为主实例。 然后创建一个新的副本并销毁原始实例。
请注意,如果您在 aurora 集群中有副本,则需要使用集群端点连接到写入节点或读取节点之一,因为如果您的写入节点(“主节点”)出现故障,Aurora 通常会交换角色(或者可能总是交换角色,尽管可能存在不交换的情况)。 你可能已经在这样做了。
检查您的待定修改:
# aws --profile example_profile rds describe-db-clusters --db-cluster-identifier example_globalcluster --region example_region | jq '.DBClusters[].PendingModifiedValues'
{
"EngineVersion": "12.7"
}
接下来,停止全局数据库(这将因此停止编写器节点或您拥有的任何设置)并再次检查挂起的修改:
# aws --profile example_profile rds describe-db-clusters --db-cluster-identifier example_globalcluster --region example_region | jq '.DBClusters[].PendingModifiedValues'
null
当您再次启动全局数据库时,您会看到那些挂起的修改都消失了。 我现在设法解决了这个问题两次。
文档中提到,
如果您不希望在下一个维护时段应用挂起的更改,您可以修改数据库实例以使用 AWS CLI 恢复更改并指定 --apply-immediately 选项。
但是,请注意--apply-immediately将导致实例重新启动,即使您正在恢复更改并且 rds 可能会关闭大约一分钟。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.