Amazon Relational Database Service (Amazon RDS) for MySQL データベースエンジンのバージョンを最小限のダウンタイムでアップグレードしたいと考えています。
解決策
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
Amazon RDS for MySQL データベースエンジンのバージョンをアップグレードする
Amazon RDS データベースエンジンをメジャーバージョンにアップグレードするには、AWS マネジメントコンソール、AWS CLI、または RDS API を手動で使用する必要があります。詳細については、「エンジンバージョンの手動アップグレード」を参照してください。
Amazon RDS データベースエンジンをマイナーバージョンに自動的にアップグレードするには、「マイナーエンジンバージョンの自動アップグレード」を参照してください。
Amazon RDS for MySQL データベースエンジンのアップグレードによるダウンタイムを最小限に抑えるためのベストプラクティス
アップグレード時間を見積もる
アップグレードにかかる時間は、アップグレードの種類、データ、利用可能なリソースに左右されます。アップグレード時間を見積もるには、別のテストデータベースインスタンスでアップグレードをテストします。スナップショット復元またはリードレプリカを使用すると、メジャーバージョンまたはマイナーバージョンのアップグレードのテストデータベースインスタンスを起動できます。詳細については、「RDS for MySQL DB エンジンのアップグレード」を参照してください。
アップグレードのダウンタイムを最小限に抑えるには、データベースの更新ブルー/グリーンデプロイを使用します。ブルー/グリーンデプロイでは、本番環境をコピーしたステージング環境が作成されます。Amazon RDS データベースインスタンスは、本番環境のワークロードに影響を与えずにグリーン環境でアップグレードできます。次に、テスト後に環境を切り替えます。
データベースバックアップの影響
バックアップを有効にすると、Amazon RDS はすべてのバージョンアップグレードでデータベースインスタンスの以前のバージョンのスナップショットを取得します。Amazon RDS で最新のバックアップを見つけられない場合、Amazon RDS はアップグレードプロセス中に完全なスナップショットを作成します。変更の規模はアップグレード時間に影響します。Amazon RDS がスナップショットを取得しても、データベースインスタンスはトラフィックを受け入れることができます。バックアップが完了すると、データベースインスタンスはシャットダウンします。次に、MySQL は無効化されたネットワーク上で新しいエンジンバージョンを実行して、リモート接続を防止します。
低速シャットダウンの影響
低速シャットダウンを採用するために、Amazon RDS は innodb_fast_shutdown パラメータ値を 0 に設定します。低速シャットダウンでは、Amazon RDS は変更バッファをマージし、削除された行を完全にパージします。低速シャットダウンは、回復されたデータの量に応じて、数分から数時間かかる場合があります。大きな変更バッファや長い履歴リストがあるデータベースでの低速シャットダウンでは、時間がかかる場合があります。詳細については、MySQL のウェブサイトで「低速シャットダウン」、「innodb_fast_shutdown」、「バッファの変更」、「パージ」を参照してください。
システムテーブルとユーザーテーブルの新しいバージョンへの変換
MySQL バイナリ mysql_upgrade が MySQL データベース上で実行され、システムテーブルとユーザーテーブルが新しいバージョンに変換されます。テーブルの状態によっては、新しいバージョンに準拠するためにテーブルを作成する必要がある場合があります。mysql_upgrade バイナリはテーブル内のメタデータを更新し、データベースがアップグレードされたことを示します。テーブルの数が多いと、Amazon RDS MySQL がメジャーバージョンのアップグレードを完了するのに時間がかかることがあります。詳細については、MySQL ウェブサイトの「mysql\ _upgrade: MySQL テーブルのチェックとアップグレード」を参照してください。
MySQL のアップグレードに関する考慮事項
バージョン 8.0 から 8.4 へのメジャーバージョンアップグレード時に、Amazon RDS for MySQL は一部のテーブルを再構築します。テーブル内のデータ量によっては、再構築が完了するまでに数時間または数日かかる場合があります。
MySQL メジャーバージョン間の非互換性により、アップグレード時に問題が発生する可能性があります。アップグレードを成功させるには、MySQL のアップグレードに関する考慮事項を確認するのがベストプラクティスです。MySQL 5.7 から 8.0 へのアップグレードを開始すると、Amazon RDS は自動的に事前チェックを実行して非互換性を検出します。詳細については、MySQL ウェブサイトの「MySQL のアップグレード」を参照してください。
**ロールバック計画を立てる **
MySQL 8.0 からのアップグレードでは、Amazon RDS は事前チェックを実行して、テーブルを再構築するのに十分なストレージ容量があることを確認します。Amazon RDS は、孤立テーブルがないことも確認します。Amazon RDS は、MySQL 5.7 より前のリリースへのアップグレードに関する事前チェックを実行しません。アップグレードが失敗し、メジャーバージョンのアップグレードが失敗したためにロールバックされる場合に備えて計画を立てておくのがベストプラクティスです。
テーブルに問題がないか確認する
テーブルに問題がないかを確認するには、mysqlcheck を実行するのがベストプラクティスです。復元されたスナップショットでテーブルメンテナンス操作をテストするのがベストプラクティスです。詳細については、MySQL ウェブサイトで「mysqlcheck — a table maintenance program (mysqlcheck — テーブルメンテナンスプログラム)」を参照してください。
関連情報
DB インスタンスエンジンバージョンのアップグレード
Amazon RDS for MySQL と Amazon RDS for MariaDB をアップグレードするためのベストプラクティス
Amazon RDS バージョンの MySQL