我正在考慮從Firebird中將手動構建的複製應用到MySQL及其集成複製解決方案。我有4個部門零星的網絡連接。每個人都必須擁有數據庫的副本,並且必須能夠更新數據庫,所以我決定使用環複製方法(A-> B,B-> C,C-> D,D-> A)是最好的(糾正我,如果我錯了!)。MySQL之後的環形複製
然而,雖然有3個部門與外部世界有公共連接,但有一個在NAT後面,我沒有任何轉發端口的機會 - 所以基本上,我只能連接到外部世界,但不能接受傳入連接。有沒有什麼辦法可以用這個限制來設置環型複製?
我正在考慮從Firebird中將手動構建的複製應用到MySQL及其集成複製解決方案。我有4個部門零星的網絡連接。每個人都必須擁有數據庫的副本,並且必須能夠更新數據庫,所以我決定使用環複製方法(A-> B,B-> C,C-> D,D-> A)是最好的(糾正我,如果我錯了!)。MySQL之後的環形複製
然而,雖然有3個部門與外部世界有公共連接,但有一個在NAT後面,我沒有任何轉發端口的機會 - 所以基本上,我只能連接到外部世界,但不能接受傳入連接。有沒有什麼辦法可以用這個限制來設置環型複製?
您可以使用反向隧道來訪問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進程並再次啓動它。
至於環式複製設置的效率,我不會有絲毫的想法:(