在MySQL主从配置的时候,从库端【start slave】之后,查看复制状态【show slave status\G】,就可以看到如题所示的错误;它意味着,从库端到主库端的连接,没有被成功的建立;也就是说,从库端无法从主库端拿到数据。

为了更具体的排查问题,我们需要查阅MySQL的错误日志,以便进一步的定位问题。

MySQL的错误日志:【cat /etc/my.cnf | grep log-error】

在我的环境中,发生上述报错的时候,错误日志的输出如下:

可以从上面的错误日志中,很清晰的看到问题:
【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】

可以看到,问题是因为主从的MySQL上面具有一样的【server-id】导致的,在replication架构中,【server-id】需要不一致。

查看一下是不是这样的。

主库端:

从库端:

可以看到,主从的【SERVER-ID】确实是一样的。

解决:

  1. 从库,停服务
  2. 修改MySQL配置文件【/etc/my.cnf】中的【SERVER-ID】的配置
  3. 从库,启服务

开始操作:

上面,修改【server-id】后,启动MySQL服务的日志:

启动,REPLICATION的复制进程【start slave】:

可以看到,还在报错:
【Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.】

这个过程,后台的报错日志是:

按照上面的方法,把从库的【server_uuid】修改掉;最后,如下所示:

这个过程中,后台的日志如下:

再看看MySQL在从库的服务的状态:

如上,这样就没问题了。


终了。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

隐藏
变装