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 个不同的集群,问题出在所有集群中,所以很明显的建议:不要在您的生产数据库中运行此命令。
| 归档时间: |
|
| 查看次数: |
747 次 |
| 最近记录: |