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

PHP & Base de données Discussion :

Synchronisation de BDD [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Par défaut Synchronisation de BDD
    Bonjour à tous,

    J'aimerais savoir si il existe une fonction (requête) permettant la synchronisation entre base locale et une base distante, de la même manière que l'onglet de synchronisation de phpmyadmin ?

    Pour un projet je dois effectuer cette synchronisation via une API C++, et n'ayant pas envie de me tuer le cerveau avec des tas de requêtes de récupération, comparaison, delete etc, je cherche un moyen simple, efficace et sûr de le faire.

    Si il n'existe pas de requêtes pour cela, est-il possible de créer un fichier, faisant cela automatiquement ? Je m'explique :

    Au niveau de mon API, je clique sur un bouton pour synchroniser, qui m'ouvre la page de phpmyadmin, et si je peux passer par un fichier, j'aimerais qu'il aille directement dans l'onglet de synchronisation, qu'il choisisse la base source, la base cible, et qu'il remplisse les champs avant d'éxécuter.
    Un genre de "robot" quoi.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    regarde du coté de rsync

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    regarde du coté de rsync
    sinon http://dev.mysql.com/doc/refman/5.0/fr/replication.html

  4. #4
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    J'ai l'impression que tu lis pas les idées qu'on te donne....

    T'as plusieurs choix :
    - réplication (à valider si ça colle vraiment au besoin)
    - rsync
    - dump

    La solution d'automatiser la synchro PhpMyAdmin ne me semble pas très propre.

    Quelles sont tes contraintes sur ces 2 bases? Peux-tu envisager un arrêt de service sur la base distante ?
    Si oui, le plus simple serait peut-être de dumper la base locale (sql_dump) et import du dump sur la base distante. Par contre ça implique d'arrêter la base distante.

  5. #5
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Par défaut
    Si je ne me trompe pas, la réplication est faite pour que les deux bases soient exactement pareilles.

    Et ça n'est pas ce que je veux.

    Je vais faire un exemple tout simple :

    Base de données locale (L) : 10 mesures.
    Base de données distante (D) : 0 mesures.

    A la première synchronisation, je veux que les 10 mesures de L soient copiées sur D.

    Ensuite, j'effectue environ 40 mesures supplémentaires, donc il y en a 50 au total sur L.

    A la deuxième synchronisation, je veux que les 40 nouvelles mesures, qui ne sont pas sur D, y soient copiées, sans effacer les 10 premières, il y en a donc 50.

    Ensuite, j'efface le contenu de L pour rafraîchir le tout.

    J'effectue de nouveau 50 mesures, donc L = 50 (rappel : il y a les 50 mesures d'avant sur D).

    A la troisième synchronisation, les 50 dernières mesures ne sont pas sur D, je souhaite donc les y ajouter, de manière à ce qu'il y ait au total 100 mesures.

    Et ainsi de suite.

    En résumé, quel que soit le contenu de L, je veux que les mesures sur L, qui ne sont pas présentes sur D, le soient à la synchronisation. (L est en gros une base "alpha", D est la base générale, sur laquelle sera enregistrée chacune des mesures)

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    je vois, en réplication ça doit être possible, il suffit de bien gérer les droits

  7. #7
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    C'est marrant je ne pensais pas que c'est ce que faisait la fonction synchroniser de PhpMyAdmin....

    Comment gère t'il les clés primaires qui j'imagine doivent se chevaucher entre tes nouvelles données sur la base locale et les données existantes de la base distante...

    Sinon via un code custom, tu dois pouvoir extraire facilement tes données pour les renvoyer vers la nouvelle base.
    Ca sera toujours plus propre que simuler un clic dans PhpMyAdmin...

  8. #8
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Par défaut
    Pour la réplication je vais regarder ça, mais je connais pas trop les fonctions liées à ça, par contre au niveau des droits c'est bon, j'arrive déjà à faire ce que je veux sur la distante.

    Au niveau de la synchronisation, vu que ça copie les données de la base locale qui ne sont pas présentes sur la distante, les ID sont les mêmes.
    Même si on vide régulièrement le contenu de la locale, les ID ne se réinitialisent pas, donc il n'y a jamais de doublons, l'incrémentation continue.

    Je peux faire une synchronisation "manuelle" via requêtes etc, mais vu que c'est super galère car je dois gérer si dans les données de la locale il y en a qui sont déjà dans la distante ou non, je dois vérifier plusieurs trucs avant de copier le tout. D'où ma recherche sur les possibilités de faire ça plus simplement.

  9. #9
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Citation Envoyé par chapitre37 Voir le message
    Au niveau de mon API, je clique sur un bouton pour synchroniser, qui m'ouvre la page de phpmyadmin, et si je peux passer par un fichier, j'aimerais qu'il aille directement dans l'onglet de synchronisation, qu'il choisisse la base source, la base cible, et qu'il remplisse les champs avant d'éxécuter.
    C'est marrant ça. Ton "API" elle fait pas de synchro en fait, elle fait juste client Web....

    Sinon, tu peux très bien analyser cette page de phpmyadmin avec les noms des champs que tu veux renseigner et juste faire en sorte que ton "API" envoie une requête HTTP avec toutes les données postées qui vont bien pour que phpmyadmin fasse tout le boulot...

    Je reste dubitatif sur la solution d'une "API" qui utiliserait PhpMyAdmin....

  10. #10
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Par défaut
    Je doute qu'il soit utile de jouer sur les mots, mon API communique avec ma base de données sur phpmyadmin, et donc en cliquant sur le bouton, ça ouvre la page localhost/phpmyadmin.

    Bref, le truc qui me fait douter, c'est que phpmyadmin est en javascript, étant donné que je n'y connait pas grand chose (voir rien du tout), je le sens pas super, d'où l'idée d'un genre de "robot" qui simulerait des clics souris etc.

    Pour le fait que tu sois dubitatif, ne le sois pas, C++ Builder XE2 a une bibliothèque intégrée (dbExpress) pour la gestion de données. J'ai créé un lien ODBC pour faire la liaison entre Builder et phpmyadmin, et ça marche niquel, on envoie, on lit, on delete etc.

  11. #11
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Ah mais tu confonds ta base de données(MySQL en l'occurence) et PhpMyAdmin c'est pour ça....

    Une connexion ODBC se fait sur une base de données.
    PhpMyAdmin n'est pas une base de données mais un interface de gestion pour cette base.

    Se connecter à la base via ODBC ou un driver n'a rien à voir avec lancer des commandes via PhpMyAdmin.

    Et pourquoi ne pas utiliser les commandes natives de mysql pour faire des exports/imports? Ca sera plus propre...

  12. #12
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 58
    Par défaut
    Les imports/exports ne génèrent que des fichiers .sql il me semble, or je cherche simplement à ce que le contenu de la base locale qui est différent de la base distante, y soit envoyé, afin que la base distante soit à jour et pouvoir effacer le contenu de la base locale pour l'alléger.

    Après je ne connais pas à 100% les fonctionnalités des commandes natives de MySQL, donc si il est possible de simplement ajouter les données de la base locale, qui ne sont pas sur la distante, je suis preneur.

  13. #13
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Et la réplication ça correspondrait au besoin ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Synchroniser deux bdd Sql server et mysql
    Par youcef81 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 01/03/2012, 12h18
  2. Comment synchroniser une BDD MySQL avec une BDD SQLite?
    Par newjc dans le forum ActionScript 3
    Réponses: 3
    Dernier message: 29/07/2009, 12h22
  3. [AJAX] Listes déroulantes synchronisées sur bdd
    Par Hefgé dans le forum Général JavaScript
    Réponses: 48
    Dernier message: 13/03/2009, 14h53
  4. Synchroniser deux bdd
    Par david06600 dans le forum Toad
    Réponses: 4
    Dernier message: 10/01/2008, 09h11
  5. [SQL2005-VS2005] Synchronisation de bdd
    Par toniolol dans le forum Accès aux données
    Réponses: 1
    Dernier message: 05/06/2007, 07h17

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