Amazon RDS for MySQL DB インスタンスでアップグレード前チェックの失敗を解決する方法を教えてください。
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 に記録します。
Aurora と RDS コンソールの [ログとイベント] に表示されるログファイルを参照し、問題を特定、修正します。
MySQL の事前チェックについては、MySQL のウェブサイトで「Upgrade checker utility」(アップグレードチェッカユーティリティ) を参照してください。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
アップグレード前チェックのエラーメッセージを確認する
ログファイルを確認するには、次の手順を実行します。
- Aurora と RDS コンソールを開きます。
- ナビゲーションペインで [データベース] をクリックし、アップグレードを試行するデータベースを選択します。
- [ログとイベント] タブをクリックし、[最近のイベント] で PrePatchCompatibility を検索します。
- ログファイル 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"
- "Table names in the mysql schema conflicting with new tables in 8.0 : ERROR"
- "Partitioned tables using engines with non native partitioning : ERROR"
- "Foreign key constraint names longer than 64 characters : ERROR"
- "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"
- "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"
- "Tables with dangling FULLTEXT index reference : ERROR"
- "Routines with deprecated keywords in definition : ERROR"
- "DB instance must have enough free disk space : ERROR"
- "Creating indexes larger than 767 bytes on tables with redundant row format might cause the tables to be inaccessible. : WARNING"
- "The tables with redundant row format can't have an index larger than 767 bytes. : ERROR"
- "Column definition mismatch between InnoDB Data Dictionary and actual table definition. : ERROR"
ERROR メッセージが表示される場合は、アップグレード試行の前にエラーを修正します。WARNING メッセージが表示される場合は、Amazon RDS では致命的なエラーは検出されなかったものの、潜在的なエラーが検出されたことを示します。
NOTICE メッセージが表示される場合は、Amazon RDS では互換性に関する既知のエラーまたは問題は検出されませんでした。ただし、エラーログ内の NOTICE を確認することをおすすめします。
ログファイルの一覧表示、データのダウンロード
ログファイルの一覧表示およびデータのダウンロードには、次の手順を実行します。
-
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 -
特定のログファイルをダウンロードするには、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
関連情報
Upgrading to MySQL 8.0? Here's what you need to know (MySQL 8.0 へのアップグレードに関する考慮事項) (MySQL のウェブサイト)
Preparing your installation for upgrade (アップグレードに向けたインストールの準備) (MySQL のウェブサイト)
関連するコンテンツ
質問済み 1年前
