スキップしてコンテンツを表示

Amazon RDS for MySQL DB インスタンスでアップグレード前チェックの不合格を解決する方法を教えてください。

所要時間3分
0

Amazon Relational Database Service (Amazon RDS) for MySQL DB インスタンスのアップグレードを試みたところ、アップグレード前チェックに合格できないため、解決したいと考えています。

簡単な説明

Amazon RDS と Amazon Aurora MySQL 互換エディションは、自動事前チェック機能により、バージョンアップグレード中の予期しないダウンタイムを最小化します。MySQL バージョンを 5.7 から 8.0、または 8.0 から 8.4 にアップグレードする際、この事前チェックは、アップグレードに影響する可能性がある非互換性を検出します。DB インスタンスの事前アップグレードチェックに合格できない場合、Amazon RDS for MySQL のバージョンアップグレードは停止します。次に、Amazon RDS は、事前チェック不合格に関する詳細をログファイル PrePatchCompatibility に記録します。

Amazon RDS コンソールの [ログとイベント] に表示されるログファイルを参照し、問題を特定、修正します。

MySQL の事前チェックについては、MySQL のウェブサイトで「アップグレードチェッカユーティリティ」を参照してください。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

事前アップグレードチェックのエラーメッセージを確認する

ログファイルを確認するには、次の手順を実行します。

  1. Amazon RDS コンソールを開きます。
  2. ナビゲーションペインで [データベース] を選択し、アップグレードを試行するデータベースを選択します。
  3. [ログとイベント] タブを選択し、[最近のイベント]PrePatchCompatibility を検索します。
  4. ログファイル PrePatchCompatibility をレビューし、問題を解決します。
    注: 多くの場合、ログエントリには、非互換性の問題を解決する方法に関する Amazon RDS for MySQL 文書へのリンクが表示されています。

メッセージに特定のエラー、警告、通知レベルのメッセージが含まれているかどうかを確認する

ログファイル PrePatchCompatibility 内に、次のいずれかの事前チェックに関するメッセージが表示される場合があります。

  • "Usage of old temporal type : ERROR" (古い時間型が使用されています)
  • "Usage of db objects with names conflicting with new reserved keywords : WARNING" (オブジェクト名が新しい予約済みキーワードと競合しています)
  • "Usage of utf8mb3 charset : NOTICE" (文字コードに utf8mb3 が使用されています)
  • "Table names in the mysql schema conflicting with new tables in 8.0 : ERROR" (mysql のテーブル名が 8.0 での新しいテーブル名と競合しています)
  • "Partitioned tables using engines with non native partitioning : ERROR" (分割テーブルが非ネイティブパーティションを使用するエンジンを使用しています)
  • "Foreign key constraint names longer than 64 characters : ERROR" (外部キー制約名が 64 文字を超過しています)
  • "Usage of obsolete MAXDB sql_mode flag : WARNING" (廃止済みフラグが指定されています)
  • "Usage of obsolete sql_mode flags : NOTICE" (廃止済みフラグが指定されています)
  • "ENUM/SET column definitions containing elements longer than 255 characters : ERROR" (列の定義内の要素が 255 文字を超過しています)
  • "Usage of partitioned tables in shared tablespaces : ERROR" (共有表領域で分割テーブルが使用されています)
  • "Circular directory references in tablespace data file paths : ERROR" (表領域のデータファイルパスで循環ディレクトリ参照が行われています)
  • "Usage of removed functions : ERROR" (削除された関数が使用されています)
  • "Usage of removed GROUP BY ASC/DESC syntax : ERROR" (削除された構文が使用されています)
  • "Removed system variables for error logging to the system log configuration : ERROR" (システムログに対するエラーログ設定に、削除されたシステム変数が使用されています)
  • "Removed system variables : ERROR" (削除されたシステム変数が使用されています)
  • "System variables with new default values : WARNING" (システム変数に新しいデフォルト値が設定されています)
  • "Schema inconsistencies resulting from file removal or corruption : ERROR" (ファイル削除または破損によるスキーマ不整合)
  • "Issues reported by 'check table x for upgrade' command : ERROR or WARNING or NOTICE" (コマンドから問題が報告されました)
  • "The definer column for mysql.events cannot be null or blank. : ERROR" (definer 列は null または空にすることができません)
  • "Tables with dangling FULLTEXT index reference : ERROR" (テーブルにインデックスのダングリング参照が含まれています)
  • "Routines with deprecated keywords in definition : ERROR" (ルーチンの定義に廃止されたキーワードが含まれています)
  • "DB instance must have enough free disk space : ERROR" (DB インスタンスの空き容量を確保してください)
  • "Creating indexes larger than 767 bytes on tables with redundant row format might cause the tables to be inaccessible. : WARNING" (REDUNDANT 行フォーマットで文字長 767 バイトを超過するインデックスをテーブルに作成すると、テーブルにアクセスできなくなる可能性があります)
  • "The tables with redundant row format can't have an index larger than 767 bytes. : ERROR" (REDUNDANT 行フォーマットでは、767 バイトを超えるインデックスは許容されません)
  • "Column definition mismatch between InnoDB Data Dictionary and actual table definition. : ERROR" (列定義が InnoDB Data Dictionary とテーブル定義で整合しません)

ERROR メッセージが表示される場合は、アップグレード試行の前にエラーを修正します。WARNING メッセージが表示される場合は、Amazon RDS では致命的なエラーは検出されなかったものの、潜在的なエラーが検出されたことを示します。

NOTICE メッセージが表示される場合は、Amazon RDS では互換性に関する既知のエラーまたは問題は検出されませんでした。ただし、エラーログ内の NOTICE を確認することをおすすめします。

ログファイルの一覧表示、データのダウンロード

ログファイルの一覧表示およびデータのダウンロードには、次の手順を実行します。

  1. AWS CLI コマンド describe-db-log-files を実行すると、ログファイルが一覧表示されます。

    aws rds describe-db-log-files --db-instance-identifier DB_identifier --query '*[].[LogFileName]' --output text

    注: DB_identifier をログファイルが配置されたデータベース名に置き換えてください。
    出力例:

    [root@ip-x-x-x-x ec2-user]# aws rds describe-db-log-files --db-instance-identifier testinstance --query '*[].[LogFileName]' --output text  
    PrePatchCompatibility.log  
    error/mysql-error.log  
    error/mysql-error-running.log  
    error/mysql-error-running.log.2023-05-06.3  
    error/mysql-error-running.log.2023-05-09.4  
    error/mysql-error-running.log.2023-05-10.3  
    error/mysql-error-running.log.2023-05-12.19  
    mysqlUpgrade
  2. 特定のログファイルをダウンロードするには、download-db-log-file-portion コマンドを実行します。

    aws rds download-db-log-file-portion --db-instance-identifier DB_identifier \--log-file-name PrePatchCompatibility.log --starting-token 0 \--output text > <LogFileName to save a copy>

    注: DB_identifier をログファイルが配置されたデータベース名に置き換えてください。
    出力例:

    aws rds download-db-log-file-portion --db-instance-identifier testinstance \  
    --log-file-name PrePatchCompatibility.log --starting-token 0 \  
    --output text > PrePatchCompatibilityCopy.log

関連情報

MySQL 8.0 へのアップグレード に関する考慮事項 (MySQL のウェブサイト)

アップグレードに向けたインストールの準備 (MySQL のウェブサイト)

コメントはありません

関連するコンテンツ