Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/09/2018, à 12:24

thurin2000

Synchronisation entre deux base de données mysql

Bonjour,

Je voudrais réaliser une synchro entre ma base de données locale et la base de données distante chez hostinger.

J'ai lu plusieurs tutos à cet effet, mais je bute sur la première ligne : le bind-address dans le fichier my.cnf

En local, à peine je mets bind-address = 127.0.0.1 ou que je mette mon adresse ip, et que je redémarre mon serveur je n'ai plus accès à aucune de mes applis web.

Et mon terminal me renvoie l'erreur suivante :

Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

Et depuis j'en suis là!

J'ai besoin de votre aide

Hors ligne

#2 Le 25/09/2018, à 12:36

jlmas

Re : Synchronisation entre deux base de données mysql

Tu commentes la ligne et ça devrait fonctionner

#bind-address		= 127.0.0.1

Par défaut, dans la version de MYSQL que j'utilise, il écoute (donc la bind-adress dans ton fichier de configuration) sur 0.0.0.0, ce qui signifie toutes les interfaces IPv4, c'est à dire en même temps sur

- Le loopback lo dont l'adresse IPv4 est couramment 127.0.0.1
- Les interfaces réseau eth0, eth1 etc... dont les adresses IPv4 sont celles que tu as défini, certainement dans le fichier /etc/network/interfaces

Dernière modification par jlmas (Le 25/09/2018, à 12:38)

Hors ligne

#3 Le 27/09/2018, à 20:06

thurin2000

Re : Synchronisation entre deux base de données mysql

Bonsoir, j'ai commenté la ligne du bind-address. en fait elle n'existait même pas dans mon fichier my.cnf. Je l'ai néanmoins ajouté et je l'ai commenté. Ce qui équivaudrait à écrire d'après tes explications :

bind-address = 0.0.0.0

Ok à partir de là tout se passe sans problème. Normal. Mais dès que j'ajoute ces lignes :

server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
binlog_do_db = exempledb

Et que je redémarre le service mysql

service mysql restart

J'ai de nouveau cette erreur dans mon terminal

Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

Ai-je écrit quelque chose d'anormal ? A ce que je sache, je n'ai fait que activer la conservation des fichiers sur le serveur ou alors mon code comporte un défaut

Merci de m'éclairer

Hors ligne

#4 Le 28/09/2018, à 14:00

mazarini

Re : Synchronisation entre deux base de données mysql

Peut être qu'en lançant les commandes "systemctl status mysql.service" et "journalctl -xe"  tu aurais des info sur l'erreur.


S'il existait une école de la politique, les locaux devraient être édifiés rue de la Santé. Les élèves pourraient s'habituer. (Pierre Dac)

Hors ligne

#5 Le 28/09/2018, à 16:56

thurin2000

Re : Synchronisation entre deux base de données mysql

Bonjour Mazarini,

Voilà ce que j'obtiens lorsque je lance cette commande :

systemctl status mysql.service
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en
   Active: active (running) since ven. 2018-09-28 15:39:07 WAT; 10min ago
  Process: 1078 ExecStartPost=/usr/share/mysql/mysql-systemd-start post (code=ex
  Process: 1057 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exit
 Main PID: 1077 (mysqld)
   CGroup: /system.slice/mysql.service
           └─1077 /usr/sbin/mysqld

sept. 28 15:38:35 shahanel systemd[1]: Starting MySQL Community Server...
sept. 28 15:39:07 shahanel systemd[1]: Started MySQL Community Server.
lines 1-11/11 (END)

Et voilà ce que j'obtiens pour la seconde commande :

journalctl -xe
sept. 28 15:52:00 shahanel gnome-session[1903]: INFO: 2018-09-28 15:52:00,584: c
sept. 28 15:52:00 shahanel gnome-session[1903]: INFO: 2018-09-28 15:52:00,585: b
sept. 28 15:52:00 shahanel gnome-session[1903]: INFO: 2018-09-28 15:52:00,585: b
sept. 28 15:52:00 shahanel gnome-session[1903]: INFO: 2018-09-28 15:52:00,858: u
sept. 28 15:52:51 shahanel systemd[1]: Starting Cleanup of Temporary Directories
-- Subject: L'unité (unit) systemd-tmpfiles-clean.service a commencé à démarrer
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- L'unité (unit) systemd-tmpfiles-clean.service a commencé à démarrer.
sept. 28 15:52:51 shahanel systemd-tmpfiles[4667]: [/usr/lib/tmpfiles.d/var.conf
sept. 28 15:52:51 shahanel systemd[1]: Started Cleanup of Temporary Directories.
-- Subject: L'unité (unit) systemd-tmpfiles-clean.service a terminé son démarrag
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- L'unité (unit) systemd-tmpfiles-clean.service a terminé son démarrage, avec l
sept. 28 15:53:00 shahanel gnome-session[1903]: INFO: 2018-09-28 15:53:00,651: c
sept. 28 15:53:00 shahanel gnome-session[1903]: INFO: 2018-09-28 15:53:00,652: d
sept. 28 15:53:00 shahanel gnome-session[1903]: INFO: 2018-09-28 15:53:00,653: c
sept. 28 15:53:00 shahanel gnome-session[1903]: INFO: 2018-09-28 15:53:00,653: b
sept. 28 15:53:00 shahanel gnome-session[1903]: INFO: 2018-09-28 15:53:00,654: b
sept. 28 15:53:00 shahanel gnome-session[1903]: INFO: 2018-09-28 15:53:00,944: u

Bref je suis toujours au même point.

Hors ligne

#6 Le 28/09/2018, à 17:35

bruno

Re : Synchronisation entre deux base de données mysql

Bonjour,

Ton retour en #5 montre que mysql fonctionne et le retour de journalctl -xe n'a d’intérêt que immédiatement après une erreur.

Qu'est-ce que tu veux faire exactement et pourquoi ? De la réplication master/slave ou multi-master ? Est-ce que tu as bien les mêmes versions du serveur mysql sur le deux machines ? Est-ce que tu as la main sur la configuration du serveur MySQL sur les deux machines ? Est-ce que tu es bien conscient que c'est une configuration complexe et délicate ?

Hors ligne

#7 Le 29/09/2018, à 17:38

thurin2000

Re : Synchronisation entre deux base de données mysql

Bonjour Bruno et erci pour ta réponse.

Pour ta première question : Qu'est-ce que je veux faire exactement et pourquoi ?
J'ai une application qui tourne dans un réseau local. Maintenant pour des besoins de sauvegarde et de partage, je veux mettre cette application en ligne(elle y est déjà!). Maintenant, il faudrait que chaque fois que quelqu'un consulte l'appli en ligne, qu'il ait presque exactement ou exactement les mêmes données que ceux qui bossent en local

Deuxième question : De la réplication master/slave ou multi-master ?
uniquement du master/slave. Le master tourne en local et les données sont mises à jour en ligne.

Est-ce que j'ai les deux versions de mysql sur les deux machines ?
Je n'ai pas prêté attention à la version mysql de mon hébergeur. Si ce n'est pas le cas, je ferais en sorte que mon master ait la même version de mysql que mon hébergeur

Est-ce que j'ai la main sur la configuration du serveur MySQL des deux machines ?
Oui, mon hébergeur a qui j'ai écrit m'a dit que la réplication se fait, je n'ai pas encore essayé c'est pour ça que je suis là

Est-ce que je suis bien conscient que c'est une configuration complxe et délicate ?
Oui. C'est pourquoi je requiers l'avis des experts dans ce forum

Voilà, j'espère avoir répondu à toutes tes questions Bruno et merci encore

Dernière modification par thurin2000 (Le 29/09/2018, à 17:38)

Hors ligne

#8 Le 30/09/2018, à 08:44

bruno

Re : Synchronisation entre deux base de données mysql

Ok même si je ne comprends pas bien le premier point.
Je précise qu'il n'est pas indispensable d'avoir les mes versions du serveur MySQL sur les deux machines mais que cela facilite les choses.

Pour revenir a tes problèmes il faut d'abord nous indiquer la version d'Ubuntu utilisée et la version de MySQL (ou de MariaDB).

Sur Debian/Ubuntu le fichier /etc/mysql/my.cnf est un lien symbolique qui pointe (directement ou indirectement vai /etc/alternatives) vers un autre fichier. Donc en principe on ne le modifie pas directement…

Quand on cherche à configurer un service que l'on ne connaît pas, on commence par examiner les fichiers de configuration présents, leur structure, leur arborescence et leur rôles respectifs. En l’occurrence tout ce qui sous /etc/mysql.

Si un service refuse de démarrer après modification de la configuration, c'est que l'on a commis une erreur. On examine donc les logs au moment où l'on a tenté de relancer le service : avec journalctl immédiatement après le plantage ou avec les fichiers de log. Dans ce cas sous /var/log/mysql

Normalement il aurait suffit de commenter/dé-commenter les lignes idoines dans le bon fichier.
Extraits de la configuration par défaut sur Debian/Ubuntu

mysqld.cnf a écrit :

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address        = 127.0.0.1

mysqld.cnf a écrit :

# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
#server-id        = 1
#log_bin            = /var/log/mysql/mysql-bin.log
expire_logs_days    = 10
max_binlog_size   = 100M
#binlog_do_db        = include_database_name
#binlog_ignore_db    = include_database_name

-------------------------------------------------------------------------------------

thurin2000 a écrit :

Est-ce que je suis bien conscient que c'est une configuration complexe et délicate ?
Oui. C'est pourquoi je requiers l'avis des experts dans ce forum

Je reformule de manière plus abrupte (ne le prends pas mal wink).
C'est une configuration assez complexe qui exige de bonnes compétences d'administrateur système et MySQL. Ce n'est pas en faisant des copier/coller depuis des tutos plus ou moins adaptés et sans comprendre les directives de configuration que tu vas y arriver.

Hors ligne

#9 Le 01/10/2018, à 07:55

thurin2000

Re : Synchronisation entre deux base de données mysql

Bonjour bruno, et merci encore pour ton coup de main

bruno a écrit :

Je précise qu'il n'est pas indispensable d'avoir les mes versions du serveur MySQL sur les deux machines mais que cela facilite les choses.

Ok!

bruno a écrit :

Pour revenir a tes problèmes il faut d'abord nous indiquer la version d'Ubuntu utilisée et la version de MySQL (ou de MariaDB).

Pour Ubuntu, c'est la version 16.04 et pour MySQL c'est la version 5.7.18

bruno a écrit :

Je reformule de manière plus abrupte (ne le prends pas mal wink).
C'est une configuration assez complexe qui exige de bonnes compétences d'administrateur système et MySQL. Ce n'est pas en faisant des copier/coller depuis des tutos plus ou moins adaptés et sans comprendre les directives de configuration que tu vas y arriver.

Je ne le prends pas mal, smile. Et j'ai surtout envie de comprendre ce que je fais. Ca peut être complexe, mais je me dois de comprendre. Je ne suis pas un fana du copier/coller. Ne t'inquiète pas pour pour ça.;)

Pour le reste j'ai compris tout ce que tu as dit. Mais lorsque j'éditais le fichier /etc/mysql/my.cnf, je n'ai ajouté aucune supplémentaire en dehors de celles précedemment ajoutées et qui généraient les erreurs que j'ai postées ici.

Hors ligne

#10 Le 02/10/2018, à 13:30

jlmas

Re : Synchronisation entre deux base de données mysql

Si tu as accès via ssh et sudo aux deux serveurs, ce qui est indispensable pour mettre en place de la réplication, donne nous le retour des commandes suivantes :

* Sur le serveur maître

sudo mysql --defaults-file=/etc/mysql/debian.cnf -e "SHOW MASTER STATUS;"

* Sur le serveur esclave

sudo mysql --defaults-file=/etc/mysql/debian.cnf -e "SHOW SLAVE STATUS\G;"

Note: Le fichier /etc/mysql/debian.cnf est l'endroit ou est stocké le compte de maintenance (identifiant et mot de passe) de mysql. Regarde s'il porte le même nom sous Ubuntu. Je n'ai que des serveurs Debian sous la main.

Dernière modification par jlmas (Le 02/10/2018, à 13:30)

Hors ligne