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
隨便修改一下 重啓就行了