2009-09-02 2 views
0

J'envisage de passer de Firebird où j'utilise une réplication manuelle à MySQL et sa solution de réplication intégrée. J'ai 4 départements avec des connexions réseau sporadiques. Chacun doit avoir sa copie de la base de données, et doit pouvoir mettre à jour la base de données, donc j'ai décidé que l'utilisation de la méthode de réplication en anneau (A-> B, B-> C, C-> D, D-> A) être le meilleur (corrigez-moi si je me trompe!). Cependant, alors que 3 des départements ont une connexion publique au monde extérieur, un est derrière NAT et je n'ai aucune chance de transférer des ports - donc, fondamentalement, je ne peux que me connecter au monde extérieur, mais je ne peux pas accepter les appels entrants les liaisons. Est-il possible de configurer la réplication de type anneau avec cette limitation?Réplication en anneau MySQL derrière le NAT

Répondre

0

Vous pouvez utiliser un tunnel inversé pour accéder à l'hôte derrière le NAT. Si l'hôte derrière le NAT est l'hôte D et l'hôte C est accessible à partir de l'Internet avec un nom de hostc.com par exemple, la commande de tunnel inverse serait:

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

<remote port> peut être un port non privilégié. Si votre <remote port>-8022 et <local port> à 22, puis en faisant la commande:

ssh localhost -p 8022 

sur l'hôte C vous permettrait de vous connecter au port 22 (ssh) sur l'hôte D.

De la même manière vous pouvez mettre en tunnel n'importe quel port local (web, mysql) vers n'importe quel port distant. La partie difficile est de garder la connexion en place (-o TCPKeepAlive = oui devrait y aider) et de se reconnecter automatiquement, un script bash qui pings périodiquement pourrait fonctionner ou un travail cron qui tue le processus SSH et le déclenche à nouveau. En ce qui concerne l'efficacité d'une configuration de réplication de style anneau, je n'aurais pas la moindre idée :(

Questions connexes