MySQL 通过 SSH 隧道复制
MySQL replication throught SSH tunnel
我在通过 SSH
隧道设置复制时遇到问题,尽管花了很多时间阅读官方文档、文章和 SO 问题。
我的主人是192.168.0.105
,奴隶是192.168.0.104
。我已经通过以下方式设置了 SSH 隧道:
ssh -L 3305:127.0.0.1:3306 tunneluser@192.168.0.105 -f -N
其中 tunneluser
是我的 master 上的本地用户。
我在从机上得到以下输出(省略了不相关的行):
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 'slave_user@127.0.0.1:3305' - retry-time: 10 retries: 1
...
1 row in set (0.00 sec)
令我困惑的部分是,如果我尝试:
mysql -h 127.0.0.1 -P 3305 -u slave_user -p
登录没有任何问题。我开始认为这与权限有关,但我找不到任何提示来证实我的理论。
我尝试将隧道设置为 mysql
用户,但是效果不佳。真的没想到,但我不得不试一试。
有人对如何调试有什么建议吗?
如果我直接通过端口 3306
,它可以正常工作。
好几天后,我在ServerFault上发现了一个类似的问题:
MySQL Replication Over SSH - Last_IO_Errno: 2003 - error connecting to master
原来 SELinux
必须用这个做所有事情!正如 @Tek Jau 所解释的那样,您可以通过 semanage
:
添加此自定义端口来解决此问题
sudo /usr/sbin/semanage port -a -t mysqld_port_t -p tcp 3305
希望这对遇到类似问题的任何人有所帮助。
我在通过 SSH
隧道设置复制时遇到问题,尽管花了很多时间阅读官方文档、文章和 SO 问题。
我的主人是192.168.0.105
,奴隶是192.168.0.104
。我已经通过以下方式设置了 SSH 隧道:
ssh -L 3305:127.0.0.1:3306 tunneluser@192.168.0.105 -f -N
其中 tunneluser
是我的 master 上的本地用户。
我在从机上得到以下输出(省略了不相关的行):
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 'slave_user@127.0.0.1:3305' - retry-time: 10 retries: 1
...
1 row in set (0.00 sec)
令我困惑的部分是,如果我尝试:
mysql -h 127.0.0.1 -P 3305 -u slave_user -p
登录没有任何问题。我开始认为这与权限有关,但我找不到任何提示来证实我的理论。
我尝试将隧道设置为 mysql
用户,但是效果不佳。真的没想到,但我不得不试一试。
有人对如何调试有什么建议吗?
如果我直接通过端口 3306
,它可以正常工作。
好几天后,我在ServerFault上发现了一个类似的问题:
MySQL Replication Over SSH - Last_IO_Errno: 2003 - error connecting to master
原来 SELinux
必须用这个做所有事情!正如 @Tek Jau 所解释的那样,您可以通过 semanage
:
sudo /usr/sbin/semanage port -a -t mysqld_port_t -p tcp 3305
希望这对遇到类似问题的任何人有所帮助。