Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
如何解决 Amazon RDS for MySQL 数据库实例中的升级前检查失败问题?
我想解决我在尝试升级 Amazon Relational Database Service (Amazon RDS) for MySQL 数据库实例时遇到的升级前检查失败问题。
简短描述
Amazon RDS 和 Amazon Aurora MySQL 兼容版具有自动预检查功能,可最大限度地减少版本升级期间的计划外停机时间。当您从 MySQL 版本 5.7 升级到 8.0 或从 8.0 升级到 8.4 时,预检查会检测到任何可能影响升级的数据不兼容性。当数据库实例的升级前检查失败时,Amazon RDS for MySQL 版本升级将停止。然后,Amazon RDS 在 PrePatchCompatibility 日志文件中提供预检查失败的详细信息。
要识别和更正问题,请查看 Amazon RDS 控制台中 Logs & events(日志和事件)下的日志文件。
有关 MySQL 预检查的信息,请参阅 MySQL 网站上的 Upgrade checker utility(升级检查器实用程序)。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
查看升级前检查失败消息
要查看您的日志文件,请完成以下步骤:
- 打开 Amazon RDS 控制台。
- 在导航窗格中,选择 Databases(数据库),然后选择要升级的数据库。
- 选择 Logs & events(日志和事件)选项卡,然后在 Recent events(最近的事件)中搜索 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。
列出日志文件并下载数据
要列出日志文件并下载数据,请完成以下步骤:
-
运行 describe-db-log-files AWS CLI 命令列出日志文件:
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 网站上)
