Error number: MY-011977; Symbol: ER_IB_MSG_152; SQLSTATE: HY000
Message: %s
错误说明
ER_IB_CLONE_SQL错误是MySQL服务器返回的一种通用错误代码,该代码在MySQL 5.7.2后得到改进并在5.7.5版本中更新,通常指示发生了一些错误,在MySQL系统中出现了瓶颈。该错误的完整消息为:”Requested clone id does not exist in metadata”.这意味着MySQL服务器无法在元数据表中找到要求的复制ID,这可能是因为复制源或者复制节点中不存在此ID,也可能是因为复制ID具有与此服务器不兼容的格式。
常见案例
ER_IB_CLONE_SQL 错误常见于MySQL InnoDB集群。在要求某个InnoDB集群节点加入集群之前,MySQL服务器可能会尝试检查该节点上复制ID是否与元数据表中的复制ID一致;如果不一致,MySQL服务器可能会返回ER_IB_CLONE_SQL 错误。此外,该错误还可能在执行具有显式复制ID的查询时发生。
解决方法
解决此错误有两个主要部分:确保复制ID具有可接受的格式和内容,其次是确保此复制ID存在于集群或客户端上。 MyQL InnoDB Cluster要求复制ID具有UUID格式。可以使用下面的SQL查询检查集群中是否存在此值:SELECT CLONE_ID FROM mysql_innodb_cluster_metadata.instances;
此外,MySQL客户端可以使用–server-id 选项定义复制ID,此选项必须与集群内的某个节点保持一致,否则从客户端请求可能会导致ER_IB_CLONE_SQL错误。
如果使用恰当的复制ID,但仍然遇到ER_IB_CLONE_SQL,则应检查所用MySQL版本是否支持InnoDB集群,并确保正确安装和校验所用的InnoDB集群插件。可以使用SELECT PLUGIN_STATUS FROM performance_schema.plugins;查询正确的InnoDB集群插件,并执行MySQL安装过程中提供的检查脚本,要求插件已经正确安装并处于激活状态。使用此方法可以避免永久停止InnoDB集群节点上的集群运行。
如果一切都已准备就绪,但是依然遇到ER_IB_CLONE_SQL,可以使用MySQL 命令重启该服务器:
sudo systemctl restart mysql
重新启动MySQL服务器后,应重新检查复制ID,以确保已正确安装InnoDB集群插件,并检查集群是否正确配置,确保该服务器可以访问其他节点上的所有复制ID。此外,可以查看日志文件以获取更具体的信息,并根据这些信息执行更多步骤来解决该错误。