您如何 remove/undo/delete Amazon Aurora RDS 上的待定修改?
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。我只是找不到有关清除待定修改队列的文档。在此先感谢大家。
没有记录的方法来取消挂起的修改。
不过请注意,在 Aurora 集群上,master 扮演的角色并不像您想象的那么重要。它与其他设置不同,因为您的数据实际上并不存在于主实例上——它存在于不属于任何实例的 Aurora 集群卷上——并且副本与物理数据存储的关系与传统的不同复制。
When you create an Amazon Aurora instance, you create a DB cluster. A DB cluster consists of one or more DB instances, and a cluster volume that manages the data for those instances. An Aurora cluster volume is a virtual database storage volume that spans multiple Availability Zones, with each Availability Zone having a copy of the DB cluster data.
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Overview.html
因此,节点不保存数据 -- 它是独立的,这是 Aurora 内部的强大功能之一。事实上,Aurora 副本没有自己的数据副本,所以在某种 strict/literal/pedantic 意义上,它们在技术上什至不正确 "replicas"(尽管术语仍在使用)——它们只是集群中的只读节点。
因此,您可能只需要使用故障转移进行重启,这将切换另一个实例(您的新副本)成为主实例。然后创建一个新的副本并销毁原始实例。
请注意,如果您在极光集群中有副本,则需要使用 cluster endpoints 连接到写入器节点或 reader 节点之一,因为如果您的写入器 ("master") 失败,Aurora 通常会交换角色(或者可能 always 交换角色,尽管可能存在不交换角色的情况)。您可能已经在这样做了。
因为 February 2019, it is documented 您可以取消此类待定修改。
我已经用待处理的数据库实例 class 修改对此进行了测试。
If you don't want a pending change to be applied in the next maintenance window, you can modify the DB instance to revert the change using the AWS CLI and specify the --apply-immediately option.
正如@gileri 所描述的,现在有一种方法可以撤消挂起的修改。
我用 RDS/Aurora 个实例对其进行了多次测试,它按预期工作,即使没有 --apply-immediately
参数(至少对于实例 class 修改)。
完整示例
让我们将名为 database-2-instance-1
的 Aurora 实例的实例 class 从 db.t3.medium
更改为 db.r4.large
,然后再次撤消。 None 这些命令会影响数据库的可用性。
注意:这里使用jq
只输出重要部分
检查实例class
$ 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'
{}
修改实例class
本次修改会导致下一次维护class实例变更window。
$ 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"
}
撤消对实例的修改class
这是将实例 class 修改回旧值的重要部分。文档描述了 --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'
{}
此时挂起的修改已经消失。
文档中提到,
If you don't want a pending change to be applied in the next maintenance window, you can modify the DB instance to revert the change using the AWS CLI and specify the --apply-immediately option.
但是,请注意 --apply-immediately 将导致实例重启,即使您正在还原更改并且 rds 可能会关闭大约一分钟。
我正在计算我的 Aurora RDS 实例上允许的 90 个连接总数,现在我拥有比以前更多的重型站点。我决定升级实例并且我这样做了,但是将升级挂起直到下一次维护 window,而不考虑将只读副本添加到集群中。我已经添加了副本,一切都很好。我想取消从 db.t2.medium Aurora 到 db.r3.large Aurora 实例的挂起升级。我找不到清除待定修改队列的方法。
我安装并配置了 AWS CLI。我只是找不到有关清除待定修改队列的文档。在此先感谢大家。
没有记录的方法来取消挂起的修改。
不过请注意,在 Aurora 集群上,master 扮演的角色并不像您想象的那么重要。它与其他设置不同,因为您的数据实际上并不存在于主实例上——它存在于不属于任何实例的 Aurora 集群卷上——并且副本与物理数据存储的关系与传统的不同复制。
When you create an Amazon Aurora instance, you create a DB cluster. A DB cluster consists of one or more DB instances, and a cluster volume that manages the data for those instances. An Aurora cluster volume is a virtual database storage volume that spans multiple Availability Zones, with each Availability Zone having a copy of the DB cluster data.
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Overview.html
因此,节点不保存数据 -- 它是独立的,这是 Aurora 内部的强大功能之一。事实上,Aurora 副本没有自己的数据副本,所以在某种 strict/literal/pedantic 意义上,它们在技术上什至不正确 "replicas"(尽管术语仍在使用)——它们只是集群中的只读节点。
因此,您可能只需要使用故障转移进行重启,这将切换另一个实例(您的新副本)成为主实例。然后创建一个新的副本并销毁原始实例。
请注意,如果您在极光集群中有副本,则需要使用 cluster endpoints 连接到写入器节点或 reader 节点之一,因为如果您的写入器 ("master") 失败,Aurora 通常会交换角色(或者可能 always 交换角色,尽管可能存在不交换角色的情况)。您可能已经在这样做了。
因为 February 2019, it is documented 您可以取消此类待定修改。 我已经用待处理的数据库实例 class 修改对此进行了测试。
If you don't want a pending change to be applied in the next maintenance window, you can modify the DB instance to revert the change using the AWS CLI and specify the --apply-immediately option.
正如@gileri 所描述的,现在有一种方法可以撤消挂起的修改。
我用 RDS/Aurora 个实例对其进行了多次测试,它按预期工作,即使没有 --apply-immediately
参数(至少对于实例 class 修改)。
完整示例
让我们将名为 database-2-instance-1
的 Aurora 实例的实例 class 从 db.t3.medium
更改为 db.r4.large
,然后再次撤消。 None 这些命令会影响数据库的可用性。
注意:这里使用jq
只输出重要部分
检查实例class
$ 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'
{}
修改实例class
本次修改会导致下一次维护class实例变更window。
$ 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"
}
撤消对实例的修改class
这是将实例 class 修改回旧值的重要部分。文档描述了 --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'
{}
此时挂起的修改已经消失。
文档中提到,
If you don't want a pending change to be applied in the next maintenance window, you can modify the DB instance to revert the change using the AWS CLI and specify the --apply-immediately option.
但是,请注意 --apply-immediately 将导致实例重启,即使您正在还原更改并且 rds 可能会关闭大约一分钟。