Last_IO_Error: error connecting to master 'userb@192.168.128.131:3306' - retry-time: 60 maximum-retries: 86400 message: Can't connect to MySQL server on '192.168.128.131' (113 "No route to host")

时间:2021-10-09 16:25:58

环境:A主机( 192.168.128.131 ) + B主机( 192.168.128.132 )

目的:实现MySQL数据库备份( AB复制 )

问题描述:

MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
                Slave_IO_State: Connecting to master
                   Master_Host: 192.168.128.131
                   Master_User: userb
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: master1.000001
           Read_Master_Log_Pos: 950
                Relay_Log_File: localhost-relay-bin.000001
                 Relay_Log_Pos: 4
         Relay_Master_Log_File: master1.000001
              Slave_IO_Running: Connecting  # 出现错误,IO线程处于正在连接状态
             Slave_SQL_Running: Yes
               Replicate_Do_DB: 
           Replicate_Ignore_DB: 
            Replicate_Do_Table: 
        Replicate_Ignore_Table: 
       Replicate_Wild_Do_Table: 
   Replicate_Wild_Ignore_Table: 
                    Last_Errno: 0
                    Last_Error: 
                  Skip_Counter: 0
           Exec_Master_Log_Pos: 950
               Relay_Log_Space: 256
               Until_Condition: None
                Until_Log_File: 
                 Until_Log_Pos: 0
            Master_SSL_Allowed: No
            Master_SSL_CA_File: 
            Master_SSL_CA_Path: 
               Master_SSL_Cert: 
             Master_SSL_Cipher: 
                Master_SSL_Key: 
         Seconds_Behind_Master: NULL
 Master_SSL_Verify_Server_Cert: No
                 Last_IO_Errno: 2003
                 Last_IO_Error: error connecting to master 'userb@192.168.128.131:3306' - retry-time: 60  maximum-retries: 86400  message: Can't connect to MySQL server on '192.168.128.131' (113 "No route to host")
                Last_SQL_Errno: 0
                Last_SQL_Error: 
   Replicate_Ignore_Server_Ids: 
              Master_Server_Id: 0
                Master_SSL_Crl: 
            Master_SSL_Crlpath: 
                    Using_Gtid: No
                   Gtid_IO_Pos: 
       Replicate_Do_Domain_Ids: 
   Replicate_Ignore_Domain_Ids: 
                 Parallel_Mode: conservative
                     SQL_Delay: 0
           SQL_Remaining_Delay: NULL
       Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
              Slave_DDL_Groups: 0
Slave_Non_Transactional_Groups: 0
    Slave_Transactional_Groups: 0

 

解决过程:

根据Last_IO_Error的报错信息 message: Can't connect to MySQL server on '192.168.128.131' (113 "No route to host") 发现B主机不能连接A主机,然后尝试是否能Ping通A主机

[root@localhost ~]# ping 192.168.128.131
PING 192.168.128.131 (192.168.128.131) 56(84) bytes of data.
64 bytes from 192.168.128.131: icmp_seq=1 ttl=64 time=0.384 ms
64 bytes from 192.168.128.131: icmp_seq=2 ttl=64 time=0.267 ms
64 bytes from 192.168.128.131: icmp_seq=3 ttl=64 time=0.412 ms
64 bytes from 192.168.128.131: icmp_seq=4 ttl=64 time=0.245 ms
64 bytes from 192.168.128.131: icmp_seq=5 ttl=64 time=0.259 ms
^C
--- 192.168.128.131 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 0.245/0.313/0.412/0.071 ms

B主机能够Ping通A主机,猜测可能是防火墙的问题,于是关闭防火墙:

[root@localhost ~]# iptables -F  # 关闭防火墙
[root@localhost ~]# setenforce 0  # 关闭SELinux

再次重新执行B主机的从配置:

MariaDB [(none)]> stop slave;
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> change master to
    -> master_host='192.168.128.131',
    -> master_user='userb',
    -> master_password='root',
    -> master_log_file='master1.000001',
    -> master_log_pos=1845;
Query OK, 0 rows affected (0.005 sec)

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.003 sec)

查看B主机的slave状态:

MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 192.168.128.131
                   Master_User: userb
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: master1.000001
           Read_Master_Log_Pos: 1845
                Relay_Log_File: localhost-relay-bin.000002
                 Relay_Log_Pos: 553
         Relay_Master_Log_File: master1.000001
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes
               Replicate_Do_DB: 
           Replicate_Ignore_DB: 
            Replicate_Do_Table: 
        Replicate_Ignore_Table: 
       Replicate_Wild_Do_Table: 
   Replicate_Wild_Ignore_Table: 
                    Last_Errno: 0
                    Last_Error: 
                  Skip_Counter: 0
           Exec_Master_Log_Pos: 1845
               Relay_Log_Space: 866
               Until_Condition: None
                Until_Log_File: 
                 Until_Log_Pos: 0
            Master_SSL_Allowed: No
            Master_SSL_CA_File: 
            Master_SSL_CA_Path: 
               Master_SSL_Cert: 
             Master_SSL_Cipher: 
                Master_SSL_Key: 
         Seconds_Behind_Master: 0
 Master_SSL_Verify_Server_Cert: No
                 Last_IO_Errno: 0
                 Last_IO_Error: 
                Last_SQL_Errno: 0
                Last_SQL_Error: 
   Replicate_Ignore_Server_Ids: 
              Master_Server_Id: 131
                Master_SSL_Crl: 
            Master_SSL_Crlpath: 
                    Using_Gtid: No
                   Gtid_IO_Pos: 
       Replicate_Do_Domain_Ids: 
   Replicate_Ignore_Domain_Ids: 
                 Parallel_Mode: conservative
                     SQL_Delay: 0
           SQL_Remaining_Delay: NULL
       Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
              Slave_DDL_Groups: 0
Slave_Non_Transactional_Groups: 0
    Slave_Transactional_Groups: 2