大版本升级检查报告说明

更新时间:
复制 MD 格式

本文介绍RDS MySQL大版本升级检查时的常见报错信息,并提供检测项的内容详情、可能原因以及解决方案。

以下报错信息为常见报错,如遇其他报错信息请提工单咨询。

检测项

报错信息

检查内容

可能原因

解决方案

check_ins_major_version

Current engine version does not support operations.

检查当前实例版本和目标版本是否属于支持的大版本升级路径。

当前升级路径不是5.6升级到5.7、5.7升级到8.08.0升级到8.4。

请参见MySQL大版本升级的前提条件确认源版本、目标版本和实例形态。若控制台未开放对应升级入口,请提工单咨询。

check_ins

Specified instance does not exist or not support.

检查当前实例是否存在。

实例不存在或已被删除。

查看实例是否存在,使用已有的RDS MySQL实例进行检查。

check_ins_status

Current DB instance state does not support this operation.

检查实例状态是否为运行中。

有其他相关操作(如重启中,创建网络连接中等)正在进行,导致实例状态不为运行中。

请等待任务结束,实例状态为运行中后,再发起数据库大版本升级检查。

check_master_ins

Current DB instance type does not support this operation.

检查待升级实例是否为主实例。

待升级的实例为灾备实例或者只读实例。

需要确保当前升级的实例为主实例。

check_ins_locked_state

Current DB instance lock mode does not support this operation.

检查实例是否为锁定状态。

此实例状态为“锁定中”。

请先解锁实例,等待当前状态变为“运行中“,再进行升级检查操作。具体解锁信息,请参见实例状态显示“锁定中”时如何解决?

check_maxscale_kernel

The Maxscale version used by the instance is too low, please upgrade the Maxscale version first.

按升级路径检查数据库代理MaxScale小版本是否兼容目标大版本。

代理版本未满足对应目标小版本要求。5.7升级8.0时,要求代理版本不低于1.13.41;8.0升级8.4时,要求代理版本不低于2.25.11。

请先升级代理小版本至符合要求的版本后再检查。8.0升级8.4要求可解析的代理版本不低于2.25.11。

check_ins_tde_state

Specified TDEStatus is not configured on the This custins.

检查当前实例是否开启TDE。

待检查实例已开启TDE。

实例开启了TDE功能,则不支持通过控制台直接升级。更多信息,请参见升级数据库版本

check_target_ins_level

Current DB instance level does not support this operation.

(错误码:InvalidInstanceLevel.Malformed

校验当前实例规格是否为在售的规格。

当前实例规格已下线(属于历史规格实例),无法直接升级数据库版本。

已下线规格的实例无法直接进行版本升级,请先将实例变更为线上在售规格,再升级数据库版本。

check_target_read_level

The read-only instance level is not supported in the target instance.

校验当前只读实例规格是否为在售的规格。

只读实例规格已下线。

实例存储为高性能本地盘,请将当前只读实例变更至官方售卖的规格后,再进行检查。

check_upgrade_check_task

The task already exists.

检查当前实例是否存在大版本升级前置校验任务。

当前实例有大版本升级前置校验任务正在进行中。

请等待前置校验任务完成,待实例状态变为运行中后,再进行检查。

check_upgrade_task

The task already exists.

检查当前实例是否已存在大版本升级任务。

当前实例有大版本升级任务正在进行。

请等待大版本升级任务完成,待实例状态变为运行中后,再进行检查。

check_storage _type

Cloud ssd does not support this operation, please upgrade to essd.

检查当前实例存储是否为SSD云盘。

当前实例存储为SSD云盘。

请先升级存储类型为ESSD云盘

check_source_category

Specified source category is invalid.

检查当前实例系列是否属于大版本升级支持范围。

当前实例不属于高可用系列、基础系列或集群系列,或者该升级路径不支持当前规格。

暂不支持非高可用系列或5.7基础系列的实例进行升级检查。

check_ins_biz_type

Specified biz type is not valid.

检查当前实例是否属于公共云。

当前实例不属于公共云。

目前只支持针对公共云实例进行升级检查。

check_ins_tables_number

Upgrade not allowed due to excessive number of tables: more than 1000,000.

Upgrade not allowed due to excessive number of tables: more than 1000,000.

检查实例的数据表数量是否超过当前升级路径允许的上限。

  • 高性能本地盘实例的数据表数量超过100W,不支持升级。

  • 云盘实例的数据表数量超过100W,不支持升级。

请在升级检查前清理冗余的数据表,然后重新发起检查。

check_ins_db_engine

There are engines present such as MyISAM, Memory, TokuDB, Sphinx, or RocksDB.

检查实例数据库中是否有MyISAM、Memory,TokuDB,SphinxRocksDB引擎

数据库实例中使用了MyISAM、Memory、TokuDB、SphinxRocksDB引擎,不支持升级。

请先将数据库引擎转换为InnoDB引擎。如果您的数据库已是InnoDB引擎,但部分表仍是其他引擎,请使用ALTER TABLE <表名> engine=InnoDB;命令,将表转换为InnoDB引擎后,再进行升级。

check_ins_fts

The current instance has an FTS index, and the minor version is less than 20221130.

检查实例数据库中是否具有Fts索引,且小版本是否低于20221130。

  • 由于MySQL历史原因,全文索引可能建立在系统表空间上。大版本升级时,这些索引可能导致表空间损坏。为避免数据损坏,应在升级前处理这些索引。

  • RDS MySQL 5.6 20221130对该问题进行了修复,全文索引将建立在单独的表空间之上。

RDS MySQL5.6版本中,全文索引会创建在系统表空间。因此,RDS MySQL 5.6升级至RDS MySQL 5.7的版本时,需提前清理系统表空间中的全文索引(方法如下),并确保当前RDS MySQL 5.6的小版本为20221130或之后的版本。如您的版本较低,请先升级至最新的RDS MySQL 5.6版本

  1. 根据提示中的表名,删除建立在系统表空间的全文索引。

    ALTER TABLE $table_name DROP INDEX $fts_name;
  2. 重新创建全文索引。

    ALTER TABLE $table_name ADD FULLTEXT INDEX $fts_name;
  3. 建立完索引后,可以使用如下SQL对当前实例的全文索引进行检查。SQL会返回建立在系统表空间的全文索引,如查询结果为空,则RDS MySQL 5.6升级至RDS MySQL 5.7的过程中不会因为索引问题而导致失败。

    SELECT NAME FROM information_schema.INNODB_SYS_TABLES WHERE TABLE_ID IN ( SELECT CONV(SUBSTRING_INDEX(SUBSTRING_INDEX(NAME, '_', -4),'_', 1),16,10) FROM INNODB_SYS_TABLES WHERE NAME LIKE '%fts_00000000%' AND SPACE = 0);

check_read_ins_number

The number of read-only instances cannot be greater than 8.

检查高性能本地盘的只读实例数量不能大于8。

当前高性能本地盘实例中只读实例数量大于8。

释放掉多余的只读实例,待升级完成后再创建。

check_slave_state

The slave status is unhealthy or has delays.

检查备节点状态以及时延信息。

备节点状态可能非正常或存在延迟。

可以通过控制台监控与报警功能查看节点复制线程状态(单位:秒)和节点复制延迟(单位:秒)的监控指标,待备节点状态恢复正常后进行检查。

check_account

The instance has an aliyun_root account.

检查账户。

RDS MySQL 5.6中存在用户手动创建的aliyun_root账户。

RDS MySQL 5.7以上版本添加aliyun_root为默认账户,如果用户在5.6版本手动创建了aliyun_root账户后,升级到5.7时会报同名错误,需提前删除或修改aliyun_root账户,再进行升级检查。更多信息,请参见系统账号说明

check_sys_schema

The instance already has a sys database.

检查实例中是否存在sys库。

RDS MySQL 5.7中,默认是存在sys库的,如果RDS MySQL 5.6存在sys库,这将导致5.6升级到5.7的过程失败。

如果存在sys库,则需要用户将sys库做重命名(由于MySQL不支持RENAME DATABASE,因此需要手动逐个执行ALTER TABLE RENAME)。

SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='sys';

check_table_discard

There are tables that have been discarded.

检查实例中是否存在discarded表,即执行过ALTER TABLE ... DISCARD TABLESPACE且尚未恢复的表。

实例中存在tablespace文件大小和块大小均为0discarded表。

请确认数据安全后恢复或删除相关表,再重新检查。源版本5.7可查询:

SELECT SPACE, NAME FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE FS_BLOCK_SIZE=0 AND FILE_SIZE=0 AND NAME NOT LIKE '%#sql%';

源版本8.0可查询:

SELECT SPACE, NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE FS_BLOCK_SIZE=0 AND FILE_SIZE=0 AND NAME NOT LIKE '%#sql%';

check_table_foreign_key

The partitioned table contains foreign keys.

检查实例中分区表是否包含外键。

有包含外键或者被其他表外键引用的分区表。

需要用户解决表中外键和分区表的冲突。

  1. 查询包含外键的分区表。

    SELECT DISTINCT a.TABLE_SCHEMA, a.TABLE_NAME
    FROM information_schema.TABLE_CONSTRAINTS a, information_schema.PARTITIONS b
    WHERE a.CONSTRAINT_TYPE='FOREIGN KEY'
    AND a.TABLE_SCHEMA = b.TABLE_SCHEMA
    AND a.TABLE_NAME = b.TABLE_NAME
    AND (b.PARTITION_NAME IS NOT NULL OR b.SUBPARTITION_NAME IS NOT NULL);
  2. 查询被其他表外键引用的分区表。

    SELECT DISTINCT a.TABLE_SCHEMA, a.TABLE_NAME, a.REFERENCED_TABLE_SCHEMA, a.REFERENCED_TABLE_NAME
    FROM information_schema.KEY_COLUMN_USAGE a, information_schema.PARTITIONS b
    WHERE a.REFERENCED_TABLE_SCHEMA = b.TABLE_SCHEMA
    AND a.REFERENCED_TABLE_NAME = b.TABLE_NAME
    AND (b.PARTITION_NAME IS NOT NULL OR b.SUBPARTITION_NAME IS NOT NULL);

check_column_length

The number of views with column length greater than or equal to 64 is greater than 0.

检查实例中列长度大于或等于64view数量。

不支持列长度大于或等于64view数量大于0。

查询后删除多余view或修改对应列长度。

SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME IN (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS) AND CHAR_LENGTH(COLUMN_NAME) >= 64;

check_foreign_key_constraint

The number of tables with foreign key constraint length greater than 64 is greater than 0.

检查实例中外键约束长度大于64的表数量。

外键约束长度大于64的表数量大于0。

查询并删除相关表或者修改外键约束长度名称后重新检查。。源版本5.7INFORMATION_SCHEMA.INNODB_SYS_FOREIGN查询,源版本8.0INFORMATION_SCHEMA.INNODB_FOREIGN查询。以下以5.7为例:

SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME IN (SELECT LEFT(SUBSTR(ID,INSTR(ID,'/')+1),INSTR(SUBSTR(ID,INSTR(ID,'/')+1),'_ibfk_')-1) FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN WHERE CHAR_LENGTH(SUBSTR(ID,INSTR(ID,'/')+1))>64);

check_dictionary_table

In the MySQL 5.7 system database, there cannot be tables with the same name as those used by the MySQL 8.0 data dictionary.

检查5.7系统数据库中的表与8.0数据字典所使用的表是否存在同名。

5.7数据库中存在与8.0数据字典中相同的表名。

查询5.7系统数据库中与8.0数据字典使用的表是否有同名后,删除或者修改掉相同名称的表。

SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE LOWER(
TABLE_SCHEMA) = 'mysql' and LOWER(TABLE_NAME) IN
('catalogs', 'character_sets', 'check_constraints', 'collations',
'column_statistics', 'column_type_elements', 'columns',
'dd_properties', 'events', 'foreign_key_column_usage', 'foreign_keys',
'index_column_usage', 'index_partitions', 'index_stats',
'indexes', 'parameter_type_elements', 'parameters', 'resource_groups', 'routines',
'schemata', 'st_spatial_reference_systems',
'table_partition_values', 'table_partitions', 'table_stats', 'tables',
'tablespace_files', 'tablespaces', 'triggers', 'view_routine_usage',
'view_table_usage');

check_ins_health

The master node of the instance is not available.

检验实例是否可用(连通性)。

CPU、磁盘等都已被打满。

您可通过控制台监控与报警功能查看各项监控指标是否正常。

check_table_index_type

5.7升级8.0:MySQL 8.0 does not support creating BTREE indexes on spatial fields.

8.0升级8.4:The current instance contains SPATIAL indexes. Drop these indexes before the upgrade and recreate them after the upgrade is complete.

按升级路径执行索引兼容性检查:5.7升级8.0检查spatial字段上的BTREE索引;8.0升级8.4检查实例中是否存在空间索引(SPATIAL INDEX)。

5.7升级8.0时存在spatial字段上的BTREE索引;或者8.0升级8.4时存在SPATIAL INDEX的索引。

请在升级前删除检测到的不兼容索引,升级完成后按目标版本规则重建。5.7升级8.0可联合查询INFORMATION_SCHEMA.STATISTICSINFORMATION_SCHEMA.COLUMNS定位spatial字段上的BTREE索引,如下所示:

SELECT DISTINCT s.* FROM INFORMATION_SCHEMA.STATISTICS s
INNER JOIN INFORMATION_SCHEMA.COLUMNS c
ON s.TABLE_SCHEMA = c.TABLE_SCHEMA
AND s.TABLE_NAME = c.TABLE_NAME
AND s.COLUMN_NAME = c.COLUMN_NAME
WHERE s.TABLE_SCHEMA NOT IN ('mysql', 'sys')
AND c.DATA_TYPE IN ('GEOMETRY', 'POINT', 'LINESTRING', 'POLYGON', 'MULTIPOINT', 
'MULTILINESTRING', 'MULTIPOLYGON', 'GEOMETRYCOLLECTION')
AND s.INDEX_TYPE = 'BTREE';

8.0升级8.4可执行:

SELECT DISTINCT TABLE_SCHEMA, TABLE_NAME, INDEX_NAME FROM INFORMATION_SCHEMA.STATISTICS WHERE INDEX_TYPE IN ('SPATIAL', 'RTREE') AND TABLE_SCHEMA NOT IN ('mysql', 'sys', 'performance_schema', 'information_schema');

check_read_ins_level

The specifications of read-only instances are inconsistent.

检查高性能本地盘实例下多个只读实例的规格是否一致。

同一主实例下的只读实例使用了不同规格,升级过程中无法统一映射目标规格。

请将普通只读实例调整为一致的在售规格后,重新发起升级检查。

check_bak_read_exists

There is a read-only instance, but there is no standby read-only instance.

检查高性能本地盘实例存在普通只读实例时,是否至少存在一个备用只读实例。

当前实例存在普通只读实例,但没有备用只读实例,无法满足升级切换要求。

请先调整只读实例拓扑并保留至少一个备用只读实例。

check_bak_read_number

Verify that the number of spare read-only instances cannot exceed 5.

检查高性能本地盘实例的备用只读实例数量是否超过5个。

当前备用只读实例数量大于5。

请释放或调整多余的备用只读实例,数量不超过5个后重新检查。

check_read_ins_conn_type

The network types of the read-only instance and the standby read-only instance are inconsistent.

检查普通只读实例与备用只读实例的网络连接类型是否一致。

同一拓扑中同时存在LVSDNS连接类型。

请将普通只读实例和备用只读实例调整为一致的连接类型后重新检查。

check_interrupt_task

The standby read-only has unfinished tasks.

检查备用只读实例上是否存在未完成或已中断的大版本相关任务。

备用只读实例仍有等待、运行、暂停或中断状态的任务。

请等待相关任务完成,或处理并结束异常任务后重新发起检查。

check_mgr_disabled_for_84

MySQL 8.4 no longer supports Group Replication (MGR).

检查8.0升级8.4时源实例是否启用了MGR。检查performance_schema.replication_group_members中是否存在成员,或group_replication_start_on_boot是否为ON。

当前实例存在MGR成员,或者配置为实例启动时自动拉起Group Replication。

请停止MGR,移除Group Replication相关参数并重启实例,确认MGR不再启用后重新检查。