2009-09-02 30 views
0

我正在考慮從Firebird中將手動構建的複製應用到MySQL及其集成複製解決方案。我有4個部門零星的網絡連接。每個人都必須擁有數據庫的副本,並且必須能夠更新數據庫,所以我決定使用環複製方法(A-> B,B-> C,C-> D,D-> A)是最好的(糾正我,如果我錯了!)。MySQL之後的環形複製

然而,雖然有3個部門與外部世界有公共連接,但有一個在NAT後面,我沒有任何轉發端口的機會 - 所以基本上,我只能連接到外部世界,但不能接受傳入連接。有沒有什麼辦法可以用這個限制來設置環型複製?

回答

0

您可以使用反向隧道來訪問NAT後面的主機。如果NAT後面的主機是主機d和主機C是從與hostc.com的例如名稱互聯網訪問,反向隧道命令將是:

ssh -nNT -o TCPKeepAlive=yes -R <remote port>:localhost:<local port> [email protected] 

<remote port>可以是任何非特權端口。如果您所設定的<remote port>至8022,並<local port>到22,然後做下面的命令:

ssh localhost -p 8022 

主機C將允許您連接到端口22(SSH)主機D.

以同樣的方式您可以將任何本地端口(web,mysql)隧道到任何遠程端口。棘手的部分是保持連接(-o TCPKeepAlive = yes應該幫助那裏)並自動重新連接,定期ping的一些bash腳本可以工作,或者cron作業可以殺死ssh進程並再次啓動它。

至於環式複製設置的效率,我不會有絲毫的想法:(