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

メジャーバージョンのアップグレードをテストするには

  1. データベースエンジンの新しいバージョンについてアップグレードドキュメントを参照して、データベースやアプリケーションに影響を与える可能性のある互換性の問題があるかどうかを確認します。

  2. DB インスタンスがカスタム DB パラメータグループに関連付けられている場合は、新しいメジャーバージョンと互換性のある既存の設定で新しい DB パラメータグループを作成する必要があります。その新しい DB パラメータグループをテストインスタンスのアップグレード時に指定することで、アップグレードのテストでインスタンスが正常に機能することを確認できます。DB パラメータグループの作成の詳細については、「DB パラメータグループを使用する」を参照してください。.

  3. アップグレードする DB インスタンスの DB スナップショットを作成します。詳細については、「DB スナップショットの作成」を参照してください。

  4. DB スナップショットを復元して、新しいテスト DB インスタンスを作成します。詳細については、「DB スナップショットからの復元」を参照してください。

  5. この新しいテスト DB インスタンスを変更して新しいバージョンにアップグレードするには、次に説明するいずれかの方法を使用します。手順 2 で新しいパラメータグループを作成した場合は、そのパラメータグループを指定します。

  6. アップグレードしたインスタンスによって使用されるストレージを評価して、アップグレードに追加のストレージが必要かどうかを判断します。

  7. データベースとアプリケーションが新しいバージョンで正常に動作することが確認されるまで、アップグレードした DB インスタンスに対する品質保証テストを必要な回数だけ実行します。手順 1 で特定した互換性の問題の影響を評価するための新しいテストを実行します。すべてのストアドプロシージャと関数をテストします。アプリケーションのテストバージョンを、アップグレードした DB インスタンスに割り振ります。

  8. すべてのテストに合格したら、本稼働 DB インスタンスのアップグレードを実行します。すべてが正常に動作していることを確認するまでは、DB インスタンスへの書き込みオペレーションは許可しないことをお勧めします。

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

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

DB インスタンスの使用中に MySQL データベースをアップグレードするには

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

  2. MySQL 5.5 DB インスタンスのリードレプリカを作成します。このプロセスにより、データベースのアップグレード可能なコピーが作成されます。

    1. コンソールで、[Instances] を選択し、アップグレードする DB インスタンスを選択します。

    2. [Instance Actions] を選択し、[Create Read Replica] を選択します。

    3. リードレプリカの [DB Instance Identifier] の値を指定し、DB インスタンスの [Class] などの設定がご使用の MySQL 5.5 DB インスタンスのものと一致していることを確認します。

    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 DB インスタンスの設定で更新されていることを確認します。これは、リードレプリカに接続して SHOW SLAVE STATUS コマンドを発行することで確認できます。Seconds_Behind_Master フィールドが 0 である場合、レプリカは更新されています。

  5. MySQL 5.6 リードレプリカをマスター DB インスタンスにします。

    重要

    MySQL 5.6 リードレプリカは、スタンドアロンの Single-AZ DB インスタンスに昇格させると、MySQL 5.5 DB インスタンスのレプリケーションスレーブではなくなります。ソース MySQL 5.5 DB インスタンスが読み取り専用モードで、すべての書き込み操作が中断されているメンテナンス時間中に、MySQL 5.6 リードレプリカを昇格させることをお勧めします。昇格が完了したら、アップグレードした MySQL 5.6 DB インスタンスに書き込み操作を割り振ることで、書き込み操作が失われないようにします。

    また、MySQL 5.6 リードレプリカの昇格前に、インデックスの作成など必要なすべてのデータ定義言語 (DDL) 操作を MySQL 5.6 リードレプリカで実行することをお勧めします。この方法により、昇格後の MySQL 5.6 リードレプリカのパフォーマンスへの悪影響を避けることができます。リードレプリカを昇格させるには、次の手順を使用します。

    1. コンソールで、[Instances] を選択し、先ほどアップグレードしたリードレプリカを選択します。

    2. [Instance Actions] を選択し、[Promote Read Replica] を選択します。

    3. リードレプリカインスタンスに対して自動バックアップを有効にします。詳細については、「 バックアップの使用」を参照してください。

      [Continue] を選択します。

    4. [Yes, Promote Read Replica] を選択します。

  6. これで、MySQL データベースのアップグレードバージョンが作成されました。この時点で、新しい MySQL 5.6 DB インスタンスへのアプリケーションの割り振り、リードレプリカの追加、マルチ AZ サポートの設定などが可能になります。

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

AWS マネジメントコンソール を使用して DB インスタンスのエンジンバージョンをアップグレードするには

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

  2. ナビゲーションペインで、[Instances] を選択します。

  3. アップグレードする DB インスタンスのチェックボックスをオンにします。

  4. [Instance Actions] を選択してから、[Modify] を選択します。

  5. [DB Engine Version] で、新しいバージョンを選択します。

  6. すぐにアップグレードするには、[Apply Immediately] を選択します。次のメンテナンス時間までアップグレードを延期するには、[Apply Immediately] の選択を解除します。

  7. [Continue] を選択します。

  8. 変更の概要を確認します。アップグレードを続行するには、[Modify DB Instance] を選択します。アップグレードをキャンセルするには、[Cancel] または [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

関連トピック