我想升级 Amazon Relational Database Service(Amazon RDS)for MySQL 的版本。我想知道如何执行升级以及哪些因素会影响升级时间。
解决方法
执行 Amazon RDS for MySQL 版本升级
要手动升级 RDS 数据库实例的引擎版本,请使用 AWS 管理控制台、AWS 命令行界面(AWS CLI)或 Amazon RDS API。
**注意:**如果您在运行 AWS CLI 命令时收到错误,确保使用的是最新版本的 AWS CLI。
有关升级过程的概述,请参阅升级 RDS for MySQL 数据库引擎。
Amazon RDS for MySQL 升级时间
升级过程的持续时间取决于升级类型、数据和可用资源。最佳做法是先在单独的测试实例上测试升级,以了解大概的升级持续时间。您还可以使用快照恢复或只读副本启动主要或次要升级的测试实例。有关主要版本和次要版本升级的详细信息,请参阅 RDS for MySQL 的主要版本升级和 RDS for MySQL 的次要版本自动升级。
**提示:**为尽量缩短升级停机时间,请采用蓝绿部署进行数据库更新。
可能影响升级持续时间的因素
所有版本升级
启用备份后,当实例仍运行以前的版本时,Amazon RDS 会拍摄快照。如果 Amazon RDS 找不到任何最近的备份,则 Amazon RDS 将在升级过程中拍摄完整的快照。变更的大小决定了完成升级所需的时间。但是,当 Amazon RDS 拍摄快照时,您的实例可以继续接受流量。
备份完成后,实例将关闭。然后,MySQL 在已停用的网络上运行新的引擎版本,以防止任何远程连接。
**注意:**如果您正在执行主要版本升级,则关闭时间可能更长。
仅限主要版本升级
为了缓慢关闭,Amazon RDS 会将 innodb_fast_shutdown 参数值设置为 0。此模式会执行额外的刷新,例如合并更改缓冲区和对已删除的行进行完全清除。根据恢复的数据量,缓慢关闭可能需要几分钟或几个小时。更改缓冲区较大或历史记录列表较长的数据库的缓慢关闭可能需要的时间更长。
有关详细信息,请参阅 MySQL 网站上的以下文档:
mysql_upgrade 程序在 MySQL 数据库上运行,将系统表和用户表转换为新版本。根据表的状态,您可能需要创建表以符合新版本的要求。大多数情况下,您无需进行更改。mysql_upgrade 程序会更新表中的元数据,以表明数据库已升级。如果您的表数量较多,则 Amazon RDS for MySQL 可能需要更长的时间才能完成主要版本升级。有关详细信息,请参阅 MySQL 网站上的 mysql_upgrade:检查和升级 MySQL 表。
在版本 5.7 的主要升级期间,Amazon RDS for MySQL 会重建您的一些表。所有日期和时间列类型均将转换为新格式。根据表中的数据量,转换可能需要几个小时到几天的时间。有关详细信息,请参阅升级到 MySQL 版本 5.7 可能会很慢。
MySQL 8.0 有几处与 MySQL 5.7 不兼容之处。在从 MySQL 5.7 升级到 MySQL 8.0 的过程中,这些不兼容性可能会导致问题。为确保升级成功,您可能需要准备数据库。有关详细信息,请参阅从 MySQL 5.7 升级到 8.0 的预检。
当您开始从 MySQL 5.7 升级到 8.0 时,Amazon RDS 会自动运行预检,以检测这些不兼容性问题。这些预检是强制性的。有关信息,请参阅 MySQL 网站上的升级 MySQL。
注意:
- 从 MySQL 5.7 升级到 MySQL 8.0 时,Amazon RDS 会运行所有升级预检。
- 从 MySQL 5.6 升级到 MySQL 5.7 时,Amazon RDS 会运行预检,以确认有足够的存储空间来重建表。Amazon RDS 还会运行预检以确认没有孤表。
- 升级到 MySQL 5.7 之前的版本时,Amazon RDS 不会进行预检。
- 最佳做法是制定回滚计划,以防主要版本升级失败。
- 要检查表中是否存在问题,最佳做法是执行 mysqlcheck。但是,表维护操作可能会消耗大量时间和资源,对于大型表尤其如此。有关详细信息,请参阅 MySQL 网站上的 mysqlcheck: 表格维护程序。
相关信息
升级数据库实例引擎版本
升级 Amazon RDS for MySQL 和 Amazon RDS for MariaDB 的最佳做法
Amazon RDS 上的 MySQL 版本