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

  1. #1
    Futur Membre du 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
    Points : 7
    Points
    7
    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
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 34
    Points : 33
    Points
    33
    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
    Futur Membre du 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
    Points : 7
    Points
    7
    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
    Nouveau membre du Club
    Inscrit en
    Mars 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 37
    Points : 36
    Points
    36
    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
    Points : 3 295
    Points
    3 295
    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...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  6. #6
    Futur Membre du Club
    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
    Points : 9
    Points
    9
    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.

  7. #7
    Membre à l'essai
    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
    Points : 13
    Points
    13
    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

  8. #8
    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
    Points : 3 295
    Points
    3 295
    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...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  9. #9
    Membre à l'essai
    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
    Points : 13
    Points
    13
    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

  10. #10
    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
    Points : 3 295
    Points
    3 295
    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
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  11. #11
    Membre à l'essai
    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
    Points : 13
    Points
    13
    Par défaut
    Merci Eric,
    il me reste à rechercher la documentation traitant du sujet. J'ai déjà tout de même une idée de ce qui m'attend.
    une fois de plus merci

  12. #12
    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
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    généralement, il faut voir quel matériel tu as à ta disposition :
    • puissance des serveurs ou VM (nombre de coeurs, mémoire, hdd ou ssd)
    • bande passante entre les serveurs maîtres/esclaves (si tu es en interconnexion directe tu peux être facilement entre 1 et 10Go/s en cuivre ou fibre alors qu'en infrastructure d'hébergement ou de cloud, tu seras généralement bridé à 100 ou 200Mo/s)
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  13. #13
    Nouveau membre du Club
    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
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    je trouve votre discussion trés interessante, mon problème est dans le même sens, et je ne sais toujours pas l'architecture optimale pour mon cas de figure. je dois réaliser la partie collaborative pour une application desktop.

    Pour celà, une base de donnée centralisée sera mise en place. Chaque poste client devra pouvoir s’y connecter afin de synchroniser les données. L’application devra ensuite pouvoir fonctionner « offline ».
    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 .
    tout ca est nouveau pour moi, pourriez vous me donner des idées pour me lancer.. Est ce que c'est bien d'avoir une base de données locale au niveau de chaque poste client, 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 ?
    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??

    merci pour votre réponse

  14. #14
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    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 381
    Points : 19 064
    Points
    19 064
    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 ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  15. #15
    Nouveau membre du Club
    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
    Points : 33
    Points
    33
    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

    @+

  16. #16
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    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 381
    Points : 19 064
    Points
    19 064
    Par défaut
    Salut rania_nina.

    Citation Envoyé par rania_nina
    c'est mon sujet de stage ...
    Je parlais de ce fil de discussion ouvert par chadha, en 2012, il y a sept ans.

    Citation Envoyé par rania_nina
    ... 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 discussion, néanmoins ça ne correspond pas vraiment à mon besoin.
    On va faire simple, vous désirez créer une réplication maître-maître entre un serveur MySql distant et un serveur MySql local.

    Êtes-vous sous MySql ou sous MariaDB ?
    Quelle est la version MySql (ou MariaDB) que vous utilisez ?
    Est-ce que vous êtes sous windows ou sous linux ? Si linux, quelle distribution ?

    En cherchant un peu sur le net, vous trouvez quelques sujets abordant cette question :

    https://www.supinfo.com/articles/sin...ees-avec-mysql
    https://lucasvidelaine.wordpress.com...-maitre-mysql/
    https://mathisthuault.wordpress.com/...-maitre-mysql/
    http://www.responsive-mind.fr/replic...master-master/

    Sinon vous avez les didacticiels de Developpez :

    https://jgrondin.developpez.com/arti...ication-MySQL/

    En ce qui me concerne, j'ai fait une fois le test de la réplication maître-esclave mais pas maître-maître.
    A vrai dire, je n'en ai pas besoin.

    Citation Envoyé par rania_nina
    est ce que vous pouvez m'expliquer davantage s'il vous plait ?
    Il arrive que la base de données dans votre serveur doive subir de la maintenance.
    Pour ce faire, on bloque tous les accès à la base en se mettant en mode offline.
    Et comme vous êtes seul, en tant que compte root, à faire de la maintenance, vous ne serez pas bloqués par un quelconque utilisateur.

    La maintenance, qu'est-ce que c'est ?
    Il s'agit de retailler les tablesspaces, de faire de la réorganisation, de faire une sauvegarde, ...
    Enfin tout ce qui est nécessaire pour optimiser votre base de données et en cas de plantage, de pouvoir revenir à la version de la veille.

    Citation Envoyé par rania_nina
    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 .
    La réplication va se faire entre le serveur distant et le serveur local.
    Pour les autres serveurs clients (et locaux), je ne sais pas comment cela va se passer.

    Citation Envoyé par rania_nina
    donc il faut configurer une synchronisation périodique au niveau du serveur ?
    Il vous faut être en mode "online".
    Je ne me souviens pas, mais je crois que l'on peut déclencher une synchronisation entre le serveur local et distant.

    Citation Envoyé par rania_nina
    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
    Commencez par un serveur distant et un serveur local en réplication maitre-maitre.
    Vous faites une intervention sur l'un des serveurs (le local), par exemple une suppression. Cela doit être répliqué sur l'autre serveur (le distant).
    Et de même, sur l'autre serveur (le distant), vous faites une insertion, et cela doit se répercuter sur le serveur local.

    Vous devrez aussi automatiser la remise de votre serveur local en mode online afin d'effectuer une synchronisation.
    Les fichiers qui sont au coeur de ce mécanisme sont les binary log.
    Il faut les faire tourner, disons une fois par jour.
    Tourner veut dire que chaque fichier est en rotation et il s'en crée un à chaque fois que vous redémarrer mysql.
    C'est automatique et il n'y a rien à faire sinon redémarrer MySql.

    Citation Envoyé par rania_nina
    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 ?
    Sur le serveur local, il n'est pas nécessaire de faire un backup puisque par la réplication, vous pouvez récupérer vos données depuis le serveur distant.
    Il est nécessaire de faire un backup sur le serveur distant.

    Il faudra que vous réfléchissez à la mise en place de l'activité autour de vos serveurs locaux.
    Par exemple, apprendre à gérer les points de reprise en cas de plantage de votre serveur.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  17. #17
    Nouveau membre du Club
    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
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Salut Artemus24.


    On va faire simple, vous désirez créer une réplication maître-maître entre un serveur MySql distant et un serveur MySql local.
    pas vraiment, j'ai un seul serveur mysql auquel plusieurs postes doivent pouvoir s'y connecter.

    Êtes-vous sous MySql ou sous MariaDB ?
    Quelle est la version MySql (ou MariaDB) que vous utilisez ?
    Est-ce que vous êtes sous windows ou sous linux ? Si linux, quelle distribution ?
    je suis sous MySQL, j'utilise MySQL Workbench 8.0.16 et je suis sous Windows.

    Merci beaucoup je vais les consulter

    En ce qui me concerne, j'ai fait une fois le test de la réplication maître-esclave mais pas maître-maître.
    A vrai dire, je n'en ai pas besoin.
    j'ai testé la réplication maitre-esclave avec des lignes de commandes comme c'est décrit sur le site officiel de MySQL mais je n'ai pas réussi la réplication, même si j'ai fait start stave, aucune réplication n'a eu lieu


    Il
    arrive que la base de données dans votre serveur doive subir de la maintenance.
    Pour ce faire, on bloque tous les accès à la base en se mettant en mode offline.
    Et comme vous êtes seul, en tant que compte root, à faire de la maintenance, vous ne serez pas bloqués par un quelconque utilisateur.
    C'est super, pouvez-vous m'expliquer plus comment peut-on bloquer les accès, y a t-il quelque chose qu'il faut configurer??

    La maintenance, qu'est-ce que c'est ?
    Il s'agit de retailler les tablesspaces, de faire de la réorganisation, de faire une sauvegarde, ...
    Enfin tout ce qui est nécessaire pour optimiser votre base de données et en cas de plantage, de pouvoir revenir à la version de la veille.
    oui vous avez raison, c'est pourquoi j'ai pensé à une base de données de backup, qui sera liée à la base de données principale.
    La réplication va se faire entre le serveur distant et le serveur local.
    Pour les autres serveurs clients (et locaux), je ne sais pas comment cela va se passer.
    j'ai un seul serveur MySQL auquel plusieurs ordinateurs doivent être connectés, ces ordinateurs (utilisateurs) une fois ils font une modification ca doit être répliqué sur le serveur. et vice versa du serveur vers tous les ordinateurs.


    Commencez par un serveur distant et un serveur local en réplication maitre-maitre.
    Vous faites une intervention sur l'un des serveurs (le local), par exemple une suppression. Cela doit être répliqué sur l'autre serveur (le distant).
    Et de même, sur l'autre serveur (le distant), vous faites une insertion, et cela doit se répercuter sur le serveur local.
    j'ai essayé ca aussi, mais vainement, je pense que j'ai suivi un mauvais tutoriel ou j'ai mal configuré quelque chose, j'ai suivi ce tuto https://www.digitalocean.com/communi...er-replication la replication n'a pas marché, je comprens pas pourquoi !!

    Vous devrez aussi automatiser la remise de votre serveur local en mode online afin d'effectuer une synchronisation.
    Les fichiers qui sont au coeur de ce mécanisme sont les binary log.
    Il faut les faire tourner, disons une fois par jour.
    Tourner veut dire que chaque fichier est en rotation et il s'en crée un à chaque fois que vous redémarrer mysql.
    C'est automatique et il n'y a rien à faire sinon redémarrer MySql.
    C'est une bonne idée, sauf qu'on a besoin d'une synchronisation en mode déconnecté c'est ca la contrainte dont je ne peux pas me passer.

    Sur le serveur local, il n'est pas nécessaire de faire un backup puisque par la réplication, vous pouvez récupérer vos données depuis le serveur distant.
    Il est nécessaire de faire un backup sur le serveur distant.
    je n'ai pas un serveur distant, j'ai un seul serveur MySQL
    Il faudra que vous réfléchissez à la mise en place de l'activité autour de vos serveurs locaux.
    Par exemple, apprendre à gérer les points de reprise en cas de plantage de votre serveur.
    quand vous dites, les serveurs locaux vous voulez dire quoi exactement?
    @+

  18. #18
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    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 381
    Points : 19 064
    Points
    19 064
    Par défaut
    Salut rania_nina.

    Citation Envoyé par rania_nina
    C'est super, pouvez-vous m'expliquer plus comment peut-on bloquer les accès, y a t-il quelque chose qu'il faut configurer ?
    Il y a plusieurs solutions pour bloquer les utilisateurs.
    Par exemple à partir d'Apache, il suffit dans le virtualHost de remplacer "Require all granted" par "Require Local".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    # ========================== #
    #     Localhost sans SSL     #
    # ========================== #
    
    <VirtualHost 127.0.0.1:80  [::1]:80>
    	ServerName localhost
    	ServerAdmin artemus@jcz.fr
    	DocumentRoot "${Repertoire}/www/"
    #
    	Redirect permanent / https://localhost/
    #
    	ErrorLog  "${repertoire}/www/Logs/error.log"
    	CustomLog "${repertoire}/www/Logs/custom.log" common
    #
    	<Directory />
    		Options -Indexes +FollowSymLinks +MultiViews
    		AllowOverride none
    		<RequireAny>
    			Require local
    		</RequireAny>
    	</Directory>
    </VirtualHost>
    Ici, c'est mon "localhost", qui est uniquement accessible en local.
    Du coup, personne ne peut y accéder depuis internet.
    L'exemple est mauvais car la déclaration du virtualHost est faite justement pour un accès en local, mais le principe reste le même.

    On peut aussi fermer le port 3306. C'est juste une règle que l'on active ou que l'on désactive dans le pare-feu de windows.
    Au niveau de la box routeur, on peut bloquer la redirection vers votre serveur mysql. C'est cette solution que j'utilise.
    Au niveau de l'ordinateur, il suffit de désactivier le protocole IPv4 et/ou IPv6
    Pour MySql, il faut le faire en deux temps. D'abord avertir à l'avance, tous les utilisateurs qu'il y aura une maintenance
    Puis dans un script, rendre le compte par lequel les utilisateurs se connectent, inaccessible. Comment ?
    En supprimant tous les privilèges de ce compte.

    Citation Envoyé par rania_nina
    J'ai essayé ca aussi, mais vainement, je pense que j'ai suivi un mauvais tutoriel ou j'ai mal configuré quelque chose, j'ai suivi ce tuto https://www.digitalocean.com/communi...er-replication la replication n'a pas marché, je comprens pas pourquoi !!
    La solution proposée est "Status: Deprecated".

    Citation Envoyé par rania_nina
    C'est une bonne idée, sauf qu'on a besoin d'une synchronisation en mode déconnecté c'est ca la contrainte dont je ne peux pas me passer.
    Précedemment, vous disiez "offline" et maintenant vous parlez de "déconnecté".
    Si vous êtes déconnectés, les utilisateurs n'ont plus accès au serveur MySql, tandis que le serveur est encore accessible par internet.
    Dans ce cas là, on peut faire une synchronisation.

    Citation Envoyé par rania_nina
    je n'ai pas un serveur distant, j'ai un seul serveur MySQL
    Je ne comprends pas trop. Vous disiez auparavant que vous aviez un serveur mysql local et un serveur musql central.
    D'où l'intérêt de la réplication Maître-Maître. Si vous avez un seul serveur, la réplication ne vous sert à rien.

    Citation Envoyé par rania_nina
    quand vous dites, les serveurs locaux vous voulez dire quoi exactement?
    Je parle de votre poste client qui possède son propre serveur mysql en local et où un seul utilisateur a accès.
    D'où le fait de vouloir synchroniser ce serveur local avec votre serveur central (ou distant).

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  19. #19
    Nouveau membre du Club
    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
    Points : 33
    Points
    33
    Par défaut
    Salut Artemus.



    La solution proposée est "Status: Deprecated".
    je pense qu'elle n'est pas complète, je suis à la recherche d'une autre solution, je vais essayer avec phpMyAdmin

    Précedemment, vous disiez "offline" et maintenant vous parlez de "déconnecté".
    Si vous êtes déconnectés, les utilisateurs n'ont plus accès au serveur MySql, tandis que le serveur est encore accessible par internet.
    Dans ce cas là, on peut faire une synchronisation.
    à mon sens "offline" veut dire déconnecté qui veut dire n'est pas connecté à internet, je ne sais pas si j'ai raison ou pas ! pourquoi vous dites que les utilisateurs en mode déconnecté n'auront pas accès au serveur ???

    Le but c'est de faire la synchronisation entre plusieurs ordinateurs qui utilisent l'application et le serveur, ces ordinateurs je pense qu'il est obligatoire qu'ils aillent une base de données locale car sinon ce ne sera pas possible d'utiliser l'application en mode déconnecté. n'est ce pas ?


    Je ne comprends pas trop. Vous disiez auparavant que vous aviez un serveur mysql local et un serveur musql central.
    D'où l'intérêt de la réplication Maître-Maître. Si vous avez un seul serveur, la réplication ne vous sert à rien.
    j'ai plusieurs ordinateurs liés à un seul serveur MySQL, chaque ordinateur doit avoir une base de données pour qu'on puisse faire la synchronisation avec le serveur.


    Je parle de votre poste client qui possède son propre serveur mysql en local et où un seul utilisateur a accès.
    D'où le fait de vouloir synchroniser ce serveur local avec votre serveur central (ou distant).
    oui c'est ca, sauf que j'ai plusieurs postes client, du coup je ne sais pas si c'est faisable de configurer Master-Master au niveau de chaque poste.

    Merci beaucoup pour vos réponses

    @+

  20. #20
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    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 381
    Points : 19 064
    Points
    19 064
    Par défaut
    Salut rania_nina.

    Pour commencer, faites le test entre des ordinateurs dont l'un sera slave (votre poste local) et l'autre master (votre serveur distant).
    --> https://www.it-connect.fr/replicatio...ysql%EF%BB%BF/

    Pour basculer en mode master-master, il suffit de faire deux déclaratives en mode master-slave.
    Autrement dit, vos ordinateur sont en mode master et slave en même temps.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

+ 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