问题:
Fatal error: The slave I/O thread stops because master and slave have equal..
主从服务器MySQL同步时遇到了从数据库显示 Slave_IO_Running:NO 的问题。
排查:
① 查看一下从库的 Master_Log_File 和 Master_Log_Pos 是否和主库对应:
主库:
从库:
如果主库和从库的 Master_Log_File 和 Master_Log_Pos 都是一致的话,继续往下↓↓↓
② 查看从库是否可以登录到主库:
如果可以登录,继续往下↓↓↓
③ 查看主库和从库的 server-id 是否一致,server-id 是不能一致的:
主库:
从库:
如果 server-id 也不一致,继续往下↓↓↓
④ 如果到了这里,说明你的情况也和我一样,是 uuid值 一致导致的。
我们先查看一下主库和从库的 uuid
主库:
从库:
可以看出主库和从库的 uuid 的值是相同的,所以才会导致 Slave_IO_Running:NO 的问题。
解决:
找到 auto.cnf 文件,修改里面的 uuid 值,保证各个 db 的 uuid 不一样,重启 db 即可。
- 查找 auto.cnf 文件
find / -name auto.cnf
- 修改 auto .cnf 文件
vim /usr/local/mysql/data/auto.cnf
注意:这里修改的 auto.cnf 文件,随便是主库的还是从库的都可以,只要保证主库和从库的 uuid 的值不一致即可。
- 重启 MySQL
systemctl restart mysql
到这里就基本上就可一实现同步了!!!
番外:
如果,你到了这里,说明你还没有成功同步~~~
那么,你可以试试下面的方法:
先查看 从库 的信息:
如果你是,Slave_SQL_Running:no 的这种情况:
解决办法:
MariaDB [(none)]> stop slave;
MariaDB [(none)]> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G
如果你是,slave_io_running:no 的这种情况:
解决办法:
1.查看主服务器
MariaDB [(none)]> show master status\G
2.在从服务器上查看
发现问题:发现Master_Log_File没有对应。
3.在从库上进行下面操作
MariaDB [(none)]> slave stop;
MariaDB [(none)]>CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000026', MASTER_LOG_POS=0;
MariaDB [(none)]> slave start;
MariaDB [(none)]> show slave status\G
到这里就全部解决了~~~
基本上MySQL主从 复制的一系列问题就是这几种!!!
注:番外的原文地址