我一直在建立master->slave_a->slave_b
关系并且遇到了一些麻烦。我目前的master->slave_a
复制工作正常。
两个从站中的每一个都具有完全相同的配置,除了主机名server-id
设置。每当我尝试启动从属设备时,slave_b
都会弹出以下错误:
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).
我真的不明白,因为我所有的服务器 ID 都相距很远1->2626->2629
(m->s->s)。
我将它们设置在我的/etc/mysql/conf.d/replication.cnf
文件中 - 它似乎被包含在内,但我不知道如何检查 mysql 正在接收哪个服务器 ID。
在此先感谢 :) 汤姆。
Master 的 server_id 与它执行到完成的每个查询一起记录在其二进制日志中。要查看二进制日志中的那些 server_id 值,您可以针对任何二进制日志运行mysqlbinlog 。
由于 Master -> Slave_A 工作正常,您可以执行以下操作来清理 Slave_A 和 Slave_B 之间的内容:
在 Slave_A 上,在 mysql 中运行以下命令:
在 Slave_A 上,在 OS 中运行以下命令:
在 Slave_A 上,在 mysql 中运行以下命令:
这将使 Slave_B 查看 server_id 的正确值,并重新建立 MySQL 复制。
顺便说一句,您需要确保在 Slave_B 上禁用二进制日志记录,因为除非 Slave_B 将主站转到其他从站,否则从站没有必要。
在我的情况下(主从)我解决了删除这个文件
然后重启 MySQL 服务,当 MySQL 服务启动时会生成一个新的 UUID
在 Linux 上充实 Chumillas 的解决方案如下所示。所有命令都在从属服务器上运行,无需重新加载数据库,无需重新启动主服务器,整个过程只需几秒钟:
我在这个问题上苦苦挣扎了一段时间,主人显示错误
在 my.ini 中使用不同的 IP 和不同的“服务器 ID”正确设置了主从
问题:
从属 SQL_Thread 也在主服务器上运行...(不确定如何:()
修复:
运行“停止奴隶;” 在大师
POST ACTIONS
通过验证从属状态(在 SLAVE 上)确保复制仍在工作
就我而言,上面解决了这个问题,之后主从复制也可以正常工作。
我确实遇到了同样错误的类似问题。解决方案是在“CHANGE MASTER TO MASTER_HOST”查询中创建药膏时更正 PublicIP。
当您在创建从站时使用与主站 IP 相同的从站 IP 时,会出现相同的错误。因此,MySql从服务器倾向于指向同一个服务器IP(从IP而不是主IP),形成相同服务器ID的冲突
删除从 master 的 datadir 复制的 auto.cnf。重启mysqld。
我也犯了同样的错误,但这是我的短视。我现在用作从服务器的服务器曾经是主服务器。因此,一旦我尝试启动从属服务器,show slave status 'master_host' 值默认为该服务器 i/p,而不是新的主服务器 i/p。所以我重新运行了“更改主机”命令,添加了指向新主机的“master_host”。呃!!也许这可能会帮助别人。