Page 1 sur 1

Code pour connection a 2 base de données (Replication)

Posté : 03 juin 2009, 10:29
par sasg
Bonjour,

Problematique:
J'ai 2 serveurs (A et B), le A est repliqué sur le B
Le A est le serveur principale de base de données et le B une "sauvegarde".

Mais en cas que le serveur A et en rade, je dois changer ma connexion directement sur le B qui devient le serveur principal.

Ensuite après une intervention, le B sera réplique sur le A

et si le B est en rade je passe sur le A qui devient a nouveau le serveur principal.

Ma question :
Je ne vois pas comment gerer une telle connexion comment faire mon script de connexion.

Pouvez-vous m'aider?

Merci

Posté : 03 juin 2009, 12:38
par Calimero
Bonjour,

Cela ne semble pourtant pas difficile : d'abord tu essayes de te connecter à une base de manière classique, et si ça rate, alors tu essayes sur l'autre...

Où bloques-tu au juste ?

Posté : 03 juin 2009, 14:51
par sasg
Je bloque sur une fois passe sur la deuxieme je dois rester sur la 2eme meme si le serveur repart
et que le premier serveur devient le serveur de secours et ainsi de suite


car oui, je peux faire une connexion sur la premiere base si elle echoue je passe sur la 2eme mais une fois sur la 2eme je ne peux revenir sur la 1ere qu'en cas de defaillance du second qui ete devenu serveur principal...

Car j'avais pense :

si la connexion du serveur A echoue je passe sur le serveur B et je cree un petit fichier vide pour dire que je suis passe sur le second et a chaque connexion je teste la presence du fichier

si fichier pas present et connexion possible sur serveur A--> connexion serveur A
si fichier pas present et connexion impossible sur serveur A --> connexion serveur B + creation du fichier
si fichier present et connexion possible sur serveur B--> connexion serveur B
si fichier present et connexion impossible sur serveur B--> connexion serveur A + suppression du fichier

Posté : 04 juin 2009, 01:43
par Sékiltoyai
Car j'avais pense :

si la connexion du serveur A echoue je passe sur le serveur B et je cree un petit fichier vide pour dire que je suis passe sur le second et a chaque connexion je teste la presence du fichier

si fichier pas present et connexion possible sur serveur A--> connexion serveur A
si fichier pas present et connexion impossible sur serveur A --> connexion serveur B + creation du fichier
si fichier present et connexion possible sur serveur B--> connexion serveur B
si fichier present et connexion impossible sur serveur B--> connexion serveur A + suppression du fichier
Euh, par exemple oui :)

Posté : 04 juin 2009, 09:09
par sasg
Ok, je voulais savoir si il y avait pas un code plus propre pour faire ca que de creer un fichier et tester sa presence

Je vais faire comme ca alors.

Merci

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 04 juin 2009, 23:46
par Sékiltoyai
Même s'il y a plus propre, le principe est le même…

Posté : 05 juin 2009, 06:52
par sasg
si il y a plus propre, je veux bien qu'on me donne une autre solution :D

Merci

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 05 juin 2009, 08:01
par stopher
Slt ,

La réplication ne fonctionne que dans un seul sens me semble t'il !

serveur A(maitre) et serveur B(esclave)

Les données sont répliqués automatiquement ( une conf mysql specifique ) dans le sens maitre esclave.

Si pour une raison X ou Y tu écris des données sur le serveur B , la réplication est cassé ...

Pour bien faire , il te faut plutôt regarder du coté des cluster ( demande au minimum 3 machines ).

Posté : 05 juin 2009, 08:20
par sasg
oui je connais le cluster mais je ne peux faire qu'une replication
La replication dans l'autre sens necessitera une intervention manuelle en faisant la conf mysql dans l'autre sens apres que le serveur A soit tombe.

Posté : 05 juin 2009, 09:27
par webaida
Tu peux éventuellement faire un fichier de conf (en XML par exemple) qui contiendrait

<serveurPrincipal>A</serveurPrincipal>
<serveurSecondaire>B</serveurSecondaire>

Ton script de connexion à la base va chercher dans serveurPrincipal. Si il ne répond pas, ton script va chercher dans serveurSecondaire et au même moment tu lances un autre bout de code qui inverse serveurPrincipal et serveurSecondaire.