如何在最大限度减少停机时间的情况下执行 Amazon RDS for MySQL 版本升级?

1 分钟阅读
0

我想在最大限度减少停机时间的情况下执行 Amazon Relational Database Service (Amazon RDS) for MySQL 版本升级。

解决方案

**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

手动升级 Amazon RDS for MySQL 版本

手动升级 Amazon RDS 数据库实例的引擎版本,请使用 AWS 管理控制台、AWS CLI 或 Amazon RDS API。有关详细信息,请参阅升级 MySQL 数据库引擎

Amazon RDS for MySQL 升级时间

升级时间取决于升级类型、数据和可用资源。要估算升级时间,请在不同的测试实例上测试升级。要启动主要或次要升级的测试实例,您可以使用快照恢复或只读副本。有关详细信息,请参阅 MySQL 的主要版本升级MySQL 的自动次要版本升级。为尽量缩短升级停机时间,请使用蓝绿部署进行数据库更新

当您打开备份时,Amazon RDS 会为所有版本升级拍摄实例先前版本的快照。如果 Amazon RDS 找不到任何最近的备份,则 Amazon RDS 将在升级过程中拍摄完整的快照。更改的大小会影响您的升级时间。但是,当 Amazon RDS 拍摄快照时,您的实例可以继续接受流量。备份完成后,实例将关闭。然后,MySQL 在已停用的网络上运行新的引擎版本,以防止任何远程连接。

为了缓慢关闭,Amazon RDS 会将 innodb_fast_shutdown 参数值设置为 0。在缓慢关闭时,Amazon RDS 会合并更改缓冲区并完全清除已删除的行。根据恢复的数据量,缓慢关闭可能需要几分钟到几个小时。缓慢关闭具有较大更改缓冲区或较长历史记录列表的数据库可能需要更长的时间。有关详细信息,请参阅 MySQL 网站上的缓慢关闭innodb_fast_shutdown更改缓冲区清除

要将系统表和用户表转换为新版本,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 升级到 8.0 时,Amazon RDS 会自动运行预检,以检测不兼容性问题。有关信息,请参阅 MySQL 网站上的第 3 章:升级 MySQL

从 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 版本

AWS 官方
AWS 官方已更新 8 个月前