

# RDS for MySQL データベースのアップグレード時にリードレプリカを使用したダウンタイムの短縮
<a name="USER_UpgradeDBInstance.MySQL.ReducedDowntime"></a>

ほとんどの場合、MySQL DB インスタンスをアップグレードする際のダウンタイムを減らすには、ブルー/グリーンデプロイが最適なオプションです。詳細については、「[データベース更新のために Amazon RDS ブルー/グリーンデプロイを使用する](blue-green-deployments.md)」を参照してください。

ブルー/グリーンデプロイを使用できず、MySQL DB インスタンスが現在本稼働アプリケーションで使用されている場合は、次の手順を使用して DB インスタンスのデータベースバージョンをアップグレードできます。この手順により、アプリケーションの停止時間を短縮できます。

リードレプリカを使用して、ほとんどのメンテナンスステップを事前に実行し、実際の停止中に必要な変更を最小限に抑えることができます。この方法で、既存の DB インスタンスを変更せずに、新しい DB インスタンスのテストおよび準備ができます。

次の手順は、MySQL バージョン 5.7 から MySQL バージョン 8.0 へのアップグレードの例です。他のメジャーバージョンへのアップグレードに、この同じ一般的なステップを使用できます。他のメジャーバージョンへのアップグレードに、この同じ一般的なステップを使用できます。

**注記**  
MySQL バージョン 5.7 から MySQL バージョン 8.0、または MySQL バージョン 8.0 から MySQL バージョン 8.4 にアップグレードする場合、アップグレードを実行する前に事前確認を完了してください。詳細については、[MySQL 5.7 から 8.0 へのアップグレードの事前確認](USER_UpgradeDBInstance.MySQL.Major.md#USER_UpgradeDBInstance.MySQL.57to80Prechecks)および[MySQL 8.0 から 8.4 へのアップグレードの事前確認](USER_UpgradeDBInstance.MySQL.Major.md#USER_UpgradeDBInstance.MySQL.80to84Prechecks)を参照してください。

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

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

1. MySQL 5.7 DB インスタンスのリードレプリカを作成します。このプロセスにより、データベースのアップグレード可能なコピーが作成されます。DB インスタンスの他のリードレプリカも存在する場合があります。

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

   1. [**アクション**] で [**リードレプリカの作成**] を選択します。

   1. リードレプリカの [**DB インスタンス識別子**] の値を指定し、[**DB インスタンスクラス**] などの設定が MySQL 5.7 DB インスタンスと一致することを確認します。

   1. [**Create read replica**] を選択します。

1. (オプション) リードレプリカが作成され、**ステータス**が [**利用可能**] になったら、リードレプリカをマルチ AZ 配置に変換し、バックアップを有効にします。

   デフォルトでは、バックアップが無効な状態でリードレプリカが作成されます。リードレプリカは最終的に本番 DB インスタンスになるため、ベストプラクティスは、マルチ AZ 配置を設定してバックアップを有効にすることです。

   1. コンソールで [**データベース**] を選択し、作成したばかりのリードレプリカを選択します。

   1. **Modify** を選択します。

   1. **マルチ AZ 配置**で、[**スタンバイインスタンスの作成**] を選択します。

   1. **[Backup Retention Period]** (バックアップ保持期間) として、0 以外の正の値 (3 日など) を選択し、**[Continue]** (続行) を選択します。

   1. [**変更のスケジューリング**] で、[**すぐに適用**] を選択します。

   1. [**DB インスタンスの変更**] を選択します。

1. リードレプリカの**ステータス**が [**利用可能**] になったら、リードレプリカを MySQL 8.0 にアップグレードします。

   1. コンソールで [**データベース**] を選択し、作成したばかりのリードレプリカを選択します。

   1. **Modify** を選択します。

   1. [**DB エンジンのバージョン**] で、アップグレードする MySQL 8.0 のバージョンを選択し、[**続行**] を選択します。

   1. [**変更のスケジューリング**] で、[**すぐに適用**] を選択します。

   1. [**Modify DB instance**] を選択してアップグレードをスタートします。

1. アップグレードが完了し、[**ステータス**] が [**利用可能**] になったら、アップグレードしたリードレプリカがソース MySQL 5.7 DB インスタンスで最新であることを確認します。確認するには、リードレプリカに接続して、`SHOW REPLICA STATUS` コマンドを実行します。`Seconds_Behind_Master` フィールドが `0` である場合、レプリカは更新されています。
**注記**  
MySQL の旧バージョンは、`SHOW REPLICA STATUS` ではなく `SHOW SLAVE STATUS` を使用していました。8.0.23 より前の MySQL バージョンを使用している場合は、`SHOW SLAVE STATUS` を使用します。

1. (オプション) リードレプリカのリードレプリカを作成します。

   DB インスタンスをスタンドアロン DB インスタンスに昇格した後、リードレプリカを追加する場合、すぐにリードレプリカを作成できます。

   1. コンソールで [**データベース**] を選択し、アップグレードしたばかりのリードレプリカを選択します。

   1. [**アクション**] で [**リードレプリカの作成**] を選択します。

   1. リードレプリカの [**DB インスタンス識別子**] の値を指定し、[**DB インスタンスクラス**] などの設定が MySQL 5.7 DB インスタンスと一致することを確認します。

   1. [**Create read replica**] を選択します。

1. (オプション) リードレプリカのカスタム DB パラメータグループを設定します。

   DB インスタンスをスタンドアロン DB インスタンスに昇格した後、カスタムパラメータグループを使用する場合、すぐにDB パラメータグループを作成して、リードレプリカに関連付けられます。

   1. MySQL 8.0 のカスタム DB パラメータグループを作成します。手順については、「[Amazon RDS での DB パラメータグループの作成](USER_WorkingWithParamGroups.Creating.md)」を参照してください。

   1. 作成したばかりの DB パラメータグループで変更するパラメータを変更します。手順については、「[Amazon RDS の DB パラメータグループのパラメータの変更](USER_WorkingWithParamGroups.Modifying.md)」を参照してください。

   1. コンソールで [**データベース**] を選択し、リードレプリカを選択します。

   1. **Modify** を選択します。

   1. [**DB パラメータグループ**] で、作成したばかりの MySQL 8.0 DB パラメータグループを選択し、[**続行**] を選択します。

   1. [**変更のスケジューリング**] で、[**すぐに適用**] を選択します。

   1. [**Modify DB instance**] を選択してアップグレードをスタートします。

1. MySQL 8.0 リードレプリカをスタンドアロン DB インスタンスにします。
**重要**  
MySQL 8.0 のリードレプリカをスタンドアロン DB インスタンスに昇格すると、MySQL 5.7 DB インスタンスのレプリカではなくなります。MySQL 8.0 のリードレプリカの昇格は、ソース MySQL 5.7 DB インスタンスが読み取り専用モードで、すべての書き込みオペレーションが停止されているメンテナンスウィンドウ中に実行することをお勧めします。昇格が完了したら、アップグレードした MySQL 8.0 DB インスタンスに書き込みオペレーションを割り振ることで、書き込みオペレーションが失われないようにします。  
また、MySQL 8.0 のリードレプリカの昇格前に、必要なすべてのデータ定義言語 (DDL) のオペレーションを MySQL 8.0 のリードレプリカで実行することをお勧めします。例えば、インデックスの作成があります。これにより、昇格後の MySQL 8.0 のリードレプリカのパフォーマンスへの悪影響を避けることができます。リードレプリカを昇格させるには、次の手順に従います。

   1. コンソールで [**データベース**] を選択し、アップグレードしたばかりのリードレプリカを選択します。

   1. [**アクション**] で、[**Promote (昇格)**] を選択します。

   1. [**はい**] を選択して、リードレプリカインスタンスの自動バックアップを有効にします。詳細については、「[バックアップの概要](USER_WorkingWithAutomatedBackups.md)」を参照してください。

   1. **[Continue]** (続行) をクリックします。

   1. [**Promote Read Replica**] を選択します。

1. これで、MySQL データベースのアップグレードバージョンが作成されました。この時点で、アプリケーションを新しい MySQL 8.0 DB インスタンスに割り振ることができます。