如何将 AWS RDS Aurora MySQL 5.6 升级到 5.7

Posted

技术标签:

【中文标题】如何将 AWS RDS Aurora MySQL 5.6 升级到 5.7【英文标题】:How to upgrade AWS RDS Aurora MySQL 5.6 to 5.7 【发布时间】:2018-07-18 03:50:45 【问题描述】:

我们将 AWS RDS Aurora mysql 5.6 用于我们的生产数据库。 AWS 于 2018 年 2 月 6 日推出了兼容 MySQL 5.7 的 Aurora 引擎。

我在“修改实例”中没有看到任何将引擎更改为 MySQL 5.7 的选项 我也没有看到使用 MySQL 5.7 将快照还原到数据库的任何选项。

我们希望以最少的停机时间进行此升级。请建议在这里可以做什么。

【问题讨论】:

这有什么更新吗?您经历了多少停机时间? 现在他们在恢复快照时添加了 5.7 的选项,但您不能直接升级现有的 5.6 数据库。停机时间取决于您要从快照恢复的数据库大小。 【参考方案1】:

根据this link,您无法升级就地数据库,您需要恢复现有数据库的快照并在此过程中更改引擎版本。这些限制似乎只是暂时的,可能会在以后取消以允许就地升级

【讨论】:

限制似乎仍然存在 有没有人尝试过这种方法,如果有,有什么陷阱吗?我扫描了5.7 upgrade guide 并没有发现我当前的 5.6 实现。但是,例如,这种方法是否需要我使用不同的主机 URL 启动第二个数据库实例? 这里有一个AWS RDS MySQL Upgrade guide,描述了一些关于从快照升级到 5.7 的额外细节;我仍然不清楚是否需要将我的应用程序指向一个新实例。 本指南适用于不同于 Aurora 的 RDS。【参考方案2】:

上面的cmets都是真的; 5.6 到 5.7 仍然没有就地升级;不过这个过程还是很简单的;

1) 转到 RDS 仪表板,在左侧菜单中有一个名为“快照”的菜单项;如果您可以使用最近的快照,您可以单击此按钮;否则选择您的数据库并在操作下拉列表中选择“拍摄快照”

2) 在快照中,只需选择您的快照并从操作下拉菜单中选择“恢复快照”;它会自动复制一堆你以前的设置。这个时候就可以选择5.7的新数据库引擎了

您应该为整个过程留出至少半小时的停机时间。为了安全起见,可能需要几个小时。

【讨论】:

如果 a) 您可以接受停机时间并且 b) 您的数据库相对较小,这应该很容易。 是的,虽然停机时间通常与关系数据库的架构更改同义,但您不是说吗?不要认为这是 RDS 特有的。您不必停机,快照部分非常快;但是您可能应该在进行架构更改时拒绝客户端。大小似乎不是问题,当然会影响停机时间;我们在大约半小时内迁移了几百万条记录。 架构更改绝对不意味着停机!使用 pt-online-schema-change 或 gh-ost 之类的工具。 叶;绝对不会质疑是否可以在不停机的情况下更改模式的可行性;而是实际意义。例如。您可能已经协调了一些事情的时间安排,例如部署使用所述新模式的新代码库和任何数量的其他相关激活阶段;同时让您的网站用户实时访问?【参考方案3】:

您现在可以执行从 Aurora MyQSL 从 5.6 到 5.7 的就地升级

只需调用modify-db-cluster 或modify-global-cluster(当然,如果您使用的是全局集群)。

docs 中的更多信息(包括如何使用 AWS 控制台执行此操作)。

【讨论】:

是的,现在可行。以防有人使用 terraform 来创建您的基础设施。这可能会有所帮助。 medium.com/hashicorp-engineering/… 谢谢【参考方案4】:

最简单的方法是:

    首先手动拍摄 Aurora MySQL 5.6 集群的快照。

    然后,使用在步骤 1 中拍摄的手动快照创建一个新的 Aurora MySQL 5.7

    您的凭据将与旧 5.6 集群的凭据相同。

    验证数据是否正确。

【讨论】:

【参考方案5】:

需要将 AWS RDS Aurora MySQL 从 5.6 升级到 5.7,而不会对我们的生产造成任何停机。作为 SaaS 解决方案,我们无法承受任何停机时间。

背景

我们拥有基于在 AWS Fargate 和 AWS Lambda 中运行的微服务的分布式架构。对于数据持久性,使用 AWS RDS Aurora MySQL。虽然使用了其他服务,但这些服务在此用例中并不感兴趣。

接近

在通过宣布停机时间和维护窗口对就地升级进行深思熟虑之后,我们意识到零停机升级是必要的。如果没有它,我们将为我们创建一个处理积压。 高级方法是:

    创建一个具有所需版本的 AWS RDS 集群,并将现有 RDS 集群中的数据复制到这个新集群中 在这两个集群之间设置 AWS DMS(数据迁移服务) 复制完成并正在进行后,切换应用程序以指向新数据库。在我们的案例中,在 AWS Fargate 中运行的微服务必须使用新的端点进行升级,并且它负责排空旧的并使用新的。

完整帖子请查看

https://bharatnainani1997.medium.com/aws-rds-major-version-upgrade-with-zero-downtime-5-6-to-5-7-b0aff1ea1f4

【讨论】:

【参考方案6】:

管理数据库实例或数据库集群的更新

登录 AWS 管理控制台并通过 https://console.aws.amazon.com/rds/ 打开 Amazon RDS 控制台。

在导航窗格中,选择 Instances 来管理数据库实例的更新,或选择 Clusters 来管理 Aurora 数据库集群的更新。

选中需要更新的数据库实例或数据库集群的复选框。

为数据库实例选择实例操作,或为数据库集群选择操作,然后选择以下选项之一:

立即升级

在下一个窗口升级

注意:如果您在下一个窗口选择升级,以后想延迟更新,您可以选择延迟升级。

【讨论】:

问题是关于从 aurora mysql 5.6 升级到 5.7 - 这实际上是不可能的。

以上是关于如何将 AWS RDS Aurora MySQL 5.6 升级到 5.7的主要内容,如果未能解决你的问题,请参考以下文章

Terraform,AWS RDS aurora mysql serverless 异常“找不到源集群”

AWS RDS Aurora - 如何使用 PgAdmin 进行连接?

导入 AWS RDS Aurora 5.7 是不是适用于 v0.11.7?

如何将 DynamoDb 迁移到 RDS (Aurora)

AWS Aurora MySQL 无服务器:如何从 MySQL Workbench 连接

AWS-CLI:在从快照创建的现有集群中创建 RDS Aurora 数据库实例