Mysql 主从复制,从服务器无法连接
从服务器报错如下:
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
可能的解决办法
- 网络不同
- 密码不对
- pos不对
1. 网络不通解决方案:
1. telnet 测试端口是否通
telnet 192.168.56.11 3306
以下结果表示端口通:
端口不同结果:
telnet: connect to address 192.168.56.11: Connection refused
2. 关闭防火墙或则添加端口
Centos7 防火墙常用命令
#启动firewall
systemctl start firewalld.service
#停止firewall
systemctl stop firewalld.service
#禁止firewall开机启动
systemctl disable firewalld.service
开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
重启防火墙
firewall-cmd --reload
2. 密码或权限不正确
1.密码测试
mysql -utest -p -h192.168.56.11
可测试密码正确性
2. 分配任何主机都能连接权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';
# 刷新权限
mysql> FLUSH PRIVILEGES;
3. pos位置不正确解决方案
1. 使用mysql change 修改pos
CHANGE MASTER TO
MASTER_HOST='192.168.56.11',
MASTER_USER='test',
MASTER_PASSWORD='centos',
MASTER_LOG_FILE='mysql-bin.000008',
MASTER_LOG_POS= 502;
2. 如果不能同步,或者之前的log-bin 丢失,可以使用新的同步点,步骤如下:
从服务器操作:
1. 停止slave
mysql> stop slave;
- 主服务器刷新日志:
mysql> flush logs;
- 查看主服务器日志点记录下:file 和position 位置;
mysql> show master status\G;
- 切换到从服务器,修改从服务器同步点
mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000114',MASTER_LOG_POS=120;
- 启动从服务器:
start slave;
- 查看从服务器同步状态:
show slave status\G;
4. Slave_IO_Running: No 可能的解决方案
如果Slave_IO_Running: No 则查看 Last_IO_Error:
显示信息
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.
解决办法(原因可能是服务器是拷贝):
修改数据文件中的 auto.cnf
[auto]
server-uuid=6dcee5be-8cdb-11e2-9408-90e2ba2e2ea6
随便修改一下 重启就行了