因此,我有一个由3个节点组成的集群,每个节点位于同一个城市的一个不同的数据中心。我的体系结构是一个主节点,其中一个节点(我们称之为节点1)是主节点,另外两个节点是次要节点。
因此,我注意到MySQL客户端出现故障。我试着重新启动它,但失败了。当我检查日志时,我看到一个错误,上面写着:InnoDB: Unable to lock ./ibdata1, error: 11。
此时,试图解决这个问题,唯一对我有效的是当我使用lsof -i:3306并终止与mysqld相关的进程时。
正如我所预料的,终止mysqld进程迫使我的集群将其主节点从节点1切换到节点3,然后使用mysqlsh管理集群,并使用setPrimaryInstance()方法将节点3重新转换为节点1,作为我的主节点。
这样做后,Node 1中的MySQL客户端再次停止工作,并且崩溃,不能再次启动。我必须通过相同的过程(即终止与它相关的进程)才能再次工作,这将再次切换主节点。
因此,我的问题是:在MySQL客户端仍然工作时,是否有任何方法将节点1保持为主节点?为什么切换主实例会使MySQL客户端崩溃呢?我不明白为什么会这样。
我还在我的系统上安装了mysql路由器。我使用的是MySQL版本8.0.25。
发布于 2021-06-22 18:42:19
守护进程称为mysqld。这通常是启动后“启动”一次,可能是自动的。
命令行客户机称为mysql;这不是一个‘服务’,不需要sudo。
“群集”意味着多台服务器。这意味着您必须连接到特定的机器(或通过代理)。运行没有mysql的-h要求连接到同一台机器上的实例,即通过“套接字”。
如果这还不足以确定要修复什么,那么请列出所涉及的机器,说明哪个MySQL组件在哪个服务器上。包括客户端(S),如mysql、MySQL Shell和“自动脚本”。
https://dba.stackexchange.com/questions/294636
复制相似问题