我在 RDS 和 Cloud SQL 之间犹豫不决的原因是,如果我将 Cloud SQL 实例设置为具有只读副本的高可用性,计划维护将如何发生。在阅读了几个小时的 SO 和文档后,我相信即使在 HA 实例的情况下,您也可能因计划维护而遇到中断,因此您无法将任何设置/策略设置为几乎 100% 的正常运行时间,这与 AWS RDS 不同,您可以在 AWS RDS 中为副本设置不同的维护窗口。
我说的对吗?如果没有,如何实现与 AWS 相同的目标?如果我是,这种行为背后的理由是什么?如果您不能保证服务始终可访问,您甚至应该如何将服务迁移到 GCP?如果 HA 也有停机时间,它有什么意义?
只读副本既不提供高可用性,也不提供高可用性,恐怕它们也不支持维护窗口。这在云 SQL 常见问题解答以及其他信息中进行了说明。
在公共问题跟踪器上打开了关于此的功能请求 这里 和 这里 - 您可以通过单击星形按钮来表达您的兴趣。
进行计划维护时,首先在只读副本上执行操作,然后在主实例上执行操作。Cloud SQL尝试始终保持其中一个运行,但这不能保证,可能会发生变化,您不应该依赖它。
如果可用性对您至关重要,您最好改用Cloud Spanner,它提供99.999%的可用性SLA。
我自己没有亲身经历过这种情况,但根据 Stefan G 的指针,Google Cloud SQL 存在未解决的问题,尽管有 HA 导致维护窗口期间停机:
高可用性等同于多可用区 SQL 实例。因此,当您设置此选项时,主实例在一个区域中运行,辅助实例在另一个区域中运行。因此,当云中的维护时段启动时,sql应自动故障转移到其他可用区,并且你的应用/用户不应受到影响。但是,有一些报告的事件表明 Cloud SQL 导致停机(请参阅下面的编辑注释(。
另一方面,只读副本可帮助您从主实例卸载流量,它不会为您提供冗余。
没有托管 SQL 提供 100% 正常运行时间保证。RDS Aurora 提供 99.99%。另一方面,Cloud SQL提供99.95%的正常运行时间保证,相当于停机时间不超过每天:43.2秒。每周:5 分钟 2.4 秒。每月:21 分 54.9 秒。
我们使用Cloud SQL,它足够可靠,维护窗口期间的升级是无缝的。
希望这有帮助。
GCP 有很好的维护步骤文档。 HA仅用于计划外的愤怒
https://cloud.google.com/sql/docs/mysql/maintenance#pre-maintenance