mysql 5.7配置主从 出现Slave_IO_Running:Connecting、Slave_SQL_Running:no、slave_io_running:no的问题

主服务器IP:192.168.58.128
从服务器IP:192.168.58.129

192.168.58.128主操作:

首先要保证主从两台数据库的版本,数据库表等一致, 本教程是基于5.7, 64位的mysql数据库, 系统是centos 5.7, 主从均为虚拟机
主节点配置:
编译/etc/my.cnf文件的[mysqld]下加入如下配置
server_id = 1 #主数据库端ID号
log-bin = mysql-bin #开启二进制日志
binlog-do-db = mytest #需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可
auto_increment_offset = 1 #这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_increment = 1 #这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
log_bin_trust_function_creators = 1 #将函数复制到slave

重启mysql
service mysqld restart

登陆mysql
mysql -uroot -p1234

配置从服务器登录的用户密码,权限等, slave 为登录用户名, 192.168.58.129 为从库的ip,slpass 为从服务器登录的密码,请根据自身的情况配置
grant replication slave,replication client on . to ‘slave’@‘192.168.58.129’ identified by ‘slpass’;

刷新权限
FLUSH PRIVILEGES;

查看主节点状态:
show master status\G;

mysql 5.7配置主从 出现Slave_IO_Running:Connecting、Slave_SQL_Running:no、slave_io_running:no的问题_第1张图片
从节点(192.168.58.129)配置:
编译/etc/my.cnf文件的[mysqld]下加入如下配置
server_id = 2 #从节点的ID号,不能和主节点的一样
relay_log = relay-log #开启中继日志
read_only = ON #只读开启,实现读写分离

重启从节点mysql并配置:
service mysqld restart

登陆从节点mysql
mysql -uroot -p1234

#设置复制的主节点数据库,pos位置()

CHANGE MASTER TO MASTER_HOST=‘192.168.58.128’,MASTER_USER=‘slave’,MASTER_PASSWORD=‘slpass’,MASTER_LOG_FILE=‘mysql-bin.000002’,MASTER_LOG_POS=2518;

上面语句参数说明:
MASTER_HOST:主库ip,
MASTER_USER:上面主库配置从服务器登录的用户密码时配置的用户名
MASTER_PASSWORD: 上面主库配置从服务器登录的用户密码时配置的用户密码
MASTER_LOG_FILE:主库的数据库日志文件, 参考上面show master status\G; 得出的File 字段的值,
MASTER_LOG_POS:参考上面show master status\G; 得出的Position 字段的值
开启主从复制并查看状态:
登录mysql后执行:START SLAVE;

登陆mysql后执行:show slave status\G;
红圈里面的 Slave_IO_Running 和 Slave_SQL_Running 均为 Yes , 是已经配置成功的标识

mysql 5.7配置主从 出现Slave_IO_Running:Connecting、Slave_SQL_Running:no、slave_io_running:no的问题_第2张图片

 

可能出现的问题:

前几天在测试主从服务器Mysql同步时遇到了从数据库显示Slave_IO_Running:Connecting; Slave_SQL_Running:Yes的问题。


下面列举几种可能的错误原因:

1.网络不通
2.账户密码错误
3.防火墙
4.mysql配置文件问题
5.连接服务器时语法
6.主服务器mysql权限

我的服务器ip:
主服务器ubuntu:192.168.16.105
从服务器ubuntu:192.168.16.115

逐项排除:
1:因为从服务器是虚拟机,网卡选择了桥接模式,ip地址确认在同一网段中,且互ping能通,排除网络问题。
2:主服务器创建了账号slave密码slave的权限账号,在主服务器可以登录slave帐号,排除帐号密码问题。
3:终端输入 sudo ufw disable 关闭防火墙, sudo ufw status查看防火墙,确认已关闭,排除防火墙原因。(sudo ufw enable打开防火墙)

在这里插入图片描述

4:配置文件
(1)查看主服务器配置文件:sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf,看第83行:确认log_bin和server-id已经取消注释,设置无错误。

在这里插入图片描述

(2)查看从服务器:

此处server-id只需要与主服务器不同即可,我设置为ip的末尾数字115。确认配置无错误,排除。

在这里插入图片描述

5.语法:
(1)查看主服务器二进制日志信息show master status;在这里插入图片描述

(2)设置从服务器链接到master主服务器,确认语句无错误,排除。
注:
master_host:主服务器Ubuntu的ip地址
master_log_file: 前面查询到的主服务器日志文件名
master_log_pos: 前面查询到的主服务器日志文件位置

change master to master_host='192.168.16.105', master_user='slave', master_password='slave',master_log_file='mysql-bin.000011', master_log_pos=154;

在这里插入图片描述

6.权限:
(1)主服务器查看slave帐号,已设置登录ip为%

(2)在从服务器上登录主服务器slave帐号测试:

在这里插入图片描述

无法登录主服务器!打开主服务器配置文件发现43行有一条绑定主机ip的语句,问题出在这里!!!给它注释掉!保存退出。重启主服务器数据库:sudo service mysql restart

在这里插入图片描述

(3)重新测试从服务器上登录主服务器slave帐号:登录成功!
(4)重新进入从服务器链接master主服务器,start slave开启主从同步,输入show slave status \G查看从服务器状态,若开启不成功先stop slave,再start slave,可以看到Slave_IO_Runninghe和Slave_SQL_Running状态都是Yes,同步成功。

在这里插入图片描述

一、问题描述:

当我们配置好MySQL主主同步时,是可以实现主主同步,但是重启机器后或者其他原因导致MySQL无法同步了。

二、Slave两个关键进程

mysql replication 中slave机器上有两个关键的进程,死一个都不行,一个是slave_sql_running,一个是Slave_IO_Running,一个负责与主机的io通信,一个负责自己的slave mysql进程。

三、如果是Slave_SQL_Running:no:

mysql 5.7配置主从 出现Slave_IO_Running:Connecting、Slave_SQL_Running:no、slave_io_running:no的问题_第3张图片

解决办法如下:

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  

mysql 5.7配置主从 出现Slave_IO_Running:Connecting、Slave_SQL_Running:no、slave_io_running:no的问题_第4张图片

四、如果是slave_io_running:no

mysql 5.7配置主从 出现Slave_IO_Running:Connecting、Slave_SQL_Running:no、slave_io_running:no的问题_第5张图片

解决办法如下:

1、查看主服务器

MariaDB [(none)]> show master status\G                                             

mysql 5.7配置主从 出现Slave_IO_Running:Connecting、Slave_SQL_Running:no、slave_io_running:no的问题_第6张图片

2、在从服务器上查看

mysql 5.7配置主从 出现Slave_IO_Running:Connecting、Slave_SQL_Running:no、slave_io_running:no的问题_第7张图片

问题所在:发现Master_Log_File没有对应。

3、出现Slave_IO_Running: No的机器上操作

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 5.7配置主从 出现Slave_IO_Running:Connecting、Slave_SQL_Running:no、slave_io_running:no的问题_第8张图片

到此问题就解决了!

你可能感兴趣的:(Mysql)