août
01
Posted on 01-08-2010
Filed Under (MySQL) by admin

Dans la dernière version de phpMyAdmin, on peut gérer la réplication de serveurs MySQL mais aussi la synchronisation.

Nous allons nous concentrez sur la synchronisation avec comme exemple, un serveur de développement devant synchroniser l’une de ces bases avec une base de production.

Le schéma ci-dessous montre le principe de synchronisation :

Les deux serveurs MySQL ne dialoguent pas entre eux lors de la synchronisation, sinon on parlerait de réplication.
Une première requête est faite sur la base de données source, pour récupérer la structure et les données de la base, avant d’être injectée dans le serveur de production.

Serveur de développement

Aucune action n’est nécessaire sur le serveur de développement pour que la synchronisation fonctionne.
Voyons le schéma de la base de données que nous allons synchroniser.

$ mysql -u root -p
mysql> use worldofunix;
mysql> show tables;
+------------------------+
| Tables_in_worldofunix  |
+------------------------+
| wp_commentmeta         |
| wp_comments            |
| wp_links               |
| wp_options             |
| wp_postmeta            |
| wp_posts               |
| wp_redirection_groups  |
| wp_redirection_items   |
| wp_redirection_logs    |
| wp_redirection_modules |
| wp_term_relationships  |
| wp_term_taxonomy       |
| wp_terms               |
| wp_usermeta            |
| wp_users               |
+------------------------+
15 rows in set (0.00 sec)

Une base de données issue d’un wordpress.

Serveur de production

Contrairement au serveur de développement, des modifications sont nécessaires sur le serveur de production.

MySQL en écoute
Première chose à faire, vérifier que le serveur MySQL écoute sur la bonne adresse IP.

$ netstat -ntlp | grep :3306
tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN      2132/mysqld

On constate qu’il écoute sur l’interface de loopback. Le serveur de développement ne pourra pas contacter le serveur MySQL de production pour se synchroniser.

Pour y remédier, nous devons ajouter la directive bind dans le fichier /etc/my.cnf.

$ vi /etc/my.cnf
[mysqld]
bind=192.168.33.32
[...]

Redémarrons le serveur MySQL et vérifions à nouveau.

$ /etc/init.d/mysqld restart
$ netstat -ntlp | grep :3306
tcp        0      0 192.168.33.32:3306          0.0.0.0:*                   LISTEN      2252/mysqld

Le serveur MySQL écoute maintenant sur la bonne adresse IP.

Autorisation de connexions
N’importe quelle machine du réseau peut joindre le serveur MySQL de production, encore faut-il avoir l’autorisation.
Nous allons autoriser le serveur de développement à se connecter sur le serveur de production mais seulement sur la base de données worldofunix.

$ mysql -u root -p
mysql> GRANT ALL ON worldofunix.* TO 'synchro'@'192.168.33.13' identified by 'password';
mysql> flush privileges;

Synchronisation

Avant de lancer une synchronisation, il est important de s’assurer que le serveur de développement puisse se connecter au serveur de production avec un client MySQL.

$ mysql -h 192.168.33.32 -u synchro -p
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| worldofunix        |
+--------------------+
3 rows in set (0.00 sec)

Pour ma part, je valide la connexion entre les deux serveurs et l’accès à la base worldofunix pour l’utilisateur synchro. Je peux donc passer à la synchronisation depuis phpMyAdmin.

Connexion :
Le nom d’utilisateur et le mot de passe pour accéder au serveur cible, sont ceux présents dans la partie « Autorisation de connexions ».

Synchronisation :
Si vous souhaitez ne synchroniser que la structure ou les données de la base, c’est ici que ça se passe.

Ensuite, nous pouvons lancer la synchronisation.

Vérification :
La synchronisation c’est bien déroulée. En bas, les requêtes qui ont été exécutées sur le serveur cible.

Mot de fin
J’espère que cet article a pu aider dans la mise en place d’une synchronisation par phpMyAdmin.

Si vous avez des remarques ou juste pour dire un petit « merci », laissez un commentaire.

(4) Comments    Read More   

Commentaires

GreenB le 5 novembre 2010 à 19 h 02 min

MERCI !!!


salah le 18 août 2011 à 14 h 18 min

Bjr, j’ai une base de 158 tables avec cet outil il traite que 126 tables en ignorant le reste ??? y as t ‘il un paramétrage pour la durée d’exécution ou la taille du script ?

merci


PLKT le 7 septembre 2011 à 17 h 38 min

Merci ! C’est très clair.


salah le 21 octobre 2011 à 16 h 37 min

Bonjour, voici le message que j’ai reçu une fois j’ai voulu synchroniser mes bases.
Fatal error: Maximum execution time of 300 seconds exceeded in C:\wamp\apps\Phpmyadmin4\libraries\dbi\mysql.dbi.lib.php on line 175

Donc j’ai regardé ds le fichier cité et à la ligne 175 !!! j’ai pas trouver la variables qui me permettra d’augmenter la durée d’exécution !!!

Avez vous eu ce problème ?


Poster un commentaire
Votre pseudo:
Votre e-mail:
Votre site:
Votre commentaire: