如何在 RDS Aurora - MySQL 5.6 只读副本中检查表的状态

Sim*_*ate 5 mysql amazon-web-services amazon-aurora

我们有一个在 AWS 上运行的 RDS Aurora - MySQL 5.6 兼容集群。它有一个写入器实例和一个只读副本。我们想通过运行以下命令来检查表的状态(查看它是否已损坏):

check table table_name;
Run Code Online (Sandbox Code Playgroud)

我们只能在writer端点运行这个命令,如果我们在只读端点运行相同的命令,它将永远挂起,在 processlist 中留下一个查询(出于安全原因,其余的输出被删除);

+----+---------+-------------+-----------------------------+
| id | command | state       | info                        |
+----+---------+-------------+-----------------------------+
|  4 | Killed  | System lock | check table table_name      |
+----+---------+-------------+-----------------------------+
Run Code Online (Sandbox Code Playgroud)

我们不能使用以下任何一种来终止这个查询:

CALL mysql.rds_kill(4)
CALL mysql.rds_kill_query(4) 
Run Code Online (Sandbox Code Playgroud)

他们不工作。显然,在运行该命令(检查表 table_name)后,该表将被锁定,并且不允许我对该特定表运行任何进一步的命令。

AWS 支持建议升级 Aurora 版本,但我们尝试了 3 个不同的版本,我们在所有版本中都看到了问题:

极光 v1.19.2(最新)
极光 v1.17.8
极光 v1.16

所以问题是,为什么会发生这种情况?在 Aurora MySQL 5.6 中检查表是否损坏的正确命令是什么?

警告: 我们尝试了 3 个不同的集群,问题出在所有集群中,所以很明显的建议:不要在您的生产数据库中运行此命令。