我正在考虑从使用手动复制的 Firebird 切换到 MySQL 及其集成复制解决方案。我有 4 个部门有零星的网络连接。每个人都必须有自己的数据库副本,并且必须能够更新数据库,所以我决定使用环复制方法(A->B,B->C,C->D,D->A)成为最好的(如果我错了,请纠正我!)。
然而,虽然其中 3 个部门与外界有公共连接,但一个在 NAT 后面,我没有任何机会转发端口 - 所以基本上,我只能连接到外界,但不能接受传入的连接。有没有办法设置具有此限制的环类型复制?
我正在考虑从使用手动复制的 Firebird 切换到 MySQL 及其集成复制解决方案。我有 4 个部门有零星的网络连接。每个人都必须有自己的数据库副本,并且必须能够更新数据库,所以我决定使用环复制方法(A->B,B->C,C->D,D->A)成为最好的(如果我错了,请纠正我!)。
然而,虽然其中 3 个部门与外界有公共连接,但一个在 NAT 后面,我没有任何机会转发端口 - 所以基本上,我只能连接到外界,但不能接受传入的连接。有没有办法设置具有此限制的环类型复制?
您可以使用反向隧道访问 NAT 后面的主机。例如,如果 NAT 后面的主机是主机 D,并且主机 C 可以通过名称 hostc.com 从 Internet 访问,则反向隧道命令将是:
ssh -nNT -o TCPKeepAlive=yes -R <remote port>:localhost:<local port> user@hostc.com
<remote port>
可以是任何非特权端口。如果您设置<remote port>
为 8022 和<local port>
22,则执行以下命令:
ssh localhost -p 8022
在主机 C 上将允许您连接到主机 D 上的端口 22 (ssh)。
以同样的方式,您可以将任何本地端口(web、mysql)隧道连接到任何远程端口。棘手的部分是保持连接正常(-o TCPKeepAlive=yes 应该有帮助)并自动重新连接,一些定期 ping 的 bash 脚本可以工作,或者是一个杀死 ssh 进程并再次启动它的 cron 作业。
至于环式复制设置的效率,我一点也不知道:(