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

Administration MySQL Discussion :

Synchronisation de deux bases de données( locale et distante)


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par défaut Synchronisation de deux bases de données( locale et distante)
    Bonjour à tous,
    Je voulais mettre en place une solution pour rendre une application web accessible en hors ligne, pour se faire je me suis basé sur le html5, javascript et jquery, j'ai utilisé le manifest et j'ai conçue une base de données en locale. Mon problème majeur maintenant est la synchronisation entre ces deux bases de données qui n'ont aucune relation.
    S'il vous plait si quelqu'un a une idée me répond c'est vraiment urgent.
    (c'est mon projet de fin d'années)

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Par défaut
    Bonjour,

    Je pense qu'il y a 2 possibilités en fonction du fonctionnement que tu veux faire :

    - 1er cas ta base centralisée est Maitre (c'est à dire que toutes les modifications : INSERT, UPDATE et DELETE sont uniquement faites sur cette base) et la base locale est Esclave (uniquement des SELECT) => c'est un fonctionnement de réplication du Maitre vers les Esclave lorsque l'escalve est connecté (fonctionnement natif de MySQL)
    - 2ème cas les 2 bases sont en Lecture/Ecriture (INSERT, UPDATE, DELETE et SELECT indéféremment sur la base centralisée et la locale) dans ce cas c'est de la synchronisation bidirectionnel... et là... ce n'est pas natif dans MySQL, (j'ai un sujet en cours avec la même question et je fais des essais en ce momment) et pour l'instant je ne sais pas faire...

    Alain

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par défaut
    Bonjour
    la première cas ne rèsoud pas mon problème vue que quand l'utilisateur est en hors ligne, il peut ajouter des données dans la bases locale qu'il faut les mettre à jour dans la bases centrale. En effet la deuxième cas est bien ce qu'il me faut, pour ce la j'ai fait des requêtes qui font la sélection de la base centrale et l'insertion dans la base local et vise vers ça, je sais que c'est pas une bonne solution et je voudrais bien l'amélioré pour cela je te demande de me mettre au courant au cas ou t'as trouver une bonne solution .

  4. #4
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Par défaut
    Avez-vous trouvé la solution à votre problème ? Si oui, laissez-moi savoir.
    Merci

  5. #5
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    et en utilisant les triggers pour générer des actions sur la base distante?

    en local tu devras utiliser le moteur federate (à installer car il ne l'est pas d'origine en général) pour accéder aux tables distantes...

  6. #6
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut rania_nina.

    Il reste à vérifier que le port 3306 soit bien ouvert entre vos deux serveurs master & slave.
    Peut-être un problème de pare-feu dans windows !

    @+

  7. #7
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 35
    Par défaut
    Salut Artemus,

    j'ai vérifié avec la commande netstat, le statut est en écoute
    du coup le problème n'est pas là

    A+

  8. #8
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut rania_nina.

    Citation Envoyé par rania_nina
    Mais bien sûr j'ai vérifié avec mes adresses ip ! il s'agit bien de 10.24.60.232 pour le master et 10.24.60.250 pour le slave
    L'erreur est explicite, vous avez un problème de connexion avec le serveur master.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    last_io_errno : 1130
    last_io_error : error connectiong to master 'replicant@10.24.60.232:3306' - retry-time: 60 retries: 1
    Comme je vous l'ai dit précédemment, ne mettez pas "@10.24.60.232:3306" mais "@%".
    Ensuite, le compte replicant a-t-il toutes les autorisations pour jouer son rôle ?
    Peut-être un problème de mot de passe ?

    Je ne peux pas vous aider car l'origine du problème peut-être multiple.

    @+

  9. #9
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 35
    Par défaut
    Salut Artemus24.

    L'erreur est explicite, vous avez un problème de connexion avec le serveur master.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    last_io_errno : 1130
    last_io_error : error connectiong to master 'replicant@10.24.60.232:3306' - retry-time: 60 retries: 1
    oui vous avez raison
    Comme je vous l'ai dit précédemment, ne mettez pas "@10.24.60.232:3306" mais "@%".
    d'accord je vais changer la configurationet mettre % au lieu de l'adresse
    Ensuite, le compte replicant a-t-il toutes les autorisations pour jouer son rôle
    j'ai fait la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     grant replication slave to *.* to 'user' @ 'adresse ip' ;
    et ensuite j'ai fait du coup le compte user a les autorisations non ?
    Peut-être un problème de mot de passe ?
    je ne pense pas que c'est un probleme de mot de passe, car j'ai fait attention à l'écrire correctement !


    @+

  10. #10
    Invité de passage
    Homme Profil pro
    Agent de Sécurité
    Inscrit en
    Février 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent de Sécurité
    Secteur : Service public

    Informations forums :
    Inscription : Février 2013
    Messages : 1
    Par défaut
    Bonjour,

    Je vois deux cas possibles, pour l'un j'ai une réponse, pour l'autre c'est plus complexe et je planche dessus, car j'en ai réellement besoin moi-même.

    Cas 1 : L'application en local n'est que sur un seul terminal. Et donc il n'est nécessaire que de synchroniser qu'une seule base de données locale avec une base de données distante.

    Solution : Lorsqu'on fait une écriture, on la fait uniquement en local. Puis soit créer un script automatique qui synchronisera tous les X temps, soit synchroniser via un script en le lançant manuellement. Mais alors quel rôle aura ce script?

    Avant toute chose, il faudra ajouter un champs "entrytime" dans chaque table (vous pouvez l'appeler comme vous voulez), dans lequel vous stockerez la date, heure, etc à laquelle il a été ajouté, dans le meilleur des cas en format unix. Dans un second temps votre script d’écriture sur la base locale devra après chaque écriture, (re) générer un petit fichier log dans lequel il stockera la date du dernier enregistrement qu'il a effectué.

    Le fichier de synchronisation, lui devra avant toute chose (pour un gain de ressources etc) comparer le fichier log de la base locale à celui de la base distante. S'ils sont identiques, alors le script ne fera rien. Sinon, le script lis les entrées sur la base locale qui sont plus récente que la date indiquée dans le fichier log de la base distante. Il enregistrera ensuite les données lues sur la base distante puis modifiera la date du log de la base distante pour la mettre à la même date que le fichier log de la base locale.

    De même si la base distante est plus récente que la base locale, il fera les choses en sens inverse.

    Astuce, pour gagner du temps d’exécution, vous pouvez spécifier dans le fichier log les dates de dernières mises à jour de chaque table séparément, ainsi si vous avez 1 seule table sur 100 qui a été mise à jour, votre fichier de synchronisation ne mettra à jour que cette table là. De plus si vous faites ça, vous n'êtes plus obligés d'ajouter un champs "entrytime" sur chaque table, à la place vous stockez juste numéro de la dernière entrée de chaque table lors de la dernière synchronisation. Et alors le script de synchronisation n'aura pas besoin de faire une recherche par date etc, il se contentera de lire les entrées d’après.

    Cas 2 : L'application en local est sur plusieurs terminaux, il faut donc synchroniser les tables locales avec la table distante en faisant attention à ce qu'il n'y ait pas d’interférence, non seulement lors de l'enregistrement sur la base distante, mais aussi lors de la synchronisation de chaque base locale avec la base distante pour importer les entrées effectuées depuis les autres bases locales.

    La solution ici serait bien sur de comparer les entrées, avec un bon algorithme que je concocterai selon mes besoins ça devrait le faire(et je ne doute pas de vos capacités à bien architecturé pour vos propres besoins). Mais il faut aussi que les synchronisations n'aient jamais lieu au même moment. Et faire un comparateur d'entrées, là le comparateur d'entrées mériterait un sujet à lui seul, et surtout je suis débutant en développement, j'ai plein d'idées mais je réinvente peut-être la roue.

    Alors oui c'est ça la solution. Mais j'ai envie de trouver une solution ou les utilisateurs peuvent synchroniser quand ils veulent sans se soucier si quelqu'un est en train de synchroniser en même temps et s'il y aura des interférences.

    Bref je ne sais pas si je me suis fait comprendre et si je suis pertinent, ça fait 48 heures que je n'ai pas dormi et j'ai encore 8 heures de travail à tirer.

  11. #11
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut rania_nina.

    Je suis à court d'idée.

    Peut-être faut-il mettre "bind = 0.0.0.0" dans le fichier "my.ini" de master, si cela n'a pas encore été fait ???

    @+

  12. #12
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 35
    Par défaut
    Salut Artemus,

    il est probable que j'ai mal fait l'export de la DB, enfaite ja' utilisé Data export ensuite j'ai récupéré le fichier dump.sql dans une clé USB et j'ai importé au niveau du slave, c'est bien ca ce qu'il faut faire non ?

    pour bind-address=0.0.0.0 c'est effectivement déjà fait !

    j'ai 4 questions :

    1) comme vous le savez, j 'aurai plusieurs utilisateurs et donc plusieurs bases de données locales liée à une base de données distante, en utilisant cette configuration master/master. quel est le nombre maximal des utilisateurs que je peux avoir ?

    2)avez-vous déjà testé de faire sortir un utilisateur du réseau, ensuire faire une modification dans le master, quand le slave revient au réseau, est ce que toutes les mofications vont être synchronisées ??

    3)j'ai désinstallé mysql d'un poste (j'ai arrêté le service puis j'ai supprimé la variable de l'environnement) et j'ai vérifié un peu partout avant de réinstaller un nouveau, en le démarrant y a aucun problème, avant de configurer quoi que ce soit j'ai testé la commande le resultat est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    mysql> show master status ;
    +---------------------+----------+--------------+------------------+-------------------+
    | File                | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +---------------------+----------+--------------+------------------+-------------------+
    | MUL-N003-bin.000004 |      155 |              |                  |                   |
    +---------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)
    je me comprends pas ! normalement je devrai avoir le resultat suivant : Empty set (0.00 sec)

    avez-vous une idée de la source du problème ?

    4)comment peut-on enlever/suppr/desinstaller la configuration master ???

    Merci
    A+

  13. #13
    Candidat au Club
    Homme Profil pro
    Ingénieur de conception des SI
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de conception des SI
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Par défaut besoin d'informations supplémentaires si pb résolu
    bonjour à tous
    j'ai trouvé très intéressant votre discussion, car j'ai un problème qui s'inscrit dans le même cadre, donc je suis entrain d'explorer des pistes de solution. Alors j'aimerai savoir si vous avez pu approfondir vos recherches sur des solutions proposées plus haut ou si quelqu'un d'autre a des idées dessus.
    pour revenir à mon problème, il s'agit effectivement d'un problème se synchronisation des applications en local avec une application sur le Cloud.
    je sujet est un peu nouveau pour moi, et j'aimerai avoir vos avis sur ce sujet et éventuellement des méthodes de synchronisation existantes et si possible un site où je pourrai trouver la document sur ce sujet.
    Merci

  14. #14
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    L'idée qu'il faut avoir c'est aussi est-ce qu'une solution tierce existe et traite le besoin que j'ai...

    une solution compilée (tierce ou fait maison) permet des performances amplement plus grande que des scripts, après tout dépend du coût, temps ou capacité de de développement...

    quoi qu'il en soit tout est toujours basé sur un système maître-esclave(s)... il est clair qu'un système maître distribué est plus complexe, surtout que mysql est plus pensé comme un sgbd pas distribué à priori...

  15. #15
    Candidat au Club
    Homme Profil pro
    Ingénieur de conception des SI
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de conception des SI
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Par défaut
    En effet, la chose se présente telle que vous venez de la présenter. Toutefois, l'idée principale ici c'est une solution fait maison tout en ayant en idée les solutions tierces existantes. Pourriez-vous m'en dire plus? Merci

  16. #16
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    Je ne suis pas architecte DB, mais il y a différents axes si tu veux faire ça en version maison:
    • CRON interne ou externe qui exécute la tâche de mise à jour à une temporalité fixe. Sur de gros volumes entre 2 synchronisations, ça pose des problème d'utilisation de bande passante et de charge processeur (avec un risque de saturation) et que tu perdes tout ce qui c'est produit entre les synchros ou pendant l'une d'elles
    • faire une synchro à la volée sur chaque opération ou un groupe d'opérations (toutes les x opérations par exemple)

    après, beaucoup de choses dépendent de l'architecture de la partie maître. Par exemple si tu fais du load balancing, tu as diverses stratégies qui dépendent de la nature des données:
    • tu peux avoir des serveurs (réels ou vm) jumeaux qui absorbent juste la charge au prorata de leur nombre
    • des tables énormes qui sont scindées sur plusieurs serveurs et requêtées en parallèle pour diviser la encore le temps de recherche/mise à jour
    • un mixte des 2 stratégies

  17. #17
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut rania_nina.

    Il y a fort longtemps, un utilisateur avait demandé de l'aide, comme vous, sur un problème de réplication master/slave.
    Comme je n'en avais jamais fait, et pour cause je n'en ai pas besoin chez moi, j'ai fait le test.
    J'ai recréé le même environnement que cet utilisateur afin de reproduire son problème.

    J'ai cherché sur le net des explications que j'ai reproduit à l'identique et je n'ai rencontré aucun problème.
    Bon, c'est sûr, je n'ai pas réussi du premier coup, à reproduire son problème.
    Au final, j'ai compris que le cœur du problème était les fichiers de rotations binary_log.

    L'utilisateur avait un problème de synchronisation, suite à un plantage du slave.
    Il ne savait pas faire un recovery à partir d'un point de restauration. Il faut pour cela utiliser "mysqlbinlog".
    Hormis l'extraction des données à partir d'un point de reprise, la procédure n'est pas très compliquée à faire.
    C'est un import du fichier ".sql" du master, vers le serveur slave.

    Votre problème à vous est de créer l'environnement Master/Slave et c'est tout.
    Pas de problème de synchronisation, pas de base de données à récupérer.
    Juste à faire un test avec une base de données vide, pour voir si l'installation fonctionne.
    Ensuite, vous transformez votre environnement Master/Slave en Master/Master, et vous faites à nouveau un test des deux cotés.

    Avez-vous bien fait dans le Slave, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    STOP slave;
    CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='replication_user', MASTER_PASSWORD='motdepasse', MASTER_LOG_POS=123456;
    START slave;
    Vous reportez la position 123456 du master dans cette commande afin de démarrer la réplication.

    Citation Envoyé par rania_nina
    il est probable que j'ai mal fait l'export de la DB
    Pour le test, vous n'avez même pas besoin d'exporter quoi que ce soit.
    Une base vide des deux cotés et c'est tout. Le test, vous faites une insertion du coté Master et vous voyez si le résultat apparaît coté Slave.

    Citation Envoyé par rania_nina
    pour bind-address=0.0.0.0 c'est effectivement déjà fait !
    Cela signifie deux choses :
    --> que vous gérez des adresses en provance du réseau TCP,
    --> que vous gérez que des adresses IPv4, mais pas des adresses IPv6.

    Si vous mettez 127.0.0.1, c'est uniquement en local que les échanges vont se faire.

    Citation Envoyé par rania_nina
    j'aurai plusieurs utilisateurs et donc plusieurs bases de données locales liée à une base de données distante
    Est-ce la même base de données ?

    Citation Envoyé par rania_nina
    cette configuration master/master. Quel est le nombre maximal des utilisateurs que je peux avoir ?
    En Master/Slave, on peut avoir plusieurs Slave pour un Master.
    Je pense que c'est cette configuration dont vous avez besoin.
    Comme vous avez pu le constater, les déclaratives concernent le master dans l'environnement Slave.

    En Master/Master, je n'en ai aucune idée.

    Citation Envoyé par rania_nina
    faire une modification dans le master, quand le slave revient au réseau, est ce que toutes les modifications vont être synchronisées ??
    Les échanges se font du Master vers les Slave.
    Si vous arrêtez le master, il n'y a aucun problème pour le relancer.

    Inversement, si vous arrêtez un slave, mais pas les autres, vous aurez un problème de synchronisation.
    Vous devez utiliser la position du dernier point valide dans le Slave pour le relancer avec la commande ci-dessus.

    Citation Envoyé par rania_nina
    le resultat est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    mysql> show master status ;
    +---------------------+----------+--------------+------------------+-------------------+
    | File                | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +---------------------+----------+--------------+------------------+-------------------+
    | MUL-N003-bin.000004 |      155 |              |                  |                   |
    +---------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)
    je ne comprends pas ! Normalement je devrai avoir le résultat suivant : Empty set (0.00 sec)
    Vous devez comprendre que le Master gère un flux de commande sur une base de données.
    Si vous faites un "truncate votre_table", la table sera remise à zéro et dans le fichier de rotation binary_log, la commande "truncate ..." sera stockée.
    Tout comme si vous faites un "insert votre_table ...", il y aura une nouvelle ligne dans la table, et dans le fichier de rotation binary_log, vous aurez la commande "insert ..." qui sera aussi stockée.
    Chaque commande va s'insérer dans le fichier binary_log, en faisant avancer la position d'un cran.

    Si vous désirez remettre les binary_log à zéro, il faut les détruire aussi.

    Citation Envoyé par rania_nina
    comment peut-on enlever/suppr/désinstaller la configuration master ???
    Si vous désirez que le serveur master ne joue plus son rôle de master, vous devez désactiver les fichiers binary_log.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    skip-log-bin
    skip-log-slave-updates
    Détruire aussi le user "replicant" !

    @+

  18. #18
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 35
    Par défaut
    Salut Artemus

    Il y a fort longtemps, un utilisateur avait demandé de l'aide, comme vous, sur un problème de réplication master/slave.
    Comme je n'en avais jamais fait, et pour cause je n'en ai pas besoin chez moi, j'ai fait le test.
    J'ai recréé le même environnement que cet utilisateur afin de reproduire son problème.
    c'est sympa ! le problème peut être la version de MySQL ? avez vous testé avec le workbench ?

    J'ai cherché sur le net des explications que j'ai reproduit à l'identique et je n'ai rencontré aucun problème.
    Bon, c'est sûr, je n'ai pas réussi du premier coup, à reproduire son problème.
    Au final, j'ai compris que le cœur du problème était les fichiers de rotations binary_log.
    j'ai reproduit à l'identique aussi, mais quand je rajoute dans le master, normalement ca doit etre synchronisé du coté slave, chose qui ne se produit pas !
    donc j'ai un problème de synchronisation, le slave n'arrive pas à se connecter correctement au master

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error 1130 error connecting to master

    Votre problème à vous est de créer l'environnement Master/Slave et c'est tout.
    Pas de problème de synchronisation, pas de base de données à récupérer.
    Juste à faire un test avec une base de données vide, pour voir si l'installation fonctionne.
    Ensuite, vous transformez votre environnement Master/Slave en Master/Master, et vous faites à nouveau un test des deux cotés.
    effectivement mais ca plante au niveau du master/slave

    Avez-vous bien fait dans le Slave, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    STOP slave;
    CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='replication_user', MASTER_PASSWORD='motdepasse', MASTER_LOG_POS=123456;
    START slave;
    Vous reportez la position 123456 du master dans cette commande afin de démarrer la réplication.
    oui, j'ai suivi à la lettre !


    Pour le test, vous n'avez même pas besoin d'exporter quoi que ce soit.
    Une base vide des deux cotés et c'est tout. Le test, vous faites une insertion du coté Master et vous voyez si le résultat apparaît coté Slave.
    c'est là où ca plante, même si j'insère du coté master, le résultat n'apparaît pas coté Slave !


    Si vous désirez que le serveur master ne joue plus son rôle de master, vous devez désactiver les fichiers binary_log.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    skip-log-bin
    skip-log-slave-updates
    Détruire aussi le user "replicant" !
    je l'ai fait et pourtant quand je fais la commande show master status ;
    il m'affiche ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    mysql> show master status ;
    +---------------------+----------+--------------+------------------+-------------------+
    | File                | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +---------------------+----------+--------------+------------------+-------------------+
    | MUL-N003-bin.000005 |      155 |              |                  |                   |
    +---------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)

    Merci beaucoup pour vos explications !

    @+[/QUOTE]

  19. #19
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut rania_nina.

    Pourquoi déterrer un vieux sujet (de 2012) ?

    Citation Envoyé par rania_nina
    Pour cela, une base de donnée centralisée sera mise en place.
    Il ne s'agit pas d'une base de données mais d'un serveur mysql ? Soyez précise car cela peut porter à confusion.

    Citation Envoyé par rania_nina
    Chaque poste client devra pouvoir s’y connecter afin de synchroniser les données.
    Si ce sont vos contraintes, vous n'avez pas le choix.
    Vous devez mettre en place une réplication de type "maitre-maitre" et non "maitre-esclave" comme cela se fait fréquemment.

    Citation Envoyé par rania_nina
    L’application devra ensuite pouvoir fonctionner « offline ».
    Une application OFFLINE ne fonctionne qu'en local, c'est-à-dire sans internet.
    Sous WampServer, cela sert justement à faire de la maintenance, sans qu'un utilisateur vienne faire quoi que ce soit sur le serveur MySql.

    Or la réplication "maitre-maitre" nécessite d'être en mode "online".
    Autrement dit, la réplication sert quand vous faites des interventions sur votre table dans votre serveur local.

    Citation Envoyé par rania_nina
    j'aurais à disposition un serveur contenant la base de données maître, et plusieurs bases de données esclaves, chaque poste client doit pouvoir se connecter au serveur et faire une synchronisation bidirectionnelle en temps réel. donc je devrai mettre en place une architecture Actif-Actif.
    Pour effectuer une synchronisation, en temps réel, vous devez être en mode "online".
    Vous comprenez que ce n'est plus du temps réel si vous êtes en mode "offline".

    Citation Envoyé par rania_nina
    Est ce que c'est bien d'avoir une base de données locale au niveau de chaque poste client
    On ne peut pas répondre à votre question sans savoir pourquoi vous envisagez ce genre de solution. Où si vous préférez vos contraintes !

    Citation Envoyé par rania_nina
    ou c'est mieux d'opter pour une base de données distante, la réplication d'après vous doit être faite au niveau d'une base de données de backup qui se trouve dans le même serveur ?
    La réplication sert quand on veut alléger le serveur central parce qu'il y a trop d'utilisateurs qui se connectent dessus. Par exemple un serveur central avec 100 utilisateurs.
    On duplique ce serveur, et de cela, on aura deux serveurs avec chacun 50 utilisateurs. Chaque serveur sera plus optimal vis-à-vis ds utilisateurs.

    Pourquoi parlez-vous de backup ?

    Citation Envoyé par rania_nina
    je tiens à préciser que l'application devra ensuite pouvoir fonctionner en mode déconnecté, est ce que ca exige d'avoir une base de données locale??
    Bien sûr que OUI. Hors ligne ou déconnecté veut dire sans avoir accès à internet.
    Mais pourquoi désirez-vous vous déconnecter de l'internet ?

    @+

  20. #20
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2019
    Messages : 35
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Salut rania_nina.
    Bonjour,

    d'abord je vous remercie amplement d'avoir pris le temps de me répondre..

    Pourquoi déterrer un vieux sujet (de 2012) ?
    c'est mon sujet de stage et je suis vraiment bloquée, vu que je m'y connais pas du tout et en cherchant sur les forums je suis tombée sur cette discussiom, néanmois ca ne correspond pas vraiment à mon besoin.


    Il ne s'agit pas d'une base de données mais d'un serveur mysql ? Soyez précise car cela peut porter à confusion.
    --oui un serveur mysql, mais à présent je fais mes tests sur un ordinateur je le considère serveur, je n'ai pas une base de données volumineuse.


    Si ce sont vos contraintes, vous n'avez pas le choix.
    Vous devez mettre en place une réplication de type "maitre-maitre" et non "maitre-esclave" comme cela se fait fréquemment.

    ---j'ai commencé par un test sur deux ordinateurs, j'ai supposé que l'un est serveur et l'autre est utilisateur, du coup j'ai testé la réplication maître-maître avec des lignes de commandes, le résultat est bon, j'ai suivi un tuto et finalement aucune replication n'a eu lieu, quand je check la base de données, rien n'a été répliqué et comme je suis sur mysql la réplication maître-maître n'est pas natif , du coup pour la réplication maître maître je ne sais pas sur quelle documentation me référer, en plus dans mon cas j'aurai plusieurs utilisateurs, est ce c'est possible d'avoir plusieurs maitre lié à un seul maitre, il n'y aura pas de gros soucis de synchronisation?
    --pourriez vous me conseiller un tutoriel à suivre pour la réplication maitre maitre ???


    Une application OFFLINE ne fonctionne qu'en local, c'est-à-dire sans internet.
    Sous WampServer, cela sert justement à faire de la maintenance, sans qu'un utilisateur vienne faire quoi que ce soit sur le serveur MySql.
    ---est ce que vous pouvez m'expliquer davantage s'il vous plait ?

    Or la réplication "maitre-maitre" nécessite d'être en mode "online".
    Autrement dit, la réplication sert quand vous faites des interventions sur votre table dans votre serveur local.
    --exactement, à chaque fois qu'un utilisateur fait une msie à jour (insert, update,delete) ou meme select, celà doit etre répliqué sur la base de donnée serveur et ensuite au niveau des bases de données clientes .


    Pour effectuer une synchronisation, en temps réel, vous devez être en mode "online".
    Vous comprenez que ce n'est plus du temps réel si vous êtes en mode "offline".
    -- donc il faut configurer une synchronisation périodique au niveau du serveur ?


    On ne peut pas répondre à votre question sans savoir pourquoi vous envisagez ce genre de solution. Où si vous préférez vos contraintes !
    non je ne préfère pas ceci, mais comme ca doit fonctionner en mode offline, donc je pense qu'on doit forcement avoir des bases de données locales non ?? si vous avez une suggestion n'hésitez pas je cherche la solution optimale.je ne sais pas ce qui est mieux / optimal


    La réplication sert quand on veut alléger le serveur central parce qu'il y a trop d'utilisateurs qui se connectent dessus. Par exemple un serveur central avec 100 utilisateurs.
    On duplique ce serveur, et de cela, on aura deux serveurs avec chacun 50 utilisateurs. Chaque serveur sera plus optimal vis-à-vis ds utilisateurs.


    Pourquoi parlez-vous de backup ?

    -- je parle du backup, pour ne pas perdre les données en cas d'un problème au niveau du serveur, on switch vers la base de données backup, n'est-il pas possible ?

    Bien sûr que OUI. Hors ligne ou déconnecté veut dire sans avoir accès à internet.
    Mais pourquoi désirez-vous vous déconnecter de l'internet ?

    je n'exige pas, c'est le besoin de l'entreprise que je dois respecter, certes ca rend la tâche plus difficile .

    merci pour vos réponses

    @+

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/11/2011, 15h09
  2. Synchronisation entre deux bases de données
    Par kimTunisia dans le forum Administration
    Réponses: 0
    Dernier message: 30/07/2011, 11h05
  3. Synchronisation de deux base de données (dont un base SQL Server 2000)
    Par Messie dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 27/02/2009, 09h32
  4. synchronisation entre deux bases de données via un webService
    Par débutant_C# dans le forum Services Web
    Réponses: 3
    Dernier message: 09/05/2008, 23h19
  5. [MySQL] Synchronisation de deux base de données
    Par Asmodean dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 17/04/2007, 19h01

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