该问题的原因是从和主服务器连接有问题
解决一
可能是从服务器的配置文件有问题,从服务器一定要有一个唯一的server-id
方法:去从服务器的配置文件,重新修改server-id
解决二
可能是复制用户创建有问题,
检测创建的用户是否有效:
直接登录该服务器id,但是把用户名和密码换成你创建的用户。
方法:(如果登录不上的话,就是创建的用户有问题)
1.直接删除,然后重新创建
2.恢复原来的初始规则(可能设定的密码不符合mysql8的密码规则)
alter user 用户名@'%' identified by '密码' password expire never;
alter user 用户名@'%' identified with mysql_native_password by '密码';
3.然后重新检测,能登录说明创建用户是合理的
解决三
建立通道出现问题
如下是建立通道的语句:(注意下面要填的数据,都是主服务器的信息)
-- CHANGE MASTER TO
-- MASTER_HOST='ID',
-- MASTER_USER='之前在主服务上创建的用户名',
-- MASTER_PASSWORD='主服务器上创建用户的密码',
-- MASTER_LOG_FILE='文件id',
-- MASTER_LOG_POS=日志文件初始位置 for channel '通道名';
文件id和日志文件初始位置,可以通过如下语句查看:(下面语句应该在主服务器上查看)
show master status;
图片中的File就是文件id,position就是日志文件初始位置,将其复制即可。
解决四
由于每次数据库重启后都会导致master status发生变化,所以需要根据当前的master status来修改从数据库中的SQL同步语句。
1.如果重启了主服务器的mysql,那么主服务器上的Position会发生变化,这时我们可能会建立错误的通道,导致主从服务器连接不上。
方法:
1.修改通道(在从服务器上操作)
(先停止同步)
stop slave;
(然后修改通道)
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='id',
SOURCE_USER='用户名',
SOURCE_PASSWORD='密码',
SOURCE_LOG_FILE='10_0_4_14-bin.000004',
SOURCE_LOG_POS=32793575 for channel '通道名' ;
2.重修建立通道
删除旧通道:
stop slave;
reset slave all for channel '要删除的通道名';
建立通道
上面已经给出!