在进行 mysql 主、从服务器配置时,”SHOW SLAVE STATUS; “ 查看从库状态 Slave_IO_Runing,出现错误:“Slave_IO_Running: Connecting” 问题分析
一、问题描述:
“Slave_IO_Running: Connecting” 表示 MySQL 主从复制中从服务器的 I/O 线程正尝试连接主服务器,但尚未成功连接。可能导致该问题的原因和解决方法如下:
二、解决方法:
1、确认从库连接指向主库时,用户、密码正确,以及文件名、位点无误。
#切换至从库bin目录,登录从库
mysql -h localhost -P3307 -uroot-p
#先停止同步
STOP SLAVE;
# 修改从库指向到主库,使用主库记录的文件名以及位点
# 主库show master status; 显示的 File, Position )
CHANGE MASTER TO
master_host = 'localhost',
master_user = 'db_sync',
master_password = 'db_sync',
master_log_file = 'mysql-bin.000002',
master_log_pos =154;
#启动同步
START SLAVE;
2、确认连接主、从数据库时,密码的加密方式一致。如更改新创建的 db_sync 用户加密插件为 mysql_native_password
#切换至主库 bin 目录,登录主库
mysql -h localhost -u root -p
# 创建新用户,授权主库、从库复制专用账号(如果失败,可以使用以下命令)
# GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync';
# grant replication slave on *.* to 'db_sync'@'%' identified by 'db_sync';
# flush privileges;
# 上述命令如果不成功,尝试以下:
# 先创建新用户 db_sync
create user 'db_sync'@'%' identified by 'db_sync';
# 授权主备复制专用账号
GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%';
# 或者:
GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' WITH GRANT OPTION;
# 更改密码加密方式(连接不上,可能是主、从数据库此步不同)
alter user 'db_sync'@'%' identified with mysql_native_password by 'db_sync';
#刷新权限
FLUSH PRIVILEGES;
#确认位点记录下文件名以及位点
show master status;
3、其他原因:
-
- 网络不通:检查网络连接是否正常,确保从服务器与主服务器之间可以互相访问。可以使用 ping 命令检查网络连通性。
-
- 主从配置问题:检查从服务器的主从配置是否正确,包括主服务器的 IP 地址、端口和复制用户的凭据等。确认在从服务器上正确设置了 CHANGE MASTER TO 语句中的相关参数,如 MASTER_HOST (主服务器地址)、 MASTER_PORT (主服务器端口,若不是默认的 3306 则需明确指定)、 MASTER_USER (用于复制的用户名)、 MASTER_PASSWORD (用户名对应的密码)、 MASTER_LOG_FILE (主服务器的二进制日志文件名)和 MASTER_LOG_POS (二进制日志文件的位置)。
-
- 复制用户权限问题:确保复制用户在主服务器上具有 REPLICATION SLAVE 权限。可以在主服务器上使用以下命令检查权限: SHOW GRANTS FOR ‘eplication_user’@‘slave_host’ ;如果没有相应权限,则使用命令授权,例如: GRANT REPLICATION SLAVE ON . TO repl; FLUSH PRIVILEGES; (其中 repl 是复制用户,可根据实际情况修改)。
-
- 防火墙问题:检查主服务器和从服务器的防火墙设置,确保没有阻止数据库连接。可以尝试关闭防火墙或配置防火墙规则以允许数据库连接。例如在 CentOS 7 上,可使用以下命令停止防火墙: systemctl stop firewalld 。但需注意,关闭防火墙可能会带来安全风险,确保在必要时重新启用防火墙或配置适当的防火墙规则。
-
- 主服务器状态问题:检查主服务器的状态是否正常,确保主服务器正在运行,并且没有出现故障或异常。
-
- 密码错误:仔细检查复制用户的密码是否正确。
-
- 未指定端口号:如果没有指定主服务器的端口号,可能会默认使用 3306。但如果主服务器使用了非默认端口,需在从服务器的配置中明确指定端口号,例如: CHANGE MASTER TO MASTER_HOST=‘127.0.0.1’, MASTER_PORT=3307, MASTER_USER=‘mysqlsync’, MASTER_PASSWORD=‘123456’, MASTER_LOG_FILE=‘mysql-bin.000001’, MASTER_LOG_POS=156;
-
- 主服务器配置问题:检查主服务器的配置文件(如 my.cnf ),确保没有配置 bind-address 参数,该参数用于指定访问主服务器的 IP 地址,可能会限制从服务器的连接。