通过SSH隧道进行MySQL复制

问题描述:

尽管通过官方文档,文章和SO问题花费了很多时间,但我仍无法通过SSH隧道设置复制。通过SSH隧道进行MySQL复制

我的主人是192.168.0.105和奴隶是192.168.0.104。我已经通过已经建立的SSH隧道:

ssh -L 3305:127.0.0.1:3306 [email protected] -f -N 

其中tunneluser是我本地用户。

我坐上从下面的输出(省略了不相关的线):

mysql -h 127.0.0.1 -P 3305 -u slave_user -p 

它记录,在没有任何:

mysql> SHOW SLAVE STATUS \G 
*************************** 1. row *************************** 
       Slave_IO_State: Connecting to master 
        Master_Host: 127.0.0.1 
        Master_User: slave_user 
        Master_Port: 3305 
        ... 
      Slave_IO_Running: Connecting 
      Slave_SQL_Running: Yes 
        ... 
       Last_IO_Errno: 2003 
       Last_IO_Error: error connecting to master '[email protected]:3305' - retry-time: 10 retries: 1 
        ... 
1 row in set (0.00 sec) 

这让我为难的是,如果我尝试的一部分的问题。我开始认为这与权限有关,但我找不到任何暗示来证实我的理论。

我试图设置隧道作为mysql用户,但是,这并没有工作。没有真正期望,但我必须付出一些努力。

有没有人有任何关于如何调试的建议?

如果我直接通过端口3306,它没有任何问题。

后好几天,我发现了一个ServerFault类似的问题:

MySQL Replication Over SSH - Last_IO_Errno: 2003 - error connecting to master

原来SELinux不得不做的一切与此!作为@Tek洪昭光解释,你可以通过通过semanage加入这个自定义端口解决这个:

sudo /usr/sbin/semanage port -a -t mysqld_port_t -p tcp 3305 

希望这有助于人谁在类似的问题绊倒。