メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

MySQL DB エンジンのアップグレード

Amazon Relational Database Service (Amazon RDS) が新バージョンのデータベースエンジンをサポートすると、DB インスタンスをその新バージョンにアップグレードできます。アップグレードには、メジャーバージョンのアップグレードとマイナーバージョンのアップグレードの 2 種類があります。

MySQL のメジャーバージョンアップグレード

Amazon RDS では現在、MySQL データベースエンジンで以下のインプレースのメジャーバージョンのアップグレードがサポートされています。

  • MySQL 5.5 から MySQL 5.6 へ

  • MySQL 5.6 から MySQL 5.7 へ

注記

現行世代の DB インスタンスクラスと前世代 (M3) の DB インスタンスクラスでは、MySQL バージョン 5.7 DB インスタンスのみ作成できます。前世代 (M3 以外) の DB インスタンスクラスで実行されている MySQL バージョン 5.6 DB インスタンスを、MySQL バージョン 5.7 DB インスタンスをアップグレードする場合は、まず、現世代の DB インスタンスクラスを使用するように DB インスタンスを変更する必要があります。現世代の DB インスタンスクラスを使用するように DB インスタンスを修正すると、MySQL データベースエンジンバージョン 5.7 を使用するように DB インスタンスを変更できるようになります。Amazon RDS DB インスタンスクラスについては、「DB インスタンスクラス」を参照してください。

メジャーバージョンのアップグレードには、既存のアプリケーションとの下位互換性のないデータベースの変更が含まれる場合があります。このため、Amazon Relational Database Service (Amazon RDS) ではメジャーバージョンのアップグレードは自動的に適用されません。手動で DB インスタンスを変更する必要があります。本稼働インスタンスへの適用前に、いずれのアップグレードも徹底的にテストする必要があります。

Amazon RDS の MySQL バージョン 5.5 DB インスタンスを MySQL バージョン 5.6 以降にするメジャーバージョンアップグレードを実行するには、OS の更新があれば最初にそれを実行する必要があります。OS の更新が完了したら、それぞれのメジャーバージョン (5.5 から 5.6、5.6 から 5.7) にアップグレードする必要があります。2014 年 4 月 24 日以前に作成された MySQL DB は、更新が適用されるまで使用可能な OS の更新を表示します。OS 更新の詳細については、「DB インスタンスまたは DB クラスターのオペレーティングシステムの更新」を参照してください。

MySQL のメジャーバージョンアップグレード中、必要に応じて Amazon RDS によって MySQL バイナリ mysql_upgrade が実行されて、テーブルがアップグレードされます。また、メジャーバージョンアップグレード中に Amazon RDS によって slow_log および general_log テーブルが空にされます。ログ情報を保持するには、メジャーバージョンアップグレードの前にログファイルの内容を保存します。

MySQL のメジャーバージョンアップグレードは、通常約 10 分で完了します。一部のアップグレードでは、DB インスタンスクラスのサイズのため、またはインスタンスが「Amazon RDS のベストプラクティス」の運用ガイドラインに従っていないため、この時間が長くなることがあります。Amazon RDS コンソールから DB インスタンスをアップグレードする場合、アップグレードが完了すると、DB インスタンスのステータスが表示されます。AWS Command Line Interface (AWS CLI) を使用してアップグレードする場合は、describe-db-instances コマンドを使用し、Status 値を確認します。

MySQL バージョン 5.7 へのアップグレードは遅くなる場合があります。

MySQL バージョン 5.6.4 では、datetimetimetimestamp 列で、日付と時刻の値に小数部を使用できる新しい日付と時刻の形式が導入されました。DB インスタンスを MySQL バージョン 5.7 にアップグレードすると、MySQL はすべての日付と時刻の列のタイプを新しい形式に強制的に変換します。 この変換はテーブルを再作成するため、DB インスタンスのアップグレードを完了するのにかなりの時間がかかる場合があります。 この強制的な変換は、MySQL バージョン 5.6.4 以前のバージョンを実行している DB インスタンス、および MySQL バージョン 5.6.4 以前のバージョンから バージョン 5.7 以外のバージョンにアップグレードされた DB インスタンスのすべてに発生します。

DB インスタンスが MySQL バージョン 5.6.4 以前のバージョンを実行している場合、または MySQL バージョン 5.6.4 以前のバージョンからアップグレードされている場合、DB インスタンスを MySQL バージョン 5.7 にアップグレードする前に、データベースの datetimetime、および timestamp 列を変換することをお勧めします。この変換により MySQL バージョン 5.7 へのアップグレードに必要な時間を大幅に削減することができます。日付と時刻の列を新しい形式にアップグレードするために、ALTER TABLE <table_name> FORCE; コマンドを日付と時刻の列を含む各テーブルに実行します。テーブルを変更すると、テーブルが読み取り専用としてロックされるため、この更新はメンテナンス時間中に実行することをお勧めします。

次のクエリを使用して、データベース内で日時、時刻、またはタイムスタンプ型の列を含むテーブルをすべて検索し、各テーブルについて 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 のマイナーバージョンアップグレード

マイナーバージョンアップグレードは、マイナーアップグレードに以前のバージョンのバグフィックスを含む場合など安全性に問題があるバージョンを置き換える場合のみ、自動的に行われます。その他の場合は、DB インスタンスを手動で変更してマイナーバージョンアップグレードを実行する必要があります。

AWS では、フォーラムのお知らせページにリリースを投稿して、お客様の電子メールに通知を送信するまでは、Amazon RDS DB インスタンスの自動アップグレードは行いません。アップグレードがインスタンスのメンテナンス時間中に実行される場合も、年間を通して特定の時刻にスケジュールします。マルチ AZ インスタンスであっても DB エンジンバージョンのアップグレードにあたってはダウンタイムが発生するため、お客様が対応を計画できるようにアップグレードをスケジュールしています。

アップグレードをテストする

DB インスタンスのメジャーバージョンのアップグレードを実行する前に、データベースとそのデータベースにアクセスするすべてのアプリケーションについて、新しいバージョンとの互換性を綿密にテストする必要があります。以下の手順を実行することをお勧めします。

To test a major version upgrade

  1. Review the upgrade documentation for the new version of the database engine to see if there are compatibility issues that might affect your database or applications:

  2. If your DB instance is a member of a custom DB parameter group, you need to create a new DB parameter group with your existing settings that is compatible with the new major version. Specify the new DB parameter group when you upgrade your test instance, so that your upgrade testing ensures that it works correctly. For more information about creating a DB parameter group, see DB パラメータグループを使用する.

  3. Create a DB snapshot of the DB instance to be upgraded. For more information, see DB スナップショットの作成.

  4. Restore the DB snapshot to create a new test DB instance. For more information, see DB スナップショットからの復元.

  5. Modify this new test DB instance to upgrade it to the new version, using one of the methods detailed following. If you created a new parameter group in step 2, specify that parameter group.

  6. Evaluate the storage used by the upgraded instance to determine if the upgrade requires additional storage.

  7. Run as many of your quality assurance tests against the upgraded DB instance as needed to ensure that your database and application work correctly with the new version. Implement any new tests needed to evaluate the impact of any compatibility issues you identified in step 1. Test all stored procedures and functions. Direct test versions of your applications to the upgraded DB instance.

  8. If all tests pass, then perform the upgrade on your production DB instance. We recommend that you do not allow write operations to the DB instance until you confirm that everything is working correctly.

わずかなダウンタイムでの MySQL データベースのアップグレード

MySQL DB インスタンスが本稼働アプリケーションで現在使用されている場合、次の手順に従って DB インスタンスのデータベースのバージョンのアップグレードすることによって、アプリケーションのダウンタイムを短縮できます。この手順では、MySQL バージョン 5.5 から MySQL バージョン 5.6 へのアップグレードの例を示します。

To upgrade an MySQL database while a DB instance is in use

  1. AWS マネジメントコンソールにサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. Create a Read Replica of your MySQL 5.5 DB instance. This process creates an upgradable copy of your database.

    1. On the console, choose Instances, and then choose the DB instance that you want to upgrade.

    2. Choose Instance Actions, and then choose Create Read Replica.

    3. Provide a value for DB Instance Identifier for your Read Replica and ensure that the DB instance Class and other settings match your MySQL 5.5 DB instance.

    4. Choose Yes, Create Read Replica.

  3. When the Read Replica has been created and Status shows available, upgrade the Read Replica to MySQL 5.6.

    1. On the console, choose Instances, and then choose the Read Replica that you just created.

    2. Choose Instance Actions, and then choose Modify.

    3. For DB Engine Version, choose the MySQL 5.6 version to upgrade to, and then choose Apply Immediately. Choose Continue.

    4. Choose Modify DB Instance to start the upgrade.

  4. When the upgrade is complete and Status shows available, verify that the upgraded Read Replica is up to date with the master MySQL 5.5 DB instance. You can do this by connecting to the Read Replica and issuing the SHOW SLAVE STATUS command. If the Seconds_Behind_Master field is 0, then replication is up to date.

  5. Make your MySQL 5.6 Read Replica a master DB instance.

    重要

    When you promote your MySQL 5.6 Read Replica to a standalone, single-AZ DB instance, it will no longer be a replication slave to your MySQL 5.5 DB instance. We recommend that you promote your MySQL 5.6 Read Replica during a maintenance window when your source MySQL 5.5 DB instance is in read-only mode and all write operations are suspended. When the promotion is completed, you can direct your write operations to the upgraded MySQL 5.6 DB instance to ensure that no write operations are lost.

    In addition, we recommend that before promoting your MySQL 5.6 Read Replica you perform all necessary data definition language (DDL) operations, such as creating indexes, on the MySQL 5.6 Read Replica. This approach avoids negative effects on the performance of the MySQL 5.6 Read Replica after it has been promoted. To promote a Read Replica, use this procedure:

    1. On the console, choose Instances, and then choose the Read Replica that you just upgraded.

    2. Choose Instance Actions, and then choose Promote Read Replica.

    3. Enable automated backups for the Read Replica instance. For more information, see バックアップの使用 .

      Choose Continue.

    4. Choose Yes, Promote Read Replica.

  6. You now have an upgraded version of your MySQL database. At this point, you can direct your applications to the new MySQL 5.6 DB instance, add Read Replicas, set up Multi-AZ support, and so on.

AWS マネジメントコンソール

To upgrade the engine version of a DB instance by using the AWS マネジメントコンソール

  1. AWS マネジメントコンソールにサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. In the navigation pane, choose Instances.

  3. Choose the check box for the DB instance that you want to upgrade.

  4. Choose Instance Actions, and then choose Modify.

  5. For DB Engine Version, choose the new version.

  6. To upgrade immediately, select Apply Immediately. To delay the upgrade to the next maintenance window, clear Apply Immediately.

  7. Choose Continue.

  8. Review the modification summary information. To proceed with the upgrade, choose Modify DB Instance. To cancel the upgrade, choose Cancel or Back.

CLI

DB インスタンスのエンジンバージョンをアップグレードするには、AWS CLI の modify-db-instance コマンドを使用します。以下のパラメーターを指定します。

  • --db-instance-identifier – DB インスタンスの名前です。

  • --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

DB インスタンスのエンジンバージョンをアップグレードするには、ModifyDBInstance アクションを使用します。以下のパラメーターを指定します。

  • DBInstanceIdentifier – DB インスタンスの名前、たとえば 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

関連トピック