ブルー/グリーンデプロイにより、Amazon Aurora MySQL 互換エディションのデータベースをアップグレードする際に発生するエラーをトラブルシューティングしたいと考えています。
簡単な説明
Blue/Green デプロイを使用して Aurora MySQL 互換データベースをアップグレードする場合、デプロイのアップグレードステータスが "Invalid configuration" と表示される場合があります。この問題の詳細を取得するには、ライターインスタンスの [ログとイベント] に次のメッセージが表示されているかどうかを確認します。
"Failed to provision due to upgrade incompatibilities." (互換性が欠けており、プロビジョニングできない)
このエラーを解決するには、次のトラブルシューティング手順を実行します。
解決策
ブルー/グリーンデプロイを準備する
ブルー/グリーンデプロイに関する問題を削減するには、デプロイの準備において、次のベストプラクティスを実施します。
- Aurora MySQL のバージョン互換性マトリックスを参照し、現在のバージョンは、ブルー/グリーンデプロイを使用して目的のバージョンにアップグレード可能であることを確認します。詳細については、「Aurora MySQL のバージョン番号を確認する」を参照してください。
- アプリケーションが、カットオーバー時の短期間の中断に対処できるかどうかを評価します。カットオーバー処理の支援として、アプリケーションに接続再試行ロジックを実装することも可能です。詳細については、「ブルー/グリーンデプロイにおける全般的なベストプラクティス」を参照してください。
- すべての構成設定を参照し、現在のバージョンと目的のバージョンに互換性があることを確認します。
- 現行データベースのバックアップを作成し、必要な場合はロールバックできるようにします。
ブルー/グリーンデプロイを実行する
デプロイ中に、次のタスクを実行します。
- Amazon CloudWatch メトリクス、Amazon EventBridge、ログを参考にアップグレードプロセスを監視します。
- 同じメジャーバージョン内の新しいマイナーバージョンにアップグレードする場合は、グリーンクラスターでインプレースアップグレード機能を使用します。この機能を使用すると、カットオーバー処理の完了前に、最新のパッチバージョンにアクセスできます。
- グリーン環境が利用可能になり、グリーンクラスターでレプリカラグが発生しないことを確認した後、予定したメンテナンス期間中にカットオーバーを完了させます。
カットオーバー時にスイッチオーバーが停滞するか、低速化する場合は、エラーログが特定のエラーメッセージまたはボトルネックを示していないかを確認します。スイッチオーバーのタイムアウト期間は、30 秒 ~ 3,600 秒 (1 時間) の範囲で指定できます。スイッチオーバーにかかる時間が指定した期間よりも長い場合、Aurora は変更をロールバックするため、いずれの環境も変更されません。
注: デフォルトのタイムアウト期間は 300 秒 (5 分) です。
他の手法でアップグレードする
一部のアップグレード (例: Aurora Serverless v1 から Aurora Serverless v2) では、ブルー/グリーンデプロイプロセスを使用できません。この問題を解決するには、次のいずれかの手法を実施します。
リードレプリカを使用する
次の手順を実行します。
- Aurora Serverless v1 クラスターのリードレプリカを作成します。
- クラスターのリードレプリカを Aurora Serverless v2 にアップグレードします。
- リードレプリカがプライマリクラスターになるよう更新します。
詳細については、「Aurora Serverless v1 クラスターから Aurora Serverless v2 へのアップグレード」を参照してください。
スナップショットを使用する
次の手順を実行します。
- Aurora Serverless v1 クラスターのスナップショットを作成します。
- スナップショットを新しい Aurora Serverless v2 クラスターに復元します。
- アプリケーションを更新し、新しい v2 クラスターを指すよう設定します。
アップグレード後の構成をレビューする
クラスターのアップグレード完了後、すべてのデータベース関数、ストアドプロシージャ、およびアプリケーションのクエリが想定通りに動作することを確認します。ピーク時を含む、アップグレード後 24 〜 48 時間のパフォーマンスメトリクスを監視することで、パフォーマンスに予期しない影響が生じていないことを確認します。
追加のトラブルシューティング手順
非互換性に関するエラー
現在のデータベース構成において、目的のデータベースと非互換の設定または機能が使用されている場合、次のエラーメッセージが表示されます。
"Failed to provision due to upgrade incompatibilities.See https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.mysql80-upgrade-procedure.html#AuroraMySQL.mysql80-upgrade-troubleshooting to resolve these issues, then delete and recreate this Blue/Green Deployment." (アップグレードの互換性が欠けています。デプロイを削除後、再作成してください)
このエラーを解決するには、次の手順を実行します。
- 現在の Aurora MySQL 互換データベースの upgrade-prechecks.log ファイルをレビューします。
- ログファイルで特定した、互換性に関するすべての問題に対処します。詳細については、「コミュニティ版 MySQL のアップグレード事前チェックに関する概要」および「Aurora MySQL のアップグレード事前チェックに関する概要」を参照してください。
- ブルー/グリーンデプロイを削除します。
- ブルー/グリーンデプロイを再度作成します。
パラメータの互換性に関するエラー
グリーンクラスターのステータスが incompatible-parameters であり、Available と表示されない場合は、既存のクラスターパラメータまたはインスタンスパラメータの値は、目的のバージョンと互換性がありません。
このエラーを解決するには、次の手順を実行します。
-
クラスターのパラメータグループとインスタンスパラメータの値をリセットします。
-
グリーンクラスターをスタンドアロンクラスターに昇格させるには、promote-read-replica-db-cluster コマンドを実行します。
aws rds promote-read-replica-db-cluster --db-cluster-identifier <Green Cluster>
-
クラスターとインスタンスを削除します。
-
既存クラスターのパラメータ値がターゲットバージョンと互換性があるかどうかを確認します。または、ブルークラスターのデフォルト値に切り替えます。次に、グリーンクラスターへのカットオーバー時に、パラメータ値を 1 つずつ変更します。
-
パラメータを検証した後、ブルー/グリーン環境を新たに作成します。
アップグレードが停滞する場合のトラブルシューティング
グリーンクラスターは、次の原因でアップグレード中に停滞する可能性があります。
- 目的のバージョンとの互換性が欠けている
- ブルークラスター上の長時間実行トランザクションにより、グリーンクラスターのアップグレードプロセスがブロックされる
このエラーを解決するには、次の手順を実行します。
- アップグレードしたバージョンでは、ターゲットバージョンへの直接アップグレードがサポートされているかどうかを確認します。
- バージョンがサポートされていない場合は、変更を差し戻し、ブルー/グリーンデプロイを削除します。
- 推奨される中間バージョンにアップグレードします。最後のステップとして、最終バージョンにアップグレードします。
ブルークラスターにおいて、長時間実行トランザクションが存在しないかどうかを確認することも可能です。長時間実行トランザクションが存在する場合は、そのトランザクションを完了させるか、破棄します。次に、アップグレードプロセスを再試行します。
関連情報
Amazon Aurora MySQL DB クラスターを新しいバージョンにアップグレードする方法を教えてください
Amazon Aurora MySQL バージョン 3 (MySQL 8.0 互換) へのアップグレード
最小限のダウンタイムで Amazon Aurora MySQL のメジャーバージョンアップグレードを実行する
Amazon Aurora MySQL DB クラスターのメジャーバージョンをアップグレードする