Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

将 MySQL 数据库引擎

如果 Amazon Relational Database Service (Amazon RDS) 支持数据库引擎的新版本,您可以将您的数据库实例升级到新版本。有两种升级方式:主要版本升级和次要版本升级。

MySQL 的主要版本升级

Amazon RDS 支持 MySQL 数据库引擎的以下主要版本就地升级:

  • MySQL 5.5 到 MySQL 5.6。

  • MySQL 5.6 到 MySQL 5.7。

注意

您只能使用当前一代数据库实例类和 M3 上一代数据库实例类创建 MySQL 版本 5.7 数据库实例。如果您想将在上一代数据库实例类 (M3 除外) 上运行的 MySQL 5.6 版数据库实例升级到 MySQL 5.7 版数据库实例,必须先修改数据库实例以使用当代数据库实例类。将数据库实例修改为使用当代数据库实例类后,您便可以将数据库实例修改为使用 MySQL 5.7 版数据库引擎。有关 Amazon RDS 数据库实例类的信息,请参阅 数据库实例类

主要版本升级会包含不与现有应用程序向后兼容的数据库更改。因此,Amazon Relational Database Service (Amazon RDS) 不会自动应用主要版本升级;您必须手动修改数据库实例。您应当在将任何升级应用于生产实例前全面测试这些升级。

要将 Amazon RDS 上的 MySQL 5.5 版数据库实例的主要版本升级到 MySQL 5.6 版或更高版本,您需要先执行所有可用的操作系统更新。在操作系统更新完成后,您必须升级至各个主要版本:5.5 到 5.6,然后 5.6 到 5.7。在 2014 年 4 月 24 日之前创建的 MySQL 数据库实例会显示可用的操作系统更新,直到更新安装完成。有关操作系统升级的更多信息,请参阅 更新数据库实例或数据库群集的操作系统

在 MySQL 的主要版本升级期间,如果需要的话,Amazon RDS 会运行 MySQL 二进制 mysql_upgrade 以便升级表。此外,Amazon RDS 会在主要版本升级期间清空 slow_loggeneral_log 表。要保留日志信息,请在升级主要版本之前保存日志内容。

MySQL 主要版本升级通常在大约 10 分钟内完成。由于数据库实例类大小不同或由于实例未遵循针对 Amazon RDS 的最佳实践中的特定操作指南,某些升级过程可能需要更长时间。如果您从 Amazon RDS 控制台升级数据库实例,则数据库实例的状态会标明升级完成的时间。如果您使用 AWS Command Line Interface (AWS CLI) 进行升级,请使用 describe-db-instances 命令,并选中 Status 值。

升级到 MySQL 5.7 版的速度可能较慢

MySQL 5.6.4 版引入了 datetimetimetimestamp 列的新的日期和时间格式,这将允许日期和时间值包含小数部分。在将数据库实例升级到 MySQL 5.7 版时,MySQL 会强制性将所有日期和时间列类型转换为新格式。由于此转换会重新构建表,因此完成数据库实例升级可能需要耗费大量时间。对于任何正在运行 MySQL 5.6.4 版之前的版本的数据库实例以及任何已从 MySQL 5.6.4 版之前的版本升级到 5.7 版之外的版本的数据库实例,将强制实施此转换。

如果数据库实例运行的是 MySQL 5.6.4 版之前的版本或已从 MySQL 5.6.4 版之前的版本升级,则建议您先转换数据库中的 datetimetimetimestamp 列,然后再将数据库实例升级到 MySQL 5.7 版。此转换可大大减少将数据库实例升级到 MySQL 5.7 版所需的时间。要将日期和时间列升级到新格式,请对每个包含日期或时间列的表发出 ALTER TABLE <table_name> FORCE; 命令。由于修改表会将表锁定为只读状态,因此我们建议您在维护时段内执行此更新。

您可以使用以下查询来查找数据库中所有具有 datetime、time 或 timestamp 类型的列的表,并为每个表创建一条 ALTER TABLE <table_name> FORCE; 命令:

Copy
SELECT DISTINCT CONCAT('ALTER TABLE `', REPLACE(is_tables.TABLE_SCHEMA, '`', '``'), '`.`', REPLACE(is_tables.TABLE_NAME, '`', '``'), '` FORCE;') FROM information_schema.TABLES is_tables INNER JOIN information_schema.COLUMNS col ON col.TABLE_SCHEMA = is_tables.TABLE_SCHEMA AND col.TABLE_NAME = is_tables.TABLE_NAME LEFT OUTER JOIN information_schema.INNODB_SYS_TABLES systables ON SUBSTRING_INDEX(systables.NAME, '#', 1) = CONCAT(is_tables.TABLE_SCHEMA,'/',is_tables.TABLE_NAME) LEFT OUTER JOIN information_schema.INNODB_SYS_COLUMNS syscolumns ON syscolumns.TABLE_ID = systables.TABLE_ID AND syscolumns.NAME = col.COLUMN_NAME WHERE col.COLUMN_TYPE IN ('time','timestamp','datetime') AND is_tables.TABLE_TYPE = 'BASE TABLE' AND is_tables.TABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema') AND (is_tables.ENGINE = 'InnoDB' AND syscolumns.MTYPE = 6);

MySQL 的次要版本升级

次要版本升级仅在次要升级替换不安全的版本时自动进行 (如包含针对上一个版本的错误修复的次要升级)。在所有其他情况下,您必须手动修改数据库实例才能执行次要版本升级。

在将公告发布到论坛公告页面并发送客户电子邮件通知之前,我们不会自动更新 Amazon RDS 数据库实例。即使在实例维护时段进行升级,我们仍会在一年中的特定时间安排升级。我们会安排升级,以便您对其进行规划,因为升级数据库引擎版本需要停机时间,即便是多可用区实例也是如此。

测试升级

在数据库实例上执行主要版本升级前,应该彻底地测试数据库以及访问该数据库的所有应用程序,了解是否与新版本兼容。我们建议您使用以下过程。

测试主要版本升级

  1. 检查新版数据库引擎的升级文档以了解是否存在可能会影响数据库或应用程序的兼容性问题:

  2. 如果您的数据库实例是自定义数据库参数组的成员,就必须使用兼容新主要版本的现有设置创建一个新的数据库参数组。在升级测试实例时,应指定新的数据库参数组,以便升级测试确保其运行正常。有关创建数据库参数组的详细信息,请参阅 使用数据库参数组

  3. 为要升级的数据库实例创建数据库快照。有关更多信息,请参阅 创建数据库快照

  4. 恢复数据库快照,以便创建一个新的测试数据库实例。有关更多信息,请参阅 从数据库快照中还原

  5. 使用下方详细介绍的某种方法,修改此新测试数据库实例以将其升级到新版本。如果您在步骤 2 中创建了一个新的参数组,则指定该参数组。

  6. 计算升级的实例使用的存储容量以决定升级是否需要额外的存储容量。

  7. 对升级的数据库实例运行所需次数的质量保证测试以确保数据库和应用程序可正常使用新版本。实施任何必需的新测试,评估您在步骤 1 中发现的任何兼容性问题的影响。测试所有的存储过程和功能。将应用程序的测试版本指向所升级的数据库实例。

  8. 如果所有测试通过,那么请在生产数据库实例上执行升级。我们建议您直到确认一切正常后,再允许对数据库实例执行写入操作。

升级 MySQL 数据库,减少了停机时间

如果 MySQL 数据库实例当前与生产应用程序结合使用,则可使用以下过程来升级数据库实例的数据库版本并减少应用程序的停机时间。此过程显示了从 MySQL 5.5 版升级到 MySQL 5.6 版的示例。

在使用数据库实例时升级 MySQL 数据库

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 创建 MySQL 5.5 数据库实例的只读副本。此过程可创建数据库的可升级副本。

    1. 在控制台上,选择 Instances,然后选择您要升级的数据库实例。

    2. 选择 Instance Actions,然后选择 Create Read Replica

    3. 为只读副本提供 DB Instance Identifier 的值并确保数据库实例 Class 和其他设置与 MySQL 5.5 数据库实例匹配。

    4. 选择 Yes, Create Read Replica

  3. 在已创建只读副本并且 Status 显示为 available 之后,将只读副本升级到 MySQL 5.6。

    1. 在控制台上,选择 Instances,然后选择您刚才创建的只读副本。

    2. 选择 Instance Actions,然后选择 Modify

    3. 对于 DB Engine Version,选择 MySQL 5.6 版,然后选择 Apply Immediately。选择 Continue

    4. 选择 Modify DB Instance 开始升级。

  4. 升级完成并且 Status 显示为 available 之后,验证升级的只读副本是否随主 MySQL 5.5 数据库实例保持最新。为此,您可以连接到只读副本并发出 SHOW SLAVE STATUS 命令。如果 Seconds_Behind_Master 字段为 0,则复制保持最新。

  5. 将 MySQL 5.6 只读副本设为主数据库实例。

    重要

    将 MySQL 5.6 只读副本提升为独立的单可用区数据库实例后,它不再是 MySQL 5.5 数据库实例的从属复制。建议您在源 MySQL 5.5 数据库实例处于只读模式并且所有写入操作都暂停的维护时段期间,提升 MySQL 5.6 只读副本。提升完成之后,您可以将写入操作定向到已升级的 MySQL 5.6 数据库实例,以确保不会丢失写入操作。

    此外,建议您在提升 MySQL 5.6 只读副本之前,对 MySQL 5.6 只读副本执行所有必需的数据定义语言 (DDL) 操作,如创建索引。此方法可避免在 MySQL 5.6 只读副本提升之后对其性能造成任何负面影响。要提升只读副本,请使用以下过程:

    1. 在控制台上,选择 Instances,然后选择您刚才升级的只读副本。

    2. 选择 Instance Actions,然后选择 Promote Read Replica

    3. 为只读副本实例启用自动备份。有关更多信息,请参阅 使用备份

      选择 Continue

    4. 选择 Yes, Promote Read Replica

  6. 您现在有了 MySQL 数据库的升级版本。此时,您可以将应用程序定向到新的 MySQL 5.6 数据库实例,添加只读副本,设置多可用区支持等。

AWS 管理控制台

使用 AWS 管理控制台升级数据库实例的引擎版本

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 在导航窗格中,选择 Instances

  3. 选中与要升级的数据库实例对应的复选框。

  4. 选择 Instance Actions,然后选择 Modify

  5. 对于 DB Engine Version,选择新版本。

  6. 要立即升级,请选择 Apply Immediately。要将升级推迟到下一维护时段,请清除 Apply Immediately

  7. 选择 Continue

  8. 查看修改摘要信息。要继续进行升级,请选择 Modify DB Instance。要取消升级,请选择 CancelBack

CLI

要升级数据库实例的引擎版本,请使用 AWS CLI modify-db-instance 命令。指定以下参数:

  • --db-instance-identifier – 数据库实例的名称。

  • --engine-version – 数据库引擎要升级到的版本号。

  • --allow-major-version-upgrade – 升级主要版本。

  • --no-apply-immediately – 在下一维护时段内应用更改。要立即应用更改,请使用 --apply-immediately

针对 Linux、OS X 或 Unix:

Copy
aws rds modify-db-instance \ --db-instance-identifier <mydbinstance> \ --engine-version <new_version> \ --allow-major-version-upgrade \ --apply-immediately

对于 Windows:

Copy
aws rds modify-db-instance ^ --db-instance-identifier <mydbinstance> ^ --engine-version <new_version> ^ --allow-major-version-upgrade ^ --apply-immediately

API

要升级数据库实例的引擎版本,请使用 ModifyDBInstance 操作。指定以下参数:

  • DBInstanceIdentifier – 数据库实例的名称,例如 mydbinstance

  • EngineVersion – 数据库引擎要升级到的版本号。

  • AllowMajorVersionUpgrade – 设置为 true 可升级主要版本。

  • ApplyImmediately – 是立即应用更改还是在下一个维护时段内应用更改。要立即应用更改,请将该值设置为 true。要在下一个维护时段内应用更改,请将该值设置为 false

Copy
https://rds.us-east-1.amazonaws.com/ ?Action=ModifyDBInstance &ApplyImmediately=false &DBInstanceIdentifier=mydbinstance &EngineVersion=new_version &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2013-09-09 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20131016/us-east-1/rds/aws4_request &X-Amz-Date=20131016T233051Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=087a8eb41cb1ab5f99e81575f23e73757ffc6a1e42d7d2b30b9cc0be988cff97

相关主题