MySQL复制线程长时间Opening tables
这篇讲的是一个MySQL主从复制中,slave实例的SQL线程长时间卡在“Opening tables”状态,导致复制延迟超过16小时的实际案例。 作者从现象出发,先排除了table cache过小的常见猜测,通过检查slave status、系统负载和磁盘IO,均未发现明显异常。线索最终指向了MySQL的错误日志,其中出现了大量关于“performance_schema”表结构错误的提示。 问题的根源在于跨版本复制:master是MySQL 5.5,而slave是5.6。从5.5到5.6,performance_schema的内部表定义发生了变化。当使用xtrabackup搭建新slave后,旧的5.5版本元数据被带入,导致5.6版本的slave在尝试打开并初始化这些系统表时,因结构不符而陷入困境。 解决方法明确:在slave实例上执行`mysql_upgrade`命令,更新所有系统表到正确的版本。这个案例提醒我们,在MySQL版本升级或跨版本搭建复制环境时,系统表的兼容性是一个需要特别注意的潜在风险点。