1. 程式人生 > >Mysql叢集-----(附錄2) Mysql 主從複製,從伺服器無法連線問題

Mysql叢集-----(附錄2) Mysql 主從複製,從伺服器無法連線問題

Mysql 主從複製,從伺服器無法連線

從伺服器報錯如下:

Slave_IO_Running: Connecting
Slave_SQL_Running: Yes

可能的解決辦法

  1. 網路不同
  2. 密碼不對
  3. 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;
  1. 主伺服器重新整理日誌:
   mysql> flush logs;
  1. 檢視主伺服器日誌點記錄下:file 和position 位置;
    mysql> show master status\G;
  1. 切換到從伺服器,修改從伺服器同步點
mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000114',MASTER_LOG_POS=120;
  1. 啟動從伺服器:
start slave;
  1. 檢視從伺服器同步狀態:
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

隨便修改一下 重啟就行了