IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Subversion Discussion :

reprise après basculement sur un réplicat


Sujet :

Subversion

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Par défaut reprise après basculement sur un réplicat
    Bonjour,

    Pour un projet à la fac, j'ai mis en place un serveur svn sur une de mes machines perso. Pour la sécurité, j'ai mis en place une réplication vers une autre machine.
    Pour ce faire j'ai suivi les instructions ici : http://svnbook.red-bean.com/en/1.4/s...nt.replication
    En résumé j'ai fait
    svnsync init svn://backupserv/projet svn://serv/projet
    svnsync sync svn://backupserv/projet
    (La deuxième dans un hook post-commit du serveur principal)

    J'ai, aussi changé l'UUID du réplicat de façon à pouvoir basculer les working copie sur le serveur secondaire en cas de besoin. (Le basculement pourrait se faire manuellement avec la commande switch, mais ça marche aussi en jouant sur les dns.)

    Bien entendu ça a pas loupé, le serveur principal a foiré (certainement xorg qui s'est mis à pomper tout le cpu). J'ai donc basculé le dns vers le serveur secondaire et autorisé les accès pour les gens de mon groupe.

    Jusqu'ici, pas de problème, on a pu travailler sur le projet comme si rien ne s'était passé.
    Simplement, maintenant que j'ai le serveur principal entre les mains (ou sous les pieds ^^) je voudrai rebasculer sur le serveur principal. Mais des commits ont été faits sur le réplicat, il faudrait donc réimporter les commits vers le serveur principal.


    Les solutions qui ne marchent pas :
    - tout ce qui consiste à toucher aux fichiers du repository (de toutes façons pour des révisions identiques les deux repository sont différents)
    - un svnsync vers le serveur principal. Si vous relisez les commandes pour maintenir le réplicat à jour, vous verrez que la réplication est unidirectionnelle
    - tout ce qui perdrait l'historique. Genre faire un diff entre le HEAD du principal et le HEAD du réplicat pour réinjecter les modifications.
    Ou pire : faire un update sur le réplicat pour faire un commit sur le principal. (Ça ne marchera pas ! Le client svn sera simplement perdu dans les numéros de révision en voyant BASE > HEAD)


    Je pourrai, bien entendu détruire le repository du serveur principal, et le recréer en tant que réplicat, puis détruire le repository du serveur secondaire, pour y recréer le réplicat qui pourra être updaté par les hook du serveur principal.
    Mais cette solution est légèrement tordue, et on aurait le serveur principal qui serait une réplique du serveur vers lequel il doit se répliquer. Gné ?

    Il doit y avoir plus simple.

  2. #2
    Membre émérite
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Par défaut
    En fait j'ai réussi avec la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    svnadmin dump /var/svn/repos/projet -r 61:HEAD --incremental --deltas > svncorrect.dump
    Le serveur principal étant à la révision 60, je veux lui apporter les correctifs à partir de la révision 61.
    L'option --incremental est super importante car elle indique de ne pas copier le contenu complet du repository dans la première révision dumpée, au contraire, indiquer juste les changements.
    L'option --deltas permet juste d'avoir un fichier dump plus petit.

    Bien entendu, il faut ensuite charger le fichier dump sur le nouveau serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    svnadmin load /var/svn/repos/projet < svncorrect.dump

    On pourrait s'arrêter là, mais en fait, le réplicat a été commité alors qu'il n'a pas été prévu pour ça. Il n'est donc plus possible de sync'er le réplicat avec le repository principal.
    La seule solution que j'ai trouvé, c'est de détruire le réplicat et de le reconstruire.



    Ok, je dois admettre que c'est pas cool comme récupération après crash. Mais le sync reste la méthode la plus simple que j'ai trouvé pour faire des backups.

Discussions similaires

  1. Réplication et bascule sur secours
    Par Zalzan dans le forum Administration
    Réponses: 0
    Dernier message: 16/06/2013, 23h04
  2. [jTabbedPane] action apres click sur onglet
    Par tony_big_guy dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 01/12/2005, 23h29
  3. déclenchement d'un message box après click sur touche entrée
    Par new_wave dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/11/2005, 09h15
  4. Réponses: 2
    Dernier message: 26/07/2005, 15h35
  5. Aide sur la réplication
    Par IADJOFOGUE dans le forum Réplications
    Réponses: 1
    Dernier message: 10/07/2005, 22h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo