如何在不停机的情况下更改 AWS-RDS 实例类型?

Posted

技术标签:

【中文标题】如何在不停机的情况下更改 AWS-RDS 实例类型?【英文标题】:How to change AWS-RDS instance type without downtime? 【发布时间】:2019-07-09 12:44:39 【问题描述】:

我正在使用 AWS-RDS(Aurora mysql5.6),它是一个集群,它有一个写入器实例和一个读取器实例。我发现每个实例在更改其类型时都会停机近 10 分钟,这是不可接受的,我应该怎么做才能避免停机?

这里有更多详细信息:

将类型从 db.t2.small 更改为 db.t2.medium 引擎版本:5.6.10a 可用内存:300M 数据库连接数(计数):~400 CPU 利用率(百分比):~20%

【问题讨论】:

【参考方案1】:

不要更改当前 writer 实例的类型,而是添加一个具有所需实例类型的新 writer:

    将具有所需新实例类型(例如 db.t2.medium)的 Aurora 读取器添加到集群。确保为读取器分配最佳优先级,以便在故障转移期间将其提升为写入器(有关更深入的信息,请参阅Aurora Documentation)。 等到新实例启动并运行。 然后对集群进行故障转移,以便将新读取器提升为写入器。 最后删除之前旧实例类型的Aurora实例。

这样您将几乎没有停机时间。

如果你想改变 reader 实例的类型:

    添加具有所需新实例类型的 Aurora 阅读器。 等到它启动并运行。 删除之前的阅读器实例。

【讨论】:

作家实例怎么样? 为了澄清,我在答案中添加了作者和读者之间的区别。 @troy 答案对您的问题有帮助吗?如果是的话,如果你接受答案就好了。 为什么需要添加新的reader?始终建议添加操作,但如果我直接更改现有阅读器的类型会出现什么问题?此时仍可访问 Writer。 4) 是的,故障转移期间由于读/写重启而停机时间很短。如果您还没有这样做,我建议您查看RDS Proxy。由于 DNS 传播缓慢,它可以减少客户端应用程序的停机时间。关于它有一个很好的introduction article,它显示使用 RDS 代理时,平均故障转移恢复时间从 24 秒加快到 3 秒。

以上是关于如何在不停机的情况下更改 AWS-RDS 实例类型?的主要内容,如果未能解决你的问题,请参考以下文章

JAVA如何在不复制新实例引用的情况下更改实例字段值[重复]

使用集群自动缩放器时如何在不停机的情况下实现节点的优雅终止?

如何在不停机的情况下更新和 ECS 服务添加一个额外的负载平衡服务与之对话?

拆分数据数据类型后的Spark RDD如何在不更改数据类型的情况下拆分

如何不停机将数百个 ZooKeeper 实例迁移到 Kubernetes

如何在不影响现有列宽的情况下更改列数据类型