【问题标题】:How do you remove/undo/delete a pending modification on Amazon Aurora RDS?如何删除/撤消/删除 Amazon Aurora RDS 上的待处理修改?
【发布时间】:2019-01-11 17:51:38
【问题描述】:

我的 Aurora RDS 实例上允许的总连接数为 90 个,现在我拥有比以前更多的重型站点。我决定升级实例并且我这样做了,但是将升级设置为挂起,直到下一个维护窗口,没有考虑将只读副本添加到集群中。我已经添加了副本,一切都很好。我想取消从 db.t2.medium Aurora 到 db.r3.large Aurora 实例的挂起升级。我找不到清除待处理修改队列的方法。

我已经安装并配置了 AWS CLI。我只是找不到有关清除待处理修改队列的文档。在此先感谢大家。

【问题讨论】:

  • 这是不可能的。你应该为此打开一个支持案例。
  • 解决方法是每 7 天推迟 7 天 :)

标签: amazon-web-services amazon-ec2 amazon-aurora


【解决方案1】:

文档中提到,

如果您不希望在下一个维护时段应用待处理的更改,您可以使用 AWS CLI 修改数据库实例以恢复更改并指定 --apply-immediately 选项。

但是,请注意 --apply-immediately 将导致实例重新启动,即使您正在恢复更改并且 rds 可能会关闭大约一分钟。

【讨论】:

  • do note that --apply-immediately will result in a reboot 这不是真的。我对其进行了多次测试,但在还原更改时无法确认实例是否重启。
【解决方案2】:

正如@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'
{}

此时挂起的修改已经消失。

【讨论】:

  • 这太棒了...我试过了,效果很好...感谢上面的解决方案...非常整洁!!!
【解决方案3】:

由于February 2019,所以documented 可以取消此类待修改的修改。 我已经使用待处理的数据库实例类修改对此进行了测试。

如果您不希望在下一个维护时段应用待处理的更改,您可以使用 AWS CLI 修改数据库实例以恢复更改并指定 --apply-immediately 选项。

【讨论】:

    【解决方案4】:

    没有记录的方法可以取消挂起的修改。

    但请注意,在 Aurora 集群上,主节点所扮演的角色并不像您想象的那么重要。它与其他设置不同,因为您的数据实际上并不存在于主实例上——它存在于不属于任何实例的 Aurora 集群卷上——并且副本与物理数据存储的关系与传统的不同复制。

    当您创建 Amazon Aurora 实例时,您将创建一个数据库集群。一个数据库集群由一个或多个数据库实例和一个管理这些实例数据的集群卷组成。 Aurora 集群卷是跨多个可用区的虚拟数据库存储卷,每个可用区都有一个数据库集群数据的副本。

    https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Overview.html

    因此,节点不保存数据 - 它是独立的,这是 Aurora 内部的强大功能之一。事实上,Aurora 副本没有自己的数据副本,因此在某种严格/字面/迂腐的意义上,它们在技术上甚至不是正确的“副本”(尽管仍然使用该术语) -- 它们只是集群中的只读节点。

    因此,您可能只需使用故障转移进行重新启动,这会将另一个实例(您的新副本)切换为主实例。然后创建一个新副本并销毁原始实例。

    请注意,如果您在 Aurora 集群中有副本,则需要使用 cluster endpoints 连接到写入器节点或读取器节点之一,因为如果您的写入器(“master”)失败,Aurora 通常会交换角色(或者可能总是交换角色,尽管在某些情况下可能不会)。你可能已经这样做了。

    【讨论】:

    • 谢谢,这是一些非常好的上下文和好的解决方案。我确实从一开始就使用了集群端点,甚至在我添加副本之前。从一开始就做正确的事,一次;)
    • 优秀。 :) 另外,我添加了另一个链接到文档,其中更详细地解释了 Aurora 集群卷。控制台似乎通过同时创建集群和主服务器来隐藏其中的一些内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 2016-12-04
    • 2019-07-21
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多