Pages : 1
#1 Le 24/09/2018, à 11: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, à 11: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, à 11:38)
Hors ligne
#3 Le 27/09/2018, à 19: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, à 13: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, à 15: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, à 16: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 ?
#7 Le 29/09/2018, à 16: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, à 16:38)
Hors ligne
#8 Le 30/09/2018, à 07: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
# 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
# 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
-------------------------------------------------------------------------------------
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 ).
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.
#9 Le 01/10/2018, à 06:55
- thurin2000
Re : Synchronisation entre deux base de données mysql
Bonjour bruno, et merci encore pour ton coup de main
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!
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
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, . 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, à 12: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, à 12:30)
Hors ligne
Pages : 1